skip to main content
10.1145/1287624.1287680acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

An empirical study on the evolution of design patterns

Published:07 September 2007Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. B. Eckel. Thinking in Patterns with Java http://www.mindview.net/Books/TIPatterns/Last accessed March, 11 2007--Mindview Inc., 2005.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object Oriented Software-Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Vokáč. Defect frequency and design patterns:An empirical study of industrial code. IEEE Trans. Software Eng., 30:904--917, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. R. K. Yin. Case Study Research:Design and Methods-Third Edition-SAGE Publications, London, 2002.Google ScholarGoogle Scholar
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. An empirical study on the evolution of design patterns

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        ESEC-FSE '07: Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
        September 2007
        638 pages
        ISBN:9781595938114
        DOI:10.1145/1287624

        Copyright © 2007 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 7 September 2007

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate112of543submissions,21%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader