, 'The relationship between evolutionary coupling and defects in large industrial software', Journal of Software: Evolution and Process, Vol. 29 (4): e1842, April 2017. https://doi.org/10.1002/smr.1842 This is the Published Version. © 2017 The Author(s). This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence ( http://creativecommons.org/licenses/by/4.0/ ), which permits unrestricted re-use, distribution, and reproduction in any medium, provided the original work is properly cited.  The relationship between evolutionary coupling and defects in large industrial software  Evolutionary coupling (EC) is defined as the implicit relationship between 2 or more software artifacts that are frequently changed together. Changing software is widely reported to be defect-prone. In this study, we investigate the effect of EC on the defect proneness of large industrial software systems and explain why the effects vary. We analysed 2 large industrial systems: a legacy financial system and a modern telecommunications system. We collected historical data for 7 years from 5 different software repositories containing 176 thousand files. We applied correlation and regression analysis to explore the relationship between EC and software defects, and we analysed defect types, size, and process metrics to explain different effects of EC on defects through correlation. Our results indicate that there is generally a positive correlation between EC and defects, but the correlation strength varies. Evolutionary coupling is less likely to have a relationship to software defects for parts of the software with fewer files and where fewer developers contributed. Evolutionary coupling measures showed higher correlation with some types of defects (based on root causes) such as code implementation and acceptance criteria. Although EC measures may be useful to explain defects, the explanatory power of such measures depends on defect types, size, and process metrics. evolutionary coupling, industrial software, legacy software, mining software repositories, measurement, software defects Software constantly changes for many reasons. [1] [2] [3] [4] Studies have shown that changing software may be a defect-prone activity. [5] [6] [7] [8] Code that is changed most frequently is likely to be most defect-prone. 7, [9] [10] [11] Evolutionary coupling (EC) could explain some of this defect proneness because when code with high EC is changed, a high number of changes must be made to related parts of the system. The locations of these related changes may be scattered within the application or even across applications in a software ecosystem. Correctly making related changes across these locations is likely to be challenging. Developers may miss some locations, which should have been cochanged, and this may cause unforeseen ripple effects and problems. Evolutionary coupling information is generally extracted from the commit history of version control systems (VCSs). It is based on the assumption that artifacts committed together are logically coupled. argued that crosscutting concerns were harder to implement and change consistently because multiple (possibly unrelated) locations in the code have to be found and updated simultaneously. Their study suggested that increased crosscutting concerns may actually cause or contribute to defects. Our own previous study of EC in a banking system 19 suggested that EC does impact defects. Conversely, Graves et al 8 showed that module-level EC measures were a poor predictor of defect proneness. Knab et al 20 also found that EC did not predict defects in the Mozilla project; no studies exist to explain these contradictory findings. Furthermore, EC in large commercial systems has rarely been empirically investigated. Most previous studies are based on the analysis of open source systems. In this study, we analysed the correlation between EC measures and the number of defects and defect density in 2 large software systems in industrial software development environments. Correlation analysis is performed separately for each module.* We also built logistic regression models. In this study, multivariate regression analysis is used to explore the relationship between EC (independent variable) and defects (dependent variable) to understand how helpful EC measures are in defect analysis compared with other process metrics (we build correlation models rather than prediction models). We also analysed the relationship between EC and defect types. Our research questions are as follows: The results of our study showed that there was, in general, a relationship between EC and software defects in the software maintenance/evolution phase of the industrial software systems under study. We detected a positive correlation between EC measures and defects. Compared with other process measures such as the number of commits and the number of developers, EC measures seem to contain additional, sometimes important, information about defects: for every additional EC, the module is 8% more likely to be defective. However, correlation strength varied across modules and in some modules EC and defects were not correlated. On the basis of these findings, we added the following research question to our study: Modules, which were small in Lines of Code (LOC) and developer numbers, tended to be less correlated with EC. Fewer defects due to EC seem to occur in small modules. Evolutionary coupling also appeared to be more highly correlated with some types of defects such as code implementation, acceptance criteria, and analysis problems. Overall, *A module is part of a software system. A software system is composed of one or more independently developed modules. Similar functionality is contained within the same module, and a module is generally composed of many source files. A module is generally owned by a specific team, and the team members are responsible for its development and maintenance. In the systems analysed in this study, modules are also part of subsystems. There is a one-to-many relationship between subsystems and modules. A module can be part of only one subsystem, and a subsystem may have many modules. But subsystems are not covered in the scope of this work. regression analysis showed that EC may be useful for explaining defects in industrial systems. We make the following contributions in this paper. Firstly, we analyse large commercial systems, which have rarely been empirically studied to understand the relation between EC and defects. Secondly, we show that the effect of EC on defects varies depending on the module. Thirdly, the explanatory power of EC measures varies depending on defect types and module features such as size and developer activity. This paper is organised as follows: In the next section, we summarise related work. In Section 3, we present our methodology including measures, data extraction, and analysis methods.
Recently, similar work is performed and it is found that there is a positive correlation between change coupling and defect measures REF .
The relationship between evolutionary coupling and defects in large industrial software
J. Softw. Evol. Process.
J. Softw. Evol. Process.
Engineering Computer Science