A model-driven graph-matching approach for design pattern detection

In this paper an approach to automatically detect Design Patterns (DPs) in Object Oriented systems is presented. It allows to link system's source code components to the roles they play in each pattern. DPs are modelled by high level structural properties (e.g. inheritance, dependency, invocation, delegation, type nesting and membership relationships) that are checked against the system structure and components. The proposed metamodel also allows to define DP variants, overriding the structural properties of existing DP models, to improve detection quality. The approach was validated on an open benchmark containing several open-source systems of increasing sizes. Moreover, for other two systems, the results have been compared with the ones from a similar approach existing in literature. The results obtained on the analyzed systems, the identified variants and the efficiency and effectiveness of the approach are thoroughly presented and discussed.

[1]  Joakim Nivre,et al.  Evaluation of Accuracy in Design Pattern Occurrence Detection , 2010, IEEE Transactions on Software Engineering.

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

[3]  Eunseok Lee,et al.  Automatic Detection of Design Pattern for Reverse Engineering , 2007, 5th ACIS International Conference on Software Engineering Research, Management & Applications (SERA 2007).

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

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

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

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

[8]  Dirk Beyer,et al.  Relational programming with CrocoPat , 2006, ICSE.

[9]  Marco Torchiano,et al.  Empirical studies in reverse engineering: state of the art and future trends , 2007, Empirical Software Engineering.

[10]  Mario Luca Bernardi,et al.  Model-driven detection of Design Patterns , 2010, 2010 IEEE International Conference on Software Maintenance.

[11]  Ghulam Rasool,et al.  A Survey on Design Pattern Recovery Techniques , 2011 .

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

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

[14]  Maayan Goldstein,et al.  System Grokking - A Novel Approach for Software Understanding, Validation, and Evolution , 2009, NGITS.

[15]  Yann-Gaël Guéhéneuc,et al.  Improving design-pattern identification: a new approach and an exploratory study , 2010, Software Quality Journal.

[16]  Jing Dong,et al.  Architecture and Design Pattern Discovery Techniques - A Review , 2007, Software Engineering Research and Practice.

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

[18]  Michael Philippsen,et al.  Two Controlled Experiments Assessing the Usefulness of Design Pattern Documentation in Program Maintenance , 2002, IEEE Trans. Software Eng..

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

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

[21]  Yongtao Sun,et al.  A Matrix-Based Approach to Recovering Design Patterns , 2009, IEEE Transactions on Systems, Man, and Cybernetics - Part A: Systems and Humans.

[22]  W. Schafer,et al.  Towards pattern-based design recovery , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[23]  Paul Klint,et al.  The syntax definition formalism SDF—reference manual— , 1989, SIGP.

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

[25]  Francesca Arcelli Fontana,et al.  A tool for design pattern detection and software architecture reconstruction , 2011, Inf. Sci..

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