Design Pattern Detection and Software Architecture Reconstruction: an Integrated Approach based on Software Micro-structures

In this chapter we present some of the main works related to the activities of design pattern detection and software architecture reconstruction, giving also an overview of the major types of approaches. 2.1. Related works on design pattern detection Many different approaches and tools for design pattern detection (DPD) have been presented in the literature. The approaches differ in the kind of analysis pursued on the subject systems, in the algorithms adopted for pattern detection, in the set of patterns they are able to recognize, and in the analysis results, which may differ from one tool to another even while considering the same subject system. Section 2.1.1 considers and discusses different possible approaches and methodologies for DPD, while in Section 2.1.2 we introduce some of the major approaches and tools reported in the literature, giving an organic overview of them. 2.1.1. Categorizations of approaches and methodologies for design pattern detection The detection of design patterns in software systems requires the extraction of meaningful information from these systems and the recognition of patterns starting from this information. Various classifications for design pattern detection solutions and approaches have been presented in the literature, considering various points of view. One major classification consists in categorizing design pattern detection approaches as static, dynamic

[1]  Wolfgang Pree,et al.  Meta Patterns - A Means For Capturing the Essentials of Reusable Object-Oriented Design , 1994, ECOOP.

[2]  A. Chatzigeorgiou,et al.  Identification of Move Method , 2009 .

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

[4]  Yann-Gaël Guéhéneuc,et al.  From a domain analysis to the specification and detection of code and design smells , 2010, Formal Aspects of Computing.

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

[6]  Marco Zanoni,et al.  A Design Pattern Detection Plugin for Eclipse , 2009 .

[7]  Narendra Jussien E-constraints: Explanation-based constraint programming , 2001 .

[8]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

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

[10]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) , 1997 .

[11]  Hausi A. Müller,et al.  Reverse engineering: a roadmap , 2000, ICSE '00.

[12]  Alexander Chatzigeorgiou,et al.  Identification of Move Method Refactoring Opportunities , 2009, IEEE Transactions on Software Engineering.

[13]  Liam O'Brien,et al.  Service-Oriented Migration and Reuse Technique (SMART) , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

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

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

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

[17]  Grace A. Lewis,et al.  Modernizing Legacy Systems - Software Technologies, Engineering Processes, and Business Practices , 2003, SEI series in software engineering.

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

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

[20]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

[21]  Joshua J. Bloch Effective Java : programming language guide , 2001 .

[22]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[23]  Arie van Deursen,et al.  Symphony: view-driven software architecture reconstruction , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[24]  Alexander Chatzigeorgiou,et al.  Identification of Extract Method Refactoring Opportunities , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[25]  Tibor Gyimóthy,et al.  Towards a Benchmark for Evaluating Reverse Engineering Tools , 2008, 2008 15th Working Conference on Reverse Engineering.

[26]  P. Krutchen,et al.  The Rational Unified Process: An Introduction , 2000 .

[27]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

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

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

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

[31]  Paolo Tonella,et al.  ART: an architectural reverse engineering environment , 1999 .

[32]  Rick Kazman,et al.  Playing Detective: Reconstructing Software Architecture from Available Evidence , 1999, Automated Software Engineering.

[33]  Hausi A. Müller,et al.  Understanding Software Systems Using Reverse Engineering Technology , 1994, COODBSE.

[34]  P. Maheshwari,et al.  A Comparison of Four Software Architecture Reconstruction Toolkits , 2004 .

[35]  J. McC Smith,et al.  Elemental design patterns: a formal semantics for composition of OO software architecture , 2002, 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings..

[36]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[37]  Marco Zanoni,et al.  Can design pattern detection be useful for legacy systemmigration towards SOA? , 2008, SDSOA '08.

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

[39]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[40]  Yann-Gaël Guéhéneuc,et al.  A comparative framework for design recovery tools , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

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

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

[43]  Stéphane Ducasse,et al.  Polymetric Views - A Lightweight Visual Approach to Reverse Engineering , 2003, IEEE Trans. Software Eng..

[44]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process , 2001 .

[45]  Radu Marinescu,et al.  Detection strategies: metrics-based rules for detecting design flaws , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

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

[47]  Wolfgang Pree Essential Framework Design Patterns , 2001 .

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

[49]  Tao Xie,et al.  JBOORET: an automated tool to recover OO design and source models , 2001, 25th Annual International Computer Software and Applications Conference. COMPSAC 2001.

[50]  Harald C. Gall,et al.  A comparison of four reverse engineering tools , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[51]  Arie van Deursen,et al.  A Systematic Survey of Program Comprehension through Dynamic Analysis , 2008, IEEE Transactions on Software Engineering.

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

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

[54]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[55]  Liam O'Brien,et al.  Supporting Migration to Services using Software Architecture Reconstruction , 2005, 13th IEEE International Workshop on Software Technology and Engineering Practice (STEP'05).

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

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

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

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

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

[61]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[62]  Dennis B. Smith,et al.  Towards a framework for program understanding , 1996, WPC '96. 4th Workshop on Program Comprehension.

[63]  Francesco Tisato,et al.  A comparison of reverse engineering tools based on design pattern decomposition , 2005, 2005 Australian Software Engineering Conference.

[64]  Kamran Sartipi,et al.  Alborz: An Interactive Toolkit to Extract Static and Dynamic Views of a Software System , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[65]  Hong Yan,et al.  DiscoTect: a system for discovering architectures from running systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[66]  Wei Wang,et al.  DPVK - An Eclipse Plug-in to Detect Design Patterns in Eiffel Systems , 2004, Electron. Notes Theor. Comput. Sci..

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

[68]  Cem Kaner,et al.  Software Engineering Metrics: What Do They Measure and How Do We Know? , 2004 .

[69]  Liming Zhu,et al.  Tool support for just-in-time architecture reconstruction and evaluation: an experience report , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[70]  Liam O'Brien,et al.  Model-centric software architecture reconstruction , 2006 .

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

[72]  Liam O'Brien,et al.  Software Architecture Reconstruction: Practice Needs and Current Approaches , 2002 .

[73]  Jens Dietrich,et al.  Towards a web of patterns , 2007, J. Web Semant..

[74]  Stéphane Ducasse,et al.  Towards A Process-Oriented Software Architecture Reconstruction Taxonomy , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[75]  Welf Löwe,et al.  Efficient and Accurate Software Pattern Detection , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

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

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

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

[79]  Michele Risi,et al.  Design pattern recovery by visual language parsing , 2005, Ninth European Conference on Software Maintenance and Reengineering.

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

[81]  Arie van Deursen,et al.  Software architecture reconstruction , 2004, Proceedings. 26th International Conference on Software Engineering.

[82]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction , 1998 .

[83]  Dirk Beyer,et al.  Efficient relational calculation for software analysis , 2005, IEEE Transactions on Software Engineering.

[84]  Alexander Chatzigeorgiou,et al.  Identification of refactoring opportunities introducing polymorphism , 2010, J. Syst. Softw..