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篇文献进行仔细检查,发现大多数与软件工程相关的因果推理都是通过根本原因定位进行测试。此外,大多数因果推理是通过探索性的过程形成因果图进行非正式的推理,而不是严格的统计分析或引入干预措施。最后,因果推理还用作许多旨在通过为日志处理或建模语言提供额外因果信息来使软件更易读的工具的理由。