ABSTRACT
Design patterns are solutions to recurring design problems, conceived to increase benefits in terms of reuse, code quality and, above all, maintainability and resilience to changes. This paper presents results from an empirical study aimed at understanding the evolution of design patterns in three open source systems, namely JHotDraw, ArgoUML, and Eclipse-JDT. Specifically, the study analyzes how frequently patterns are modified, to what changes they undergo and what classes co-change with the patterns. Results show how patterns more suited to support the application purpose tend to change more frequently, and that different kind of changes have a different impact on co-changed classes and a different capability of making the system resilient to changes.
- G. Antoniol, G. Casazza, M. Di Penta, and R. Fiutem. Object-oriented design patterns recovery. Journal of Systems and Software, 59(2):181--196, 2001. Google ScholarDigital Library
- R. S. Arnold and S. A. Bohner. Impact analysis - towards a framework for comparison. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM 1993), Montréal, Quebec, Canada, pages 292--301. IEEE Computer Society, 1993. Google ScholarDigital Library
- J. M. Bieman, G. Straw, H. Wang, P. W. Munger, and R. T. Alexander. Design patterns and change proneness: An examination of five evolving systems. In 9th International Software Metrics Symposium (METRICS '03), pages 40--49. IEEE Computer Society, 2003. Google ScholarDigital Library
- S. Breu and T. Zimmermann. Mining aspects from version history. In S. Uchitel and S. Easterbrook, editors, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE 2006), pages 221--230. ACM Press, September 2006. Google ScholarDigital Library
- G. Canfora and L. Cerulo. How crosscutting concerns evolve in JHotDraw. In STEP '05:Proceedings of the 13th IEEE International Workshop on Software Technology and Engineering Practice, pages 65--73. IEEE Computer Society, 2005. Google ScholarDigital Library
- G. Canfora and L. Cerulo. Impact analysis by mining software and change request repositories. In 11th IEEE International Software Metrics Symposium (METRICS 2005), pages 29--38. IEEE Computer Society, 2005. Google ScholarDigital Library
- G. Canfora, L. Cerulo, and M. Di Penta. On the use of line co-change for identifying crosscutting concern code. In 22nd IEEE International Conference on Software Maintenance (ICSM 2006), 24-27 September 2006, Philadelphia, PA, USA, pages 213--222, 2006. Google ScholarDigital Library
- G. Costagliola, A. De Lucia, V. Deufemia, C. Gravino, and M. Risi. Design pattern recovery by visual language parsing. In 9th European Conference on Software Maintenance and Reengineering (CSMR 2005), 21-23 March 2005, Manchester, UK, pages 102--111, 2005. Google ScholarDigital Library
- B. Eckel. Thinking in Patterns with Java http://www.mindview.net/Books/TIPatterns/Last accessed March, 11 2007--Mindview Inc., 2005.Google Scholar
- H. Gall, M. Jazayeri, and J. Krajewski. CVS release history data for detecting logical couplings. In IWPSE'03:Proceedings of the 6th International Workshop on Principles of Software Evolution, page 13. IEEE Computer Society, 2003. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object Oriented Software-Addison-Wesley, 1995. Google ScholarDigital Library
- R. Geiger, B. Fluri, H. C. Gall, and M. Pinzger. Relation of code clones and change couplings. In Proceedings of the 9th International Conference of Funtamental Approaches to Software Engineering (FASE), number 3922 in LNCS, pages 411--425, Vienna, Austria, March 2006. Springer. Google ScholarDigital Library
- J. Gil and I. Maman. Micro patterns in java code. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, October 16-20, 2005, San Diego, CA, USA, pages 97--116. ACM, 2005. Google ScholarDigital Library
- Y.-G. Guéhéneuc, H. A. Sahraoui, and F. Zaidi. Fingerprinting design patterns. In 11th Working Conference on Reverse Engineering (WCRE 2004), 8-12 November 2004, Delft, The Netherlands, pages 172--181, 2004. Google ScholarDigital Library
- D. Heuzeroth, T. Holl, G. Högström, and W. Löwe. Automatic design pattern detection. In 11th International Workshop on Program Comprehension (IWPC 2003), May 10-11, 2003, Portland, Oregon, USA, pages 94--103, 2003. Google ScholarDigital Library
- M. Kim, V. Sazawal, D. Notkin, and G. Murphy. An empirical study of code clone genealogies. In Proceedings of the European Software Engineering Conference and the ACM Symposium on the Foundations of Software Engineering, pages 187--196, Lisbon, Portogal, September 2005. Google ScholarDigital Library
- S. Kim, K. Pan, and E. J. J. Whitehead. Micro pattern evolution. In Proceedings of the 2006 International Workshop on Mining Software Repositories, MSR 2006, Shanghai, China, May 22-23, 2006, pages 40--46. ACM, 2006. Google ScholarDigital Library
- S. Kim, T. Zimmermann, K. Pan, and E. J. J. Whitehead. Automatic identification of bug-introducing changes. In ASE '06:Proceedings of the 21st IEEE International Conference on Automated Software Engineering (ASE '06), pages 81--90. IEEE Computer Society, 2006. Google ScholarDigital Library
- C. Krämer and L. Prechelt. Design recovery by automated search for structural design patterns in object-oriented software. In Proceedings of the Working Conference on Reverse Engineering, pages 208--215, 1996. Google ScholarDigital Library
- B. Livshits and T. Zimmermann. Dynamine: finding common error patterns by mining software revision histories. In ESEC/FSE-13:Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, pages 296--305. ACM Press, 2005. Google ScholarDigital Library
- A. Milanova, A. Rountev, and B. G. Ryder. Parameterized object sensitivity for points-to analysis for Java. ACM Trans. Softw. Eng. Methodol., 14(1):1--41, 2005. Google ScholarDigital Library
- L. Prechelt, B. Unger, W. F. Tichy, P. Brössler, and L. G. Votta. A controlled experiment in maintenance comparing design patterns to simpler solutions. IEEE Trans. Software Eng., 27(12):1134--1144, 2001. Google ScholarDigital Library
- N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, and S. T. Halkidis. Design pattern detection using similarity scoring. IEEE Trans. Software Eng., 32(11):896--909, 2006. Google ScholarDigital Library
- M. Vokáč. Defect frequency and design patterns:An empirical study of industrial code. IEEE Trans. Software Eng., 30:904--917, 2004. Google ScholarDigital Library
- R. K. Yin. Case Study Research:Design and Methods-Third Edition-SAGE Publications, London, 2002.Google Scholar
- A. T. T. Ying, G. C. Murphy, R. Ng, and M. C. Chu-Carroll. Predicting source code changes by mining revision history. IEEE Trans. Software Eng., 30:574--586, sep 2004. Google ScholarDigital Library
- T. Zimmermann, P. Weisgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In ICSE'04:Proceedings of the 26th International Conference on Software Engineering, pages 563--572. IEEE Computer Society, 2004. Google ScholarDigital Library
Index Terms
- An empirical study on the evolution of design patterns
Recommendations
An Approach for Evaluating the Effectiveness of Design Patterns in Software Evolution
COMPSACW '11: Proceedings of the 2011 IEEE 35th Annual Computer Software and Applications Conference WorkshopsIn recent years, the influences of design patterns on software quality have attracted increasing attention in the area of software engineering, as design patterns encapsulate valuable knowledge to resolve design problems, and more importantly to improve ...
Relating the Evolution of Design Patterns and Crosscutting Concerns
SCAM '07: Proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and ManipulationCrosscutting concerns consist in software system features having the implementation spread across modules as tangled and scattered code. In many cases, these crosscutting concerns represent design pattern clients, i.e., invocations to pattern features. ...
A multiple case study of design pattern decay, grime, and rot in evolving software systems
Software designs decay as systems, uses, and operational environments evolve. Decay can involve the design patterns used to structure a system. Classes that participate in design pattern realizations accumulate grime--non-pattern-related code. Design ...
Comments