A Customizable Approach to Design Patterns Recognition Based on Feature Types

Accurate recognition of design patterns from source code supports development-related tasks such as program comprehension, maintenance, reverse engineering, and re-engineering. Researchers focused on this problem for many years, and a variety of recognition approaches have been proposed. Though, much progress has been made, we still identify a lack of flexibility and accuracy in the pattern recognition process. This paper evaluates different design pattern recovery approaches and examines the detection accuracy of these approaches. We found that the major impedance in the accurate recovery of design patterns is the large number of variations for implementing the same pattern. Furthermore, we realized that the combination of multiple searching techniques is required to improve accuracy of pattern detection. Based on these observations, we propose variable pattern definitions, which can be customized and improved towards a pattern catalog that detects patterns in all their variations. The customizable pattern definitions are created from reusable feature types. Each feature type can use one or more searching techniques for efficient detection. The proposed approach supports detection of patterns from multiple programming languages. A prototype implementation of the approach was tested on seven different open-source software projects. For each software project, a baseline was determined and the trustworthiness of each pattern–project combination was rated. The extracted results have been compared with established baselines and with the results of previous techniques.

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

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

[3]  F. Arcelli,et al.  Enhancing Software Evolution through Design Pattern Detection , 2007, Third International IEEE Workshop on Software Evolvability 2007.

[4]  Michele Risi,et al.  Improving Behavioral Design Pattern Detection through Model Checking , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

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

[6]  Welf Löwe,et al.  Generating design pattern detectors from pattern specifications , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

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

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

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

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

[11]  Claudia Raibulet,et al.  Understanding the relevance of micro-structures for design patterns detection , 2011, J. Syst. Softw..

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

[13]  Hong Zhu,et al.  Formal specification of the variants and behavioural features of design patterns , 2010, J. Syst. Softw..

[14]  Tian Zhao,et al.  Towards a Model-driven Approach for Reverse Engineering Design Patterns , 2009, TWOMDE@MoDELS.

[15]  Ghulam Rasool,et al.  Flexible design pattern detection based on feature types , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

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

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

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

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

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

[21]  Ioannis Stamelos,et al.  Research state of the art on GoF design patterns: A mapping study , 2013, J. Syst. Softw..

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

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

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

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

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

[27]  Günter Kniesel,et al.  Standing on the shoulders of giants - A data fusion approach to design pattern detection , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[28]  Francesca Arcelli Fontana,et al.  A Benchmark Platform for Design Pattern Detection , 2010 .

[29]  Tibor Gyimóthy,et al.  Towards a Benchmark for Evaluating Design Pattern Miner Tools , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[30]  Jing Dong,et al.  A Review of Design Pattern Mining Techniques , 2009, Int. J. Softw. Eng. Knowl. Eng..

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

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

[33]  Claudia Raibulet,et al.  Design patterns: a survey on their micro‐structures , 2013, J. Softw. Evol. Process..

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

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

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

[37]  James M. Bieman,et al.  Design patterns and change proneness: an examination of five evolving systems , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).