Design patterns: a survey on their micro‐structures

Design patterns play a significant role in reverse engineering by providing information not only on how but also on why a solution has been implemented in a specific way because of their semantics. The application of design patterns leads to their personalization to a specific context, hence to the generation of variants. This makes their recognition a challenging task, which may be addressed through the understanding and detection of the micro‐structures design patterns are made of. This is very useful for the detection as well as for the application of design patterns. The principal aim of this paper is to present a survey on these micro‐structures and a comparison among them in the perspective of reverse engineering. Because of their less complex structure and behavior, as well as closer link to the source code, the recognition of these micro‐structures may be automated, which can be considered a step towards the automatic recognition of the more complex design patterns. In this paper, we consider four of the most significant types of micro‐structures: elemental design patterns, clues, sub‐patterns, and micro patterns. To analyze the role of the micro‐structures in the design pattern detection process, we make a comparison among these four types of micro‐structures and among the micro‐structures of various types in order to identify the relations among them. Copyright © 2011 John Wiley & Sons, Ltd.

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

[2]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

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

[4]  Lothar Wendehals Improving Design Pattern Instance Recognition by Dynamic Analysis , 2003 .

[5]  Claudia Raibulet,et al.  JADEPT: Behavioral Design Pattern Detection through Dynamic Analysis , 2009, ENASE 2009.

[6]  Rudolf Ferenc,et al.  Recognizing Design Patterns in C++ Programs with the Integration of Columbus and Maisa , 2002, Acta Cybern..

[7]  Tom Mens,et al.  Language-independent detection of object-oriented design patterns , 2004, Comput. Lang. Syst. Struct..

[8]  Alan Bundy,et al.  Automatic verification of Java design patterns , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

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

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

[11]  Claudia Raibulet,et al.  Design Pattern Detection for Reverse Engineering , 2006, 2006 13th Working Conference on Reverse Engineering.

[12]  Ulrich Nickel,et al.  The FUJABA environment , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

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

[14]  Jason McC. Smith An Elemental Design Pattern Catalog , 2004 .

[15]  Armin Biere,et al.  Combined Static and Dynamic Analysis , 2005, AIOOL@VMCAI.

[16]  Albert Zündorf,et al.  An Interactive and Scalable Approach to Design Pattern Recovery , 2003 .

[17]  Jörg Niere Fuzzy logic based interactive recovery of software design , 2002, ICSE '02.

[18]  Claudia Raibulet,et al.  The Joiner: from subcomponents to design patterns , 2006 .

[19]  Wei Wang,et al.  Design pattern detection in Eiffel systems , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

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

[21]  Jim Welsh,et al.  Towards pattern-based design recovery , 2002, ICSE '02.

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

[23]  Yann-Gaël Guéhéneuc Ptidej : Promoting Patterns with Patterns , 2005 .

[24]  Claudia Raibulet,et al.  Elemental Design Patterns Recognition In Java , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

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

[26]  Giuliano Antoniol,et al.  Inference of object-oriented design patterns , 2001, J. Softw. Maintenance Res. Pract..

[27]  William G. Griswold,et al.  Beyond refactoring: a framework for modular maintenance of crosscutting design idioms , 2007, ESEC-FSE '07.

[28]  Claudia Raibulet,et al.  Behavioural Design Pattern detection through dynamic analysis , 2008 .

[29]  Marco Zanoni,et al.  The Marple Project: A tool for Design Patterns Detection and Software Architecture Reconstructiion , 2008 .

[30]  Eleni Stroulia,et al.  Dynamic analysis for reverse engineering and program understanding , 2002, SIAP.