ACM Home Page
Please provide us with feedback. Feedback
Design pattern density defined
Full text PdfPdf (720 KB)
Source
Conference on Object Oriented Programming Systems Languages and Applications archive
Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications table of contents
Orlando, Florida, USA
SESSION: Onward! 2009: Onward! full papers table of contents
Pages 469-480  
Year of Publication: 2009
ISBN:978-1-60558-766-0
Also published in ...
Author
Dirk Riehle  SAP Labs LLC, Palo Alto, CA, USA
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 87,   Downloads (12 Months): 87,   Citation Count: 0
Additional Information:

abstract   references   index terms  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1640089.1640125
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Kent Beck and Erich Gamma. JUnit: A Cook's Tour. Available from http://junit.sourceforge.net/doc/cookstour/cooks-tour.htm
 
2
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.
 
3
Rebecca Wirks-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice Hall, 1990.
 
4
Trygve Reenskaug, Per Wold, and O.A. Lehne. Working with Objects: The OOram Software Engineering Method. Prentice Hall, 1996.
 
5
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
 
6
David Garlan and Mary Shaw. An Introduction to Software Architecture. Prentice Hall, 1994.
 
7
James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison Wesley, 1991.
 
8
Ralph Johnson, John Vlissides. Personal Email Communication, 2002.
 
9
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.
 
10
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.
 
11
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.
 
12
The Object Management Group (OMG). UML 2.x Specification. OMG, 2007. See http://www.uml.org.
 
13
Dirk Riehle. Framework Design: A Role Modeling Approach. Ph.D. Thesis, No. 13509. ETH Zürich, 2000.
 
14
Dirk Riehle. JUnit 3.8 Documented Using Collaborations. In Software Engineering Notes Volume 33, Issue 2 (March 2008), Article No. 5. ACM Press, 2008.
 
15
Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall, 1988.
 
16
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.html
 
17
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.
 
18
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.
 
19
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.
 
20
Brian Henderson-Sellers. Object-Oriented Metrics: Measures of Complexity. Prentice-Hall, 1995.
 
21
Sandeep Puraoand Vijay Vaishnavi. "Product Metrics for Object-Oriented Systems." ACM Computing Surveys Vol. 35, No 2 (June 2003). ACM Press: Pages 191--221.
 
22
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.
 
23
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.
 
24
Joshua Kerievsky. Refactoring to Patterns. Addison-Wesley, 2005.
 
25
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.
 
26
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.
 
27
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.
 
28
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.
 
29
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.
 
30
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.
 
31
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.
 
32
Egil Andersen. Conceptual Modeling of Objects: A Role Modeling Approach. Ph.D. Thesis, University of Oslo, 1997.
 
33
Kent Beck and Erich Gamma. Source code available from http://www.junit.org.
 
34
Dirk Riehle et al. "Design Pattern Density Validated." In preparation.
 
35
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.
 
36
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.
 
37
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.
 
38
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.
 
39
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.
 
40
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.