Design pattern recovery through visual language parsing and source code analysis

In this paper we propose an approach for recovering structural design patterns from object-oriented source code. The recovery process is organized in two phases. In the first phase, the design pattern instances are identified at a coarse-grained level by considering the design structure only and exploiting a parsing technique used for visual language recognition. Then, the identified candidate patterns are validated by a fine-grained source code analysis phase. The recognition process is supported by a tool, namely design pattern recovery environment, which allowed us to assess the retrieval effectiveness of the proposed approach on six public-domain programs and libraries.

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

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

[3]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.

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

[5]  Carl Alphonce,et al.  QuickUML: a beginner's UML tool , 2002, OOPSLA '02.

[6]  Michele Risi,et al.  Analyzing Software Evolution through Design Pattern Evolution: A Preliminary Study , 2006 .

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

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

[9]  Rudolf Ferenc,et al.  Design pattern mining enhanced by machine learning , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

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

[11]  Giuliano Antoniol,et al.  Object-oriented design patterns recovery , 2001, J. Syst. Softw..

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

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

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

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

[16]  Lerina Aversano,et al.  An empirical study on the evolution of design patterns , 2007, ESEC-FSE '07.

[17]  Michele Risi,et al.  Behavioral Pattern Identification through Visual Language Parsing and Code Instrumentation , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

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

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

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

[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]  Linda Mary Wills,et al.  Automated program recognition by graph parsing , 1992 .

[23]  Genny Tortora,et al.  A Parsing Methodology for the Implementation of Visual Systems , 1997, IEEE Trans. Software Eng..

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

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

[26]  Ettore Merlo,et al.  Experiment on the automatic detection of function clones in a software system using metrics , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[27]  Gennaro Costagliola,et al.  A framework for modeling and implementing visual notations with applications to software engineering , 2004, TSEM.

[28]  Forrest Shull,et al.  AN INDUCTIVE METHOD FOR DISCOVERING DESIGN PATTERNS FROM OBJECT-ORIENTED SOFTWARE SYSTEMS , 1998 .

[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]  Andrea De Lucia,et al.  A Classification Framework to Support the Design of Visual Languages , 2002, J. Vis. Lang. Comput..

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

[32]  Jing Dong,et al.  Experiments on Design Pattern Discovery , 2007, Third International Workshop on Predictor Models in Software Engineering (PROMISE'07: ICSE Workshops 2007).

[33]  Rudolf K. Keller,et al.  Pattern visualization for software comprehension , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[34]  Michele Risi,et al.  Case studies of visual language based design patterns recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

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

[36]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

[37]  Michele Risi,et al.  A Two Phase Approach to Design Pattern Recovery , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[38]  Rudolf Ferenc,et al.  Evaluating C++ Design Pattern Miner Tools , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[39]  Beszé Columbus - Reverse Engineering Tool and Schema for C++ , 2002 .

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