Abstract
Antipatterns are poor design choices that are conjectured to make object-oriented systems harder to maintain. We investigate the impact of antipatterns on classes in object-oriented systems by studying the relation between the presence of antipatterns and the change- and fault-proneness of the classes. We detect 13 antipatterns in 54 releases of ArgoUML, Eclipse, Mylyn, and Rhino, and analyse (1) to what extent classes participating in antipatterns have higher odds to change or to be subject to fault-fixing than other classes, (2) to what extent these odds (if higher) are due to the sizes of the classes or to the presence of antipatterns, and (3) what kinds of changes affect classes participating in antipatterns. We show that, in almost all releases of the four systems, classes participating in antipatterns are more change-and fault-prone than others. We also show that size alone cannot explain the higher odds of classes with antipatterns to underwent a (fault-fixing) change than other classes. Finally, we show that structural changes affect more classes with antipatterns than others. We provide qualitative explanations of the increase of change- and fault-proneness in classes participating in antipatterns using release notes and bug reports. The obtained results justify a posteriori previous work on the specification and detection of antipatterns and could help to better focus quality assurance and testing activities.
Similar content being viewed by others
Notes
References
Antoniol G, Ayari K, Di Penta M, Khomh F, Guéhéneuc Y-G (2008) Is it a bug or an enhancement? A text-based approach to classify change requests. In: Vigder M, Chechik M (eds) Proceedings of the 18th IBM centers for advanced studies conference (CASCON). ACM Press, New York, 15 pp
Aversano L, Canfora G, Cerulo L, Del Grosso C, Di Penta M (2007) An empirical study on the evolution of design patterns. In: Proc. of the the 6th European software engineering conf. and symp. on the foundations of software engineering. ACM Press, New York, pp 385–394
Basili VR, Briand LC, Melo WL (1996) A validation of object-oriented design metrics as quality indicators. IEEE Trans Softw Eng 22(10):751–761
Bieman JM, Straw G, Wang H, Munger PW, Alexander RT (2003) Design patterns and change proneness: an examination of five evolving systems. In: 9th international software metrics symposium (METRICS’03). IEEE Computer Society Press, Piscataway, pp 40–49
Bois BD, Demeyer S, Verelst J, Mens T, Temmerman M (2006) Does god class decomposition affect comprehensibility? In: Proceedings of the IASTED international conference on software engineering. IASTED/ACTA Press, Calgary, pp 346–355
Brown WJ, Malveau RC, Brown WH, McCormick HW III, Mowbray TJ (1998) Anti patterns: refactoring software, architectures, and projects in crisis, 1st edn. Wiley, New York
Cartwright M, Shepperd M (2000) An empirical investigation of an object-oriented software system. IEEE Trans Softw Eng 26(8):786–796
Chidamber SR, Kemerer CF (1994) A metrics suite for object oriented design. IEEE Trans Softw Eng 20(6):476–493
Cohen J (1988) Statistical power analysis for the behavioral sciences. L. Erlbaum Associates, Hillsdale
Conte SD, Campbell RL (1989) A methodology for early software size estimation. Technical Report SERC-TR-33-P, Purdue University
Deligiannis IS, Shepperd MJ, Roumeliotis M, Stamelos I (2003) An empirical investigation of an object-oriented design heuristic for maintainability. J Syst Softw 65(2):127–139
Deligiannis IS, Stamelos I, Angelis L, Roumeliotis M, Shepperd MJ (2004) A controlled experiment investigation of an object-oriented design heuristic for maintainability. J Syst Softw 72(2):129–143
Dhambri K, Sahraoui H, Poulin P (2008) Visual detection of design anomalies. In: Proceedings of the 12th European conference on software maintenance and reengineering, Tampere, Finland. IEEE Computer Society Press, Piscataway, pp 279–283
Di Penta M, Cerulo L, Guéhéneuc Y-G, Antoniol G (2008) An empirical study of the relationships between design pattern roles and class change proneness. In: Proceedings of the 24th international conference on software maintenance (ICSM). IEEE Computer Society Press, Piscataway
Eaddy M, Zimmermann T, Sherwood KD, Garg V, Murphy GC, Nagappan N, Aho AV (2008) Do crosscutting concerns cause defects? IEEE Trans Softw Eng 34(4):497–515
El Emam K, Benlarbi S, Goel N, Rai S (2001) The confounding effect of class size on the validity of object-oriented metrics. IEEE Trans Softw Eng 27(7):630–650
Fischer M, Pinzger M, Gall H (2003) Populating a release history database from version control and bug tracking systems. In: Proceedings of the international conference on software maintenance, Amsterdam, Netherlands. IEEE Computer Society Press, Piscataway, pp 23–32
Fowler M (1999) Refactoring—improving the design of existing code, 1st edn. Addison-Wesley, Reading
Gamma E, Helm R, Johnson R, Vlissides J (1994) Design patterns—elements of reusable object-oriented software, 1st edn. Addison-Wesley, Reading
Gyimóthy T, Ferenc R, Siket I (2005) Empirical validation of object-oriented metrics on open source software for fault prediction. IEEE Trans Softw Eng 31(10):897–910
Hosmer D, Lemeshow S (2000) Applied logistic regression, 2nd edn. Wiley, New York
Khomh F, Guéhéneuc Y-G (2008) Do design patterns impact software quality positively? In: Proceedings of the 12th conference on software maintenance and reengineering (CSMR). IEEE Computer Society Press, Piscataway
Khomh F, Di Penta M, Guéhéneuc Y-G, Antoniol G (2009a) An exploratory study of the impact of antipatterns on class change- and fault-proneness. Technical Report, Ecole Polytechnique de Montreal
Khomh F, Di Penta M, Guéhéneuc Y-G (2009b) An exploratory study of the impact of code smells on software change-proneness. In: Proceedings of the 16th working conference on reverse engineering (WCRE). IEEE Computer Society Press, Piscataway
Khomh F, Guéhéneuc Y-G, Antoniol G (2009c) Playing roles in design patterns: an empirical descriptive and analytic study. In: Kontogiannis K, Xie T (eds) Proceedings of the 25th international conference on software maintenance (ICSM). IEEE Computer Society Press, Piscataway, 10 pp
Khomh F, Vaucher S, Guéhéneuc Y-G, Sahraoui H (2009d) A bayesian approach for the detection of code and design smells. In: Proceedings of the 9th international conference on quality software (QSIC). IEEE Computer Society Press, Piscataway, 10 pp
Langelier G, Sahraoui HA, Poulin P (2005) Visualization-based analysis of quality for large-scale software systems. In: Proceedings of the 20th international conference on automated software engineering. ACM Press, New York
Lanza M, Marinescu R (2006) Object-oriented metrics in practice. Springer, Berlin
Mantyla M (2003) Bad smells in software—a taxonomy and an empirical study. PhD thesis, Helsinki University of Technology
Marinescu R (2004) Detection strategies: metrics-based rules for detecting design flaws. In: Proceedings of the 20th international conference on software maintenance. IEEE Computer Society Press, Piscataway, pp 350–359 (2004)
Moha N (2008) DECOR: détection et correction des défauts dans les systèmes orientés objet. PhD thesis, Université de Montréal et Université de Lille
Moha N, Guéhéneuc Y-G, Meur A-FL, Duchien L (2008a) A domain analysis to specify design defects and generate detection algorithms. In: Proceedings of the 11th international conference on fundamental approaches to software engineering. Springer, New York, pp 276–291
Moha N, Hacene AMR, Valtchev P, Guéhéneuc Y-G (2008b) Refactorings of design defects using relational concept analysis. In: Medina R, Obiedkov S (eds) Proceedings of the 4th international conference on formal concept analysis (ICFCA). Springer, New York
Moha N, Guéhéneuc YG, Duchien L, Meur AF (2010) DECOR: a method for the specification and detection of code and design smells. IEEE Trans Software Eng 36(1):20–36
Munro MJ (2005) Product metrics for automatic identification of “bad smell” design problems in java source-code. In: Proceedings of the 11th international software metrics symposium. IEEE Computer Society Press, Piscataway
Olbrich S, Cruzes DS, Basili V, Zazworka N (2009) The evolution and impact of code smells: a case study of two open source systems. In: Third international symposium on empirical software engineering and measurement
Oliveto R, Khomh F, Antoniol G, Guéhéneuc Y-G (2010) Numerical signatures of antipatterns: an approach based on b-splines. In: Capilla R, Ferenc R, Dueas JC (eds) Proceedings of the 14th conference on software maintenance and reengineering. IEEE Computer Society Press, Piscataway
Riel AJ (1996) Object-oriented design heuristics. Addison-Wesley, Reading
Sheskin DJ (2007) Handbook of parametric and nonparametric statistical procedures, 4th edn. Chapman & Hall, London
Simon F, Steinbrückner F, Lewerentz C (2001) Metrics based refactoring. In: Proceedings of the fifth European conference on software maintenance and reengineering (CSMR’01). IEEE Computer Society Press, Piscataway, p 30
Travassos G, Shull F, Fredericks M, Basili VR (1999) Detecting defects in object-oriented designs: using reading techniques to increase software quality. In: Proceedings of the 14th conference on object-oriented programming, systems, languages, and applications. ACM Press, New York, pp 47–56
van Emden E, Moonen L (2002) Java quality assurance by detecting code smells. In: Proceedings of the 9th working conference on reverse engineering (WCRE’02). IEEE Computer Society Press, Piscataway
Vicinanza S, Mukhopadhyay T, Prietula M (1991) Software-effort estimation: an exploratory study of expert performance. Inf Syst Res 2(4):243–262
Vokác M (2004) Defect frequency and design patterns: an empirical study of industrial code. IEEE Trans Software Eng 30(12):904–917
Wake WC (2003) Refactoring workbook. Addison-Wesley Longman, Boston
Webster BF (1995) Pitfalls of object oriented development, 1st edn. M & T Books, Redwood City
Wei L, Shatnawi R (2007) An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution. J Syst Softw 80(7):1120–1128
Yin RK (2002) Case study research: design and methods, 3rd edn. SAGE, London (2002)
Zimmermann T, Weisgerber P, Diehl S, Zeller A (2004) Mining version histories to guide software changes. In: Proceedings of the 26th international conference on software engineering. IEEE Computer Society Press, Piscataway, pp 563–572
Zimmermann T, Premraj R, Zeller A (2007) Predicting defects for Eclipse. In: Proceedings of the 3rd ICSE international workshop on predictor models in software engineering. IEEE Computer Society Press, Piscataway
Author information
Authors and Affiliations
Corresponding author
Additional information
We thank Marc Eaddy for making his data on faults freely available. This work has been partly funded by the NSERC Research Chairs in Software Change and Evolution and in Software Patterns and Patterns of Software.
Rights and permissions
About this article
Cite this article
Khomh, F., Penta, M.D., Guéhéneuc, YG. et al. An exploratory study of the impact of antipatterns on class change- and fault-proneness. Empir Software Eng 17, 243–275 (2012). https://doi.org/10.1007/s10664-011-9171-y
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-011-9171-y