A Survey on Design Pattern Detection Approaches

Design patterns play a key role in software development process. The interest in extracting design pattern instances from object-oriented software has increased tremendously in the last two decades. Design patterns enhance program understanding, help to document the systems and capture design trade-offs. This paper provides the current state of the art in design patterns detection. The selected approaches cover the whole spectrum of the research in design patterns detection. We noticed diverse accuracy values extracted by different detection approaches. The lessons learned are listed at the end of this paper, which can be used for future research directions and guidelines in the area of design patterns detection.

[1]  Steffen Becker,et al.  Combining clustering and pattern detection for the reengineering of component-based software systems , 2011, QoSA-ISARCS '11.

[2]  Yann-Gaël Guéhéneuc,et al.  DeMIMA: A Multilayered Approach for Design Pattern Identification , 2008, IEEE Transactions on Software Engineering.

[3]  Dirk Beyer,et al.  CrocoPat: efficient pattern analysis in object-oriented programs , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[4]  Jürgen Wolff von Gudenberg,et al.  Pattern-based design recovery of Java software , 1998, SIGSOFT '98/FSE-6.

[5]  Using explanations for design patterns identification , 2001 .

[6]  Tibor Gyimóthy,et al.  Columbus - reverse engineering tool and schema for C++ , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[7]  Hironori Washizaki,et al.  Detecting Design Patterns in Object-Oriented Program Source Code by Using Metrics and Machine Learning , 2014 .

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

[9]  Ricardo Baeza-Yates,et al.  Information Retrieval: Data Structures and Algorithms , 1992 .

[10]  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).

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

[12]  Giuliano Antoniol,et al.  Design pattern recovery in object-oriented software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[13]  Anssi Karhinen,et al.  Software Metrics by Architectural Pattern Mining , 2000 .

[14]  Yanyan Zhang,et al.  A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures , 2015, J. Syst. Softw..

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

[16]  Marek Vokác An efficient tool for recovering Design Patterns from C++ Code , 2006, J. Object Technol..

[17]  Yann-Gaël Guéhéneuc,et al.  Fingerprinting design patterns , 2004, 11th Working Conference on Reverse Engineering.

[18]  Yann-Gaël Guéhéneuc,et al.  P-MARt : Pattern-like Micro Architecture Repository , 2007 .

[19]  Ilka Philippow,et al.  An approach for reverse engineering of design patterns , 2004, Software & Systems Modeling.

[20]  Ronald A. Olsson,et al.  Reverse Engineering of Design Patterns from Java Source Code , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[21]  P. David Stotts,et al.  SPQR: flexible automated design pattern extraction from source code , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[22]  Gongjun Yan,et al.  Rule-based detection of design patterns in program code , 2013, International Journal on Software Tools for Technology Transfer.

[23]  Joel Suárez Cansino,et al.  Automatic Design Patterns Identification of C++ Programs , 2002, EurAsia-ICT.

[24]  Yann-Gaël Guéhéneuc,et al.  Efficient identification of design patterns with bit-vector algorithm , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[25]  Krzysztof Stencel,et al.  Detection of Diverse Design Pattern Variants , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[26]  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.

[27]  Alex Blewitt,et al.  HEDGEHOG : automatic verification of design patterns in Java , 2006 .

[28]  Michele Risi,et al.  Design pattern recovery through visual language parsing and source code analysis , 2009, J. Syst. Softw..

[29]  Jing Dong,et al.  DP-Miner: Design Pattern Discovery Using Matrix , 2007, 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS'07).

[30]  Cornelia Boldyreff,et al.  A Method to Recover Design Patterns Using Software Product Metrics , 2000, ICSR.

[31]  Rudolf Ferenc,et al.  BEFRIEND - a benchmark for evaluating reverse engineering tools , 2008 .

[32]  Francesca Arcelli Fontana,et al.  DPB: A Benchmark for Design Pattern Detection Tools , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[33]  Ghulam Rasool,et al.  Design pattern recovery based on annotations , 2010, Adv. Eng. Softw..

[34]  Ioannis Stamelos,et al.  Building and mining a repository of design pattern instances: Practical and research benefits , 2013, Entertain. Comput..

[35]  Kyle G. Brown,et al.  Design reverse-engineering and automated design-pattern detection in Smalltalk , 1996 .

[36]  M Zanoni,et al.  Data mining techniques for design pattern detection. , 2012 .