
Related items loading ...
Section 1: Publication
Publication Type
Journal Article
Authorship
Mondal, M., Roy, B., Roy, C. K., & Schneider, K. A.
Title
Investigating the relationship between evolutionary coupling and software bug-proneness
Year
2019
Publication Outlet
In Proceedings of the 29th Annual International Conference on Computer Science and Software Engineering (pp. 173-182
DOI
ISBN
ISSN
Citation
Mondal, M., Roy, B., Roy, C. K., & Schneider, K. A. (2019c). Investigating the relationship between evolutionary coupling and software bug-proneness. In Proceedings of the 29th Annual International Conference on Computer Science and Software Engineering (pp. 173-182).
https://dl.acm.org/doi/abs/10.5555/3370272.3370291
Abstract
While designing a software system, minimizing coupling among program entities (such as files, classes, methods) is always desirable. If a software entity is coupled with many other entities, this might be an indication of poor software design because changing that entity will likely have ripple change effects on the other coupled entities. Evolutionary coupling, also known as change coupling, is a well investigated way of identifying coupling among program entities. Existing studies have investigated whether file level or class level evolutionary couplings are related with software bug-proneness. While these existing studies have mixed findings regarding the relationship between bug-proneness and evolutionary coupling, none of these studies investigated whether method level (i.e., function level for procedural languages) evolutionary coupling is correlated with bug-proneness. Investigation considering a finer granularity (i.e., such as method level granularity) can help us pinpoint which methods in the files or classes are actually responsible for coupling as well as bug-proneness.
In this research, we investigate method level evolutionary coupling through mining association rules and analyze whether this coupling is correlated with software bug-proneness. According to our investigation on thousands of commit operations from the evolutionary history of six open-source subject systems, method level evolutionary coupling generally has a good positive correlation with software bug-proneness. Our regression analysis indicates that evolutionary coupling and bug-proneness mostly have a linear relationship between them. We also observe that methods that experience bug-fixes during evolution generally have a significantly higher number of evolutionary coupling links than the methods that do not experience bug-fixes. We realize that minimizing method level evolutionary coupling links can help us minimize bugs in software systems. Our prototype tool is capable of identifying highly coupled methods along with their coupling links so that programmers can find possibilities of minimizing those links for reducing bug-proneness of software systems.
Plain Language Summary