Title
Evaluating the impact of design pattern and anti-pattern dependencies on changes and faults
Abstract
On the one hand, design patterns are solutions to recurring design problems, aimed at increasing reuse, flexibility, and maintainability. However, much prior work found that some patterns, such as the Observer and Singleton, are correlated with large code structures and argued that they are more likely to be fault prone. On the other hand, anti-patterns describe poor solutions to design and implementation problems that highlight weaknesses in the design of software systems and that may slow down maintenance and increase the risk of faults. They have been found to negatively impact change and fault-proneness. Classes participating in design patterns and anti-patterns have dependencies with other classes, e.g., static and co-change dependencies, that may propagate problems to other classes. We investigate the impact of such dependencies in object-oriented systems by studying the relations between the presence of static and co-change dependencies and (1) the fault-proneness, (2) the types of changes, and (3) the types of faults that these classes exhibit. We analyze six design patterns and 10 anti-patterns in 39 releases of ArgoUML, JFreeChart, and XercesJ, and investigate to what extent classes having dependencies with design patterns or anti-patterns have higher odds of faults than other classes. We show that in almost all releases of the three systems, classes having dependencies with anti-patterns are more fault-prone than others while this is not always true for classes with dependencies with design patterns. We also observe that structural changes are the most common changes impacting classes having dependencies with anti-patterns. Software developers could use this knowledge about the impact of design pattern and anti-pattern dependencies to better focus their testing and reviewing activities towards the most risky classes and to propagate changes adequately.
Year
DOI
Venue
2016
10.1007/s10664-015-9361-0
Empirical Software Engineering
Keywords
Field
DocType
Anti-patterns,Design patterns,Faults proneness,Change proneness,Static relationships,Co-change
Data mining,Computer science,Reuse,Software design pattern,Software system,Software,Odds,Anti-pattern,Maintainability,Design pattern
Journal
Volume
Issue
ISSN
21
3
1382-3256
Citations 
PageRank 
References 
8
0.48
34
Authors
5
Name
Order
Citations
PageRank
Fehmi Jaafar14910.45
Yann-Gael Gueheneuc22723141.93
Sylvie Hamel3657.08
Foutse Khomh4137685.40
Mohammad Zulkernine594588.88