ABSTRACT
Design pattern density is a metric that measures how much of an object-oriented design can be understood and represented as instances of design patterns. Expert developers have long believed that a high design pattern density implies a high maturity of the design under inspection. This paper presents a quantifiable and observable definition of this metric. The metric is illustrated and qualitatively validated using four real-world case studies. We present several hypotheses of the metric's meaning and their implications, including the one about design maturity. We propose that the design pattern density of a maturing framework has a fixed point and we show that if software design patterns make learning frameworks easier, a framework's design pattern density is a measure of how much easier it will become.
- Kent Beck and Erich Gamma. JUnit: A Cook's Tour. Available from http://junit.sourceforge.net/doc/cookstour/cooks-tour.htmGoogle Scholar
- Rebecca Wirfs-Brock and Brian Wilkerson. "Object-Oriented Design: A Responsibility-Driven Approach." In Proceedings of the 1989 Conference on Object-Oriented Program--ming, Systems, Languages and Applications (OOPSLA '89). ACM Press, 1989: Pages 71--75. Google Scholar
Digital Library
- Rebecca Wirks-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice Hall, 1990. Google Scholar
Digital Library
- Trygve Reenskaug, Per Wold, and O.A. Lehne. Working with Objects: The OOram Software Engineering Method. Prentice Hall, 1996.Google Scholar
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google Scholar
Digital Library
- David Garlan and Mary Shaw. An Introduction to Software Architecture. Prentice Hall, 1994.Google Scholar
- James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison Wesley, 1991. Google Scholar
Digital Library
- Ralph Johnson, John Vlissides. Personal Email Communication, 2002.Google Scholar
- Dirk Riehle. A Role-Based Design Pattern Catalog of Atomic and Composite Patterns Structured by Pattern Purpose. Ubilab Technical Report 97.1.1. Zurich: UBS AG, 1997.Google Scholar
- Dirk Riehle, Roger Brudermann, Thomas Gross, and Kai-Uwe Mätzel. "Pattern Density and Role Modeling of an Object Transport Service." ACM Computing Surveys 32, 1es (March 2000): Article No. 10. Google Scholar
Digital Library
- Dirk Riehle. "Composite Design Patterns." In Proceedings of the 1997 Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA '97). ACM Press, 1997: Pages 218--228. Google Scholar
Digital Library
- The Object Management Group (OMG). UML 2.x Specification. OMG, 2007. See http://www.uml.org.Google Scholar
- Dirk Riehle. Framework Design: A Role Modeling Approach. Ph.D. Thesis, No. 13509. ETH Zürich, 2000.Google Scholar
- Dirk Riehle. JUnit 3.8 Documented Using Collaborations. In Software Engineering Notes Volume 33, Issue 2 (March 2008), Article No. 5. ACM Press, 2008. Google Scholar
Digital Library
- Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall, 1988. Google Scholar
Digital Library
- Erich Gamma. Advanced Design with Java and Patterns. Tutorial held at the 1998 JAOO Conference. Available from http://www.riehle.org/blogs/research/2007/2007-01-03.htmlGoogle Scholar
- Kent Beck and Erich Gamma. JHotDraw-Patterns Applied. Tutorial held at the 1997 Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '97). ACM Press, 1997.Google Scholar
- Joseph (Yossi) Gil and Itay Maman. "Micro Patterns in Java Code." In Proceedings of the 2005 Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA '05). ACM Press, 2005: Pages 97--116. Google Scholar
Digital Library
- Uwe Zdun and Paris Avgeriou. "Modeling Architectural Patterns Using Architectural Primitives." In Proceedings of the 2005 Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA '05). ACM Press, 2005: Pages 133--146. Google Scholar
Digital Library
- Brian Henderson-Sellers. Object-Oriented Metrics: Measures of Complexity. Prentice-Hall, 1995. Google Scholar
Digital Library
- Sandeep Puraoand Vijay Vaishnavi. "Product Metrics for Object-Oriented Systems." ACM Computing Surveys Vol. 35, No 2 (June 2003). ACM Press: Pages 191--221. Google Scholar
Digital Library
- Cara Stein, Letha Etzkorn, and Dawn Utley. "Computing Software Metrics from Design Documents." In Proceedings of the 2004 ACM South East Conference (ACMSE '04). ACM Press, 2004: Pages 146--151. Google Scholar
Digital Library
- Letha Etzkorn and H Delugach. "Towards a Semantic Metrics Suite for Object-Oriented Design." In Proceedings of the 34th International Conference on Technology of Object-Oriented Languages and Systems (TOOLS 2000). Pages: 71--80. Google Scholar
Digital Library
- Joshua Kerievsky. Refactoring to Patterns. Addison-Wesley, 2005. Google Scholar
Digital Library
- Serge Demeyer. Stéphane Ducasse, and Oscar Nierstrasz. "Finding Refactorings via Change Metrics." In Proceedings of the 15th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2000). ACM Press, 2000: Pages: 166--177. Google Scholar
Digital Library
- Christian Krämer and Lutz Prechelt. "Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software." In Proceedings of the Working Conference on Reverse Engineering. IEEE Press, 1996: Pages 208--215. Google Scholar
Digital Library
- Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz and Andrew Black. "Traits: Composable Units of Behavior." In Proceedings of the European Conference on Object-Oriented Programming (ECOOP '03). Springer Verlag, 2003: Pages 248--274.Google Scholar
- Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz and Vincent Kruskal. "Subject-Oriented Composition Rules." In Proceedings of the 1995 Conference on Object-Oriented Programming, Systems Languages and Applications. ACM Press, 1995: Pages: 235--250. Google Scholar
Digital Library
- George Fairbanks, David Garlan, and William Scherlis. "Design Fragments Make Using Frameworks Easier." In Proceedings of the 2006 Conference on Object-Oriented Programming, Systems Languages and Applications. ACM Press, 2006: Pages 75--88. Google Scholar
Digital Library
- Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. "Aspect-Oriented Programming." In Proceedings of the 1997 European Conference on Object-Oriented Programming (ECOOP 1997). Springer Verlag: Pages 220--242.Google Scholar
- Jan Hannemann and Gregor Kiczales. "Design Pattern Implementation in Java and AspectJ." In Proceedings of the 2002 Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2002). ACM Press, 2002: Pages 161--173. Google Scholar
Digital Library
- Egil Andersen. Conceptual Modeling of Objects: A Role Modeling Approach. Ph.D. Thesis, University of Oslo, 1997.Google Scholar
- Kent Beck and Erich Gamma. Source code available from http://www.junit.org.Google Scholar
- Dirk Riehle et al. "Design Pattern Density Validated." In preparation.Google Scholar
- Simon Denier and Pierre Cointe. "Understanding Design Pattern Density with Aspects: A Case Study in JHotDraw using AspectJ." In Proceedings of the 5th International Symposium on Software Composition (SC 2006). Springer Verlag, 2006. Google Scholar
Digital Library
- Dirk Heuzeroth, Thomas Holl, Gustav Högström, and Welf Löwe. "Automatic design pattern detection." In Proceedings of the 11th IEEE International Workshop on In Program Comprehension, 2003. IEEE Press, 2003. Page 94--103. Google Scholar
Digital Library
- Rudolf Keller, Reinhard Schauer, Sebastian Robitaille, and Peter Page. "Pattern-Based Reverse-Engineering of Design Components." In Proceedings of the 21st International Conference on Software Engineering (ICSE 1999). IEEE Press. Page 226--235. Google Scholar
Digital Library
- Nikolaos Tsantalis, Alexander Chatzigeorgiou, George Stephanides, and Spyros T. Halkidis, "Design Pattern Detection Using Similarity Scoring," IEEE Transactions on Software Engineering, vol. 32, no. 11 (November 2006). Page 896--909. Google Scholar
Digital Library
- Zsolt Balanyi and Rudolf Ferenc, "Mining Design Patterns from C++ Source Code." In Proceedings of the 2003 International Conference on Software Maintenance (ICSM '03). IEEE Press, 2003. Page 305--314. Google Scholar
Digital Library
- Ivica Aracic, Vaidas Gasiunas, Mira Mezini, and Klaus Ostermann. "Overview of CaesarJ." Transactions on Aspect-Oriented Software Development I (LNCS vol. 3880). Springer Verlag, 2006. Page 135--173. Google Scholar
Digital Library
Index Terms
Design pattern density defined
Recommendations
Design pattern alternatives: what to do when a GoF pattern fails
PCI '13: Proceedings of the 17th Panhellenic Conference on InformaticsDesign patterns have been introduced in the field of software engineering in the middle of 90s as common solutions to common design problems. Until now, the effect of design patterns on software quality attributes has been studied by many researchers. ...
Design pattern density defined
OOPSLA '09Design pattern density is a metric that measures how much of an object-oriented design can be understood and represented as instances of design patterns. Expert developers have long believed that a high design pattern density implies a high maturity of ...
Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness
AbstractDuring software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to ...









Comments