Software complexity has been long recognized as a key determinant of quality in large scale software development. However, complexity is multi-faceted and understanding how it relates to the number of defects in a software system has its challenges. Empirical studies on software complexity are mostly correlational in nature. In this paper, we examine two different aspects of complexity from a causal perspective and examine their relation to defects using a causal discovery based approach. The discovered causal model is validated using a large-scale development. Validation results, along with software engineering domain knowledge yield notable insights that are relevant for the design, development, and maintenance of robust and resilient software systems. To the best of our knowledge, our approach is among the pioneering studies that apply causal discovery techniques in understanding how code level complexity influences defect occurrence in real-world software development.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

The Curious Case of Complexities: Discovering Causal Influences on Software Defects

  • Reshmi Maulik,
  • Subhajit Datta

摘要

Software complexity has been long recognized as a key determinant of quality in large scale software development. However, complexity is multi-faceted and understanding how it relates to the number of defects in a software system has its challenges. Empirical studies on software complexity are mostly correlational in nature. In this paper, we examine two different aspects of complexity from a causal perspective and examine their relation to defects using a causal discovery based approach. The discovered causal model is validated using a large-scale development. Validation results, along with software engineering domain knowledge yield notable insights that are relevant for the design, development, and maintenance of robust and resilient software systems. To the best of our knowledge, our approach is among the pioneering studies that apply causal discovery techniques in understanding how code level complexity influences defect occurrence in real-world software development.