Causal inference is a study of causal relationships between events and the statistical study of inferring these relationships through interventions and other statistical techniques. Causal reasoning is any line of work toward determining causal relationships, including causal inference. This paper explores the relationship between causal reasoning and various fields of software engineering. This paper aims to uncover which software engineering fields are currently benefiting from the study of causal inference and causal reasoning, as well as which aspects of various problems are best addressed using this methodology. With this information, this paper also aims to find future subjects and fields that would benefit from this form of reasoning and to provide that information to future researchers. This paper follows a systematic literature review, including; the formulation of a search query, inclusion and exclusion criteria of the search results, clarifying questions answered by the found literature, and synthesizing the results from the literature review. Through close examination of the 45 found papers relevant to the research questions, it was revealed that the majority of causal reasoning as related to software engineering is related to testing through root cause localization. Furthermore, most causal reasoning is done informally through an exploratory process of forming a Causality Graph as opposed to strict statistical analysis or introduction of interventions. Finally, causal reasoning is also used as a justification for many tools intended to make the software more human-readable by providing additional causal information to logging processes or modeling languages.
翻译:因果推断是对事件间因果关系的研究,以及通过干预和其他统计技术推断这些关系的统计研究。因果推理是指确定因果关系的任何工作方向,包括因果推断。本文探讨了因果推理与软件工程各领域之间的关系,旨在揭示当前哪些软件工程领域受益于因果推断与因果推理的研究,以及各类问题中哪些方面最适合采用该方法论。基于这些信息,本文还旨在寻找未来可能受益于这种推理形式的研究主题与领域,并为后续研究者提供参考。本文遵循系统性文献综述方法,包括:制定搜索查询、确定搜索结果的纳入与排除标准、阐明文献所回答的研究问题、以及综合文献综述结果。通过对45篇与研究问题相关论文的仔细审查,发现与软件工程相关的因果推理主要涉及通过根因定位进行测试。此外,大多数因果推理是通过构建因果图的探索性过程非正式完成的,而非严格的统计分析或引入干预。最后,因果推理也被用作许多工具的合理性依据,这些工具通过向日志记录过程或建模语言提供额外的因果信息,旨在使软件更具人类可读性。