What Do We Know about the Tools of Detecting Design Patterns?

Context: Design patterns are successful reusable solutions to recurring problems within given contexts in software design. Detecting instances of design patterns and their variants favor the activities of software design development and maintenance. Currently, several developed tools are available to support the detection of design patterns and their variants. Objective: To investigate what evidence is available about how the design patterns are detected effectively and what the tools we can have to perform the detection extensively and efficiently. Method: We conducted a systematic mapping study, searching the literature from 2006 to 2018 to identify relevant primary studies about the design patterns detection tools. And then we categorized these studies according to the forms of study employed. Results: From 4 common digital libraries, we identified 195 candidate papers. After applying our inclusion/exclusion criteria resulted in a final set of 27 papers. Conclusion: We investigated the design pattern detection tools in the past decade and generated lessons learnt from the aspects of development language, analysis type, the form of expression of source code and design pattern, detection methods, etc. Moreover, we could understand the tools that have ability to detect variants, and then discover the characteristics of them, which could bring new inspiration to solve variants problems.

[1]  Barbara Kitchenham,et al.  Procedures for Performing Systematic Reviews , 2004 .

[2]  Yanyan Zhang,et al.  A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures , 2015, J. Syst. Softw..

[3]  Michele Risi,et al.  ePadEvo: A tool for the detection of behavioral design patterns , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[4]  Jayadev Gyani,et al.  TECDP: a tool for extracting creational design patterns , 2010, ICWET.

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

[6]  Yann-Gaël Guéhéneuc,et al.  Identification of behavioural and creational design motifs through dynamic analysis , 2010, J. Softw. Maintenance Res. Pract..

[7]  Krzysztof Stencel,et al.  Relaxing queries to detect variants of design patterns , 2013, 2013 Federated Conference on Computer Science and Information Systems.

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

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

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

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

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

[13]  Abbas Rasoolzadegan Barforoush,et al.  The state of the art on design patterns: A systematic mapping of the literature , 2017, J. Syst. Softw..

[14]  Ian Bayley,et al.  Formalising Design Patterns in Predicate Logic , 2007, Fifth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007).

[15]  Shinpei Hayashi,et al.  Design Pattern Detection by Using Meta Patterns , 2008, IEICE Trans. Inf. Syst..

[16]  Fabio Stella,et al.  On applying machine learning techniques for design pattern detection , 2015, J. Syst. Softw..

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

[18]  Vassilios Tzerpos,et al.  Design pattern detection using FINDER , 2015, SAC.

[19]  Michele Risi,et al.  An Eclipse plug-in for the detection of design pattern instances through static and dynamic analysis , 2010, 2010 IEEE International Conference on Software Maintenance.

[20]  Yongtao Sun,et al.  Design pattern detection by template matching , 2008, SAC '08.

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

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

[23]  Gongjun Yan,et al.  Rule-based detection of design patterns in program code , 2013, International Journal on Software Tools for Technology Transfer.

[24]  Günter Kniesel,et al.  DPJF - Design Pattern Detection with High Accuracy , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[25]  Fuat Akal,et al.  Detecting Design Patterns in Object-Oriented Design Models by Using a Graph Mining Approach , 2016, 2016 4th International Conference in Software Engineering Research and Innovation (CONISOFT).

[26]  Hong Zhu,et al.  Tool Support for Design Pattern Recognition at Model Level , 2009, 2009 33rd Annual IEEE International Computer Software and Applications Conference.

[27]  Ghulam Rasool,et al.  A Customizable Approach to Design Patterns Recognition Based on Feature Types , 2014, Arabian Journal for Science and Engineering.

[28]  Boudewijn F. van Dongen,et al.  A Framework to Support Behavioral Design Pattern Detection from Software Execution Data , 2018, ENASE.

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

[30]  Mario Luca Bernardi,et al.  Design pattern detection using a DSL‐driven graph matching approach , 2014, J. Softw. Evol. Process..

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

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

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

[34]  Andreas L. Symeonidis,et al.  DP-CORE: A Design Pattern Detection Tool for Code Reuse , 2016, BMSD 2016.