Software misconfiguration has consistently been a major reason for software failures. Over the past twenty decades, much work has been done to detect and diagnose software misconfigurations. However, there is still a gap between real-world misconfigurations and the literature. It is desirable to investigate whether existing taxonomy and tools are applicable for real-world misconfigurations in modern software. In this paper, we conduct an empirical study on 823 real-world misconfiguration issues, based on which we propose a novel classification of the root causes of software misconfigurations, i.e., constraint violation, resource unavailability, component-dependency error, and misunderstanding of configuration effects. Then, we systematically review the literature on misconfiguration troubleshooting, and study the trends of research and the practicality of the tools and datasets in this field. We find that the research targets have changed from fundamental software to advanced applications (e.g., cloud service). In the meanwhile, the research on non-crash misconfigurations such as performance degradation and security risks also has a significant growth. Despite the progress, a majority of studies lack reproducibility due to the unavailable tools and evaluation datasets. In total, only six tools and two datasets are publicly available. However, the adaptability of these tools limit their practical use on real-world misconfigurations. We also summarize the important challenges and several suggestions to facilitate the research on software misconfiguration.
翻译:软件配置错误一直是导致软件故障的主要原因。过去二十年来,已有大量工作致力于检测和诊断软件配置错误。然而,现实世界中的配置错误与现有研究文献之间仍存在差距。有必要探究现有分类体系与工具是否适用于现代软件中的实际配置错误。本文基于对823个实际配置错误问题的实证研究,提出了一种新颖的软件配置错误根源分类体系,即约束违反、资源不可用、组件依赖错误以及配置效果误解。随后,我们系统性地回顾了关于配置错误排查的文献,研究了该领域的研究趋势及工具与数据集的实用性。研究发现,研究目标已从基础软件转向高级应用(如云服务)。与此同时,针对非崩溃型配置错误(如性能退化与安全风险)的研究也显著增长。尽管取得进展,但由于工具和评估数据集的不可获取性,大多数研究缺乏可复现性。总计仅有六款工具和两个数据集公开可用。然而,这些工具的适应性限制了其在真实配置错误场景中的实际应用。我们还总结了该领域的重要挑战,并提出了若干促进软件配置错误研究的建议。