Design pattern density defined

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.

[1]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[2]  Rudolf Ferenc,et al.  Mining design patterns from C++ source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[3]  Sandeep Purao,et al.  Product metrics for object-oriented systems , 2003, CSUR.

[4]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[5]  David Garlan,et al.  Design fragments make using frameworks easier , 2006, OOPSLA '06.

[6]  Egil P. Andersen Conceptual Modeling of Objects - A Role Modeling Approach , 1997 .

[7]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[8]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[9]  Itay Maman,et al.  Micro patterns in Java code , 2005, OOPSLA '05.

[10]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[11]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[12]  Letha H. Etzkorn,et al.  Computing software metrics from design documents , 2004, ACM-SE 42.

[13]  Dirk Riehle JUnit 3.8 documented using collaborations , 2008, SOEN.

[14]  Dirk Riehle,et al.  Pattern density and role modeling of an object transport service , 2000, CSUR.

[15]  Dirk Riehle A Role-Based Design Pattern Catalog of Atomic and Composite Patterns Structured by Pattern Purpose , 1997 .

[16]  Trygve Reenskaug,et al.  Working with objects - the OOram software engineering method , 1995 .

[17]  Oscar Nierstrasz,et al.  Traits: Composable Units of Behaviour , 2002, ECOOP.

[18]  Rudolf K. Keller,et al.  Pattern-based reverse-engineering of design components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[19]  Welf Löwe,et al.  Automatic design pattern detection , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[20]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[21]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[22]  Dirk Riehle,et al.  Framework Design: A Role Modeling Approach , 2000, Softwaretechnik-Trends.

[23]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[24]  Pierre Cointe,et al.  Understanding design patterns density with aspects : A case study in JHotDraw using AspectJ , 2006 .

[25]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

[26]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[27]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[28]  Rebecca Wirfs-Brock,et al.  Object-oriented design: a responsibility-driven approach , 1989, OOPSLA '89.

[29]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[30]  Uwe Zdun,et al.  Modeling architectural patterns using architectural primitives , 2005, OOPSLA '05.

[31]  James Coplien,et al.  Advanced C++ Programming Styles and Idioms , 1991, Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).

[32]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[33]  Letha H. Etzkorn,et al.  Towards a semantic metrics suite for object-oriented design , 2000, Proceedings. 34th International Conference on Technology of Object-Oriented Languages and Systems - TOOLS 34.