Abstract
Nowadays, software engineers have a great tendency to use design patterns (DPs) because they are considered to have an important role in software engineering in the sense that they can make the understanding of nonentities easier. However, most of the systems have no document helping engineers recognize DPs from the codes. As a result, different approaches for design pattern detection have been suggested. The current paper reviews different available literature on design pattern detection and reports a number of different aspects of them such as data representation, type of design pattern, advantages and disadvantages for different approaches, quantitative results, etc. The current paper reviews research studies published between 2008 until 2019 and represents a list of datasets used for evaluations. The present investigation paper is not only to lay the ground for the selection of the optimal design patterns, but also hopes to guide the future studies through raising awareness about the potential defects in the previous researches.
Similar content being viewed by others
References
Aladib L, Lee S (2018) Pattern detection and design rationale traceability: an integrated approach to software design quality. IET Softw 13:249–259
Alhusain S, Coupland S, John R, Kavanagh M (2013a) Towards machine learning based design pattern recognition. In: 2013 13th UK workshop on computational intelligence (UKCI). IEEE, pp 244–251
Alhusain S, Coupland S, John R, Kavanagh M (2013b) Design pattern recognition by using adaptive neuro fuzzy inference system. In: 2013 IEEE 25th international conference on tools with artificial intelligence (ICTAI). IEEE, pp 581–587
Alnusair A, Zhao T (2009) Towards a model-driven approach for reverse engineering design patterns. In Proceedings of the 2nd international workshop on transforming and weaving ontologies in MDE (TWOMDE 2009), Denver, Colorado, USA, vol. 531, p 130
Alnusair A, Zhao T (2010) Using semantic inference for software understanding and design recovery. In: 2010 seventh international conference on information technology: new generations (ITNG). IEEE, pp 980–985
Alnusair A, Zhao T, Yan G (2013) Automatic recognition of design motifs using semantic conditions. In: Proceedings of the 28th annual acm symposium on applied computing. ACM, pp 1062–1067
Alnusair A, Zhao T, Yan G (2014) Rule-based detection of design patterns in program code. Int J Softw Tools Technol Transf 16(3):315–334
Al-Obeidallah M, Petridis M, Kapetanakis S (2016) A survey on design pattern detection. Int J Softw Eng (IJSE) 7(3):41–59
Al-Obeidallah MG, Petridis M, Kapetanakis S (2017a) A structural rule-based approach for design patterns recovery. In international conference on software engineering research, management and applications. Springer, Cham, pp 107–124
Al-Obeidallah M, Petridis M, Kapetanakis S (2017b) MLDA: a multiple levels detection approach for design patterns recovery. In: Proceedings of the international conference on compute and data analysis. ACM, pp 33–40
Alshira’h M (2017) Detection a design pattern through merge static and dynamic analysis using altova and lambdes tools. Int J Appl Eng Res 12(19):8518–8522
Arcelli F, Tosi C, Zanoni M, Maggioni S (2008) The MARPLE project: a tool for design pattern detection and software architecture reconstruction. In: 1st international workshop on academic software development tools and techniques (WASDeTT-1), pp 325–334
Ba-Brahem AS, Qureshi M (2014) The proposal of improved inexact isomorphic graph algorithm to detect design patterns. arXiv preprint arXiv:1408.6147
Bashir A, Rasool G, Bashir K, Ali AH (2013) Design patterns and documentation recovery based on attributes. Int J Soft Comput Softw Eng 3(3):149–155
Bayley I, Zhu H (2010) Formal specification of the variants and behavioural features of design patterns. J Syst Softw 83(2):209–221
Bernardi, ML, Di Lucca GA (2010) Model-driven detection of design patterns. In: 2010 IEEE international conference on software maintenance (ICSM). IEEE, pp 1–5
Bernardi ML, Cimitile M, Di Lucca GA (2013) A model-driven graph-matching approach for design pattern detection. In: 2013 20th working conference on reverse engineering (WCRE). IEEE, pp 172–181
Bernardi ML, Cimitile M, Di Lucca G (2014) Design pattern detection using a DSL-driven graph matching approach. J Softw Evol Process 26(12):1233–1266
Bernardi ML, Cimitile M, De Ruvo G, Di Lucca GA, Santone A (2015) Improving design patterns finder precision using a model checking approach. In: CAiSE forum, pp 113–120
Binun A, Kniesel G (2012a) DPJF-design pattern detection with high accuracy. In: 2012 16th European conference on software maintenance and reengineering (CSMR). IEEE, pp 245–254
Binun A, Kniesel G (2012b) Joining forces for higher precision and recall of design pattern detection. CS Department III, University of Bonn, Germany, Technical report IAI-TR-2012-01
Bouassida N, Ben-Abdallah H (2009) Design improvement through dynamic and Structural pattern identification. In: Proceedings of the third international conference on innovation and information and communication technology. BCS Learning & Development Ltd., pp 4–4
Bouassida N, Ben-Abdallah H (2010a) A new approach for pattern problem detection. In: International conference on advanced information systems engineering. Springer, Berlin, pp 150–164
Bouassida N, Ben-Abdallah H (2010b) Pattern and spoiled pattern detection through an information retrieval approach. J Emerg Technol Web Intell 2(3):167
Chaturvedi A, Gupta M, Gupta SK (2016) Design pattern detection using genetic algorithm for sub-graph isomorphism to enhance software reusability. Int J Comput Appl 135(4):33–36
Chaturvedi A, Gupta M, Gupta SK (2018) DPVO: design pattern detection using vertex ordering a case study in JHotDraw with documentation to improve reusability. In: International conference on communication, networks and computing. Springer, Singapore, pp 452–465
Chen L, Qiu M (2010) An algorithm for automatic mining design pattern. In: 2010 5th international conference on computer science and education (ICCSE). IEEE, pp 1860–1864
Chihada A, Jalili S, Hasheminejad SMH, Zangooei MH (2015) Source code and design conformance, design pattern detection from source code by classification approach. Appl Soft Comput 26:357–367
Czibula IG, Czibula G (2008) Identifying design patterns in object-oriented software systems using unsupervised learning. In: IEEE International conference on automation, quality and testing, robotics, 2008, AQTR 2008, vol. 3. IEEE, pp 347–352
Dabain H, Manzer A, Tzerpos V (2015) Design pattern detection using FINDER. In: Proceedings of the 30th annual acm symposium on applied computing. ACM, pp 1586–1593
De Lucia A, Deufemia V, Gravino C, Risi M (2009a) Design pattern recovery through visual language parsing and source code analysis. J Syst Softw 82(7):1177–1193
De Lucia A, Deufemia V, Gravino C, Risi M (2009b) Behavioral pattern identification through visual language parsing and code instrumentation. In: 13th European conference on software maintenance and reengineering 2009 CSMR’09. IEEE, pp 99–108
De Lucia A, Deufemia V, Gravino C, Risi M (2010a) Improving behavioral design pattern detection through model checking. In: 2010 14th European conference on software maintenance and reengineering. IEEE, pp 176–185
De Lucia A, Deufemia V, Gravino C, Risi M (2010b) An eclipse plug-in for the detection of design pattern instances through static and dynamic analysis. In: 2010 IEEE international conference on software maintenance (ICSM). IEEE, pp 1–6
De Lucia A, Deufemia V, Gravino C, Risi M, Pirolli C (2015a) ePadEvo: a tool for the detection of behavioral design patterns. In: 2015 IEEE international conference on software maintenance and evolution (ICSME). IEEE, pp 327–329
De Lucia A, Deufemia V, Gravino C, Risi M (2015b) Towards automating dynamic analysis for behavioral design pattern detection. In: 2015 IEEE international conference on software maintenance and evolution (ICSME). IEEE, pp 161–170
Di Martino B, Esposito A (2013) Automatic recognition of design patterns from UML-based software documentation. In: Proceedings of international conference on information integration and web-based applications and services. ACM
Di Martino B, Esposito A (2016) A rule-based procedure for automatic recognition of design patterns in UML diagrams. Softw Pract Exp 46(7):983–1007
Dong J, Lad DS, Zhao Y (2007) DP-Miner: design pattern discovery using matrix. In: 14th Annual IEEE international conference and workshops on engineering of computer-based systems, 2007, ECBS’07. IEEE, pp 371–380
Dong J, Sun Y, Zhao Y (2008a) Compound record clustering algorithm for design pattern detection by decision tree learning. In: IEEE international conference on information reuse and integration, IRI 2008. IEEE, pp 226–231
Dong J, Sun Y, Zhao Y (2008b) Design pattern detection by template matching. In: Proceedings of the 2008 ACM symposium on applied computing. ACM, pp 765–769
Dong J, Zhao Y, Peng T (2009a) A review of design pattern mining techniques. Int J Softw Eng Knowl Eng 19(06):823–855
Dong J, Zhao Y, Sun Y (2009b) A matrix-based approach to recovering design patterns. IEEE Trans Syst Man Cybern Part A Syst Hum 39(6):1271–1282
Dwivedi AK, Tirkey A, Rath SK (2016) Applying software metrics for the mining of design pattern. In: 2016 IEEE Uttar Pradesh section international conference on electrical, computer and electronics engineering (UPCON). IEEE, pp 426–431
Dwivedi AK, Tirkey A, Ray RB, Rath SK (2016) Software design pattern recognition using machine learning techniques. In Region 10 conference (TENCON), 2016 IEEE. IEEE, pp 222–227
Dwivedi AK, Tirkey A, Rath SK (2018) Software design pattern mining using classification-based techniques. Front Comput Sci 12(5):908–922
Elaasar M, Briand LC, Labiche Y (2015) VPML: an approach to detect design patterns of MOF-based modeling languages. Softw Syst Model 14(2):735–764
Fontana FA, Zanoni M (2011) A tool for design pattern detection and software architecture reconstruction. Inf Sci 181(7):1306–1324
Fontana FA, Maggioni S, Raibulet C (2011) Understanding the relevance of micro-structures for design patterns detection. J Syst Softw 84(12):2334–2347
Freeman E, Robson E, Bates B, Sierra K (2004) head first design patterns: a brain-friendly guide. O’Reilly Media Inc., Sebastopol
Gamma E (1995) Design patterns: elements of reusable object-oriented software. Pearson Education India, New York
García A, Velasco-Elizondo P, Zamarrón JM (2013) Applying social network analysis metrics to software design patterns detection. In: ASNA 2013 applications of social network analysis, University of Zurich
Gautam AK, Diwaker S (2012) Automatic detection of software design patterns from reverse engineering. Springer, Berlin
Guéhéneuc YG (2007) P-mart: pattern-like micro architecture repository. In: Proceedings of the 1st EuroPLoP focus group on pattern repositories, pp 1–3
Guéhéneuc YG, Antoniol G (2008) Demima: a multilayered approach for design pattern identification. IEEE Trans Softw Eng 34(5):667–684
Guéhéneuc YG, Guyomarćh JY, Sahraoui H (2010) Improving design-pattern identification: a new approach and an exploratory study. Softw Qual J 18(1):145–174
Gupta M (2011) Design pattern mining using greedy algorithm for multi-labelled graphs. Int J Inf Commun Technol 3(4):314–323
Gupta M (2017) A technique for design patterns detection. Indian J Comput Sci Eng (IJCSE) 8(3)
Gupta M, Rao RS (2014) Design pattern mining by product of sum (POS) expression for graphs. Int J Comput Appl. https://doi.org/10.5120/14856-3223
Gupta M, Pande A, Rao RS, Tripathi AK (2010a) Design pattern detection by normalized cross correlation. In: 2010 international conference on methods and models in computer science (ICM2CS). IEEE, pp 81–84
Gupta M, Rao RS, Tripathi AK (2010b) Design pattern detection using inexact graph matching. In: 2010 international conference on communication and computational intelligence (INCOCCI). IEEE, pp 211–217
Gupta M, Pande A, Tripathi AK (2011b) Design patterns detection using SOP expressions for graphs. ACM SIGSOFT Softw Eng Notes 36(1):1–5
Han Z, Wang L, Yu L, Chen X, Zhao J, Li X (2009) Design pattern directed clustering for understanding open source code. In: IEEE 17th international conference on program comprehension, 2009, ICPC’09. IEEE, pp 295–296
Hayashi S, Katada J, Sakamoto R, Kobayashi T, Saeki M (2008) Design pattern detection by using meta patterns. IEICE Trans Inf Syst 91(4):933–944
Hussain S, Keung J, Khan AA (2017) Software design patterns classification and selection using text categorization approach. Appl Soft Comput 58:225–244
Hussain S, Keung J, Sohail MK, Khan AA, Ilahi M (2019) Automated framework for classification and selection of software design patterns. Appl Soft Comput 75:1–20
Issaoui I, Bouassida N, Ben-Abdallah H (2015) Using metric-based filtering to improve design pattern detection approaches. Innov Syst Softw Eng 11(1):39–53
Issaoui I, Bouassida N, Ben-Abdallah H (2016) Predicting the existence of design patterns based on semantics and metrics. Int Arab J Inf Technol 13(2):310–319
Kaczor O, Guéhéneuc YG, Hamel S (2010) Identification of design motifs with pattern matching algorithms. Inf Softw Technol 52(2):152–168
Karam M, Aljahdali S, Mcheick H, Abdallah R, Ollaic H (2014) Graph transformation rules with weight and fuzzy logic for better design pattern recognition. Int J Comput Inf Technol 3
Kirasić D, Basch D (2008) Ontology-based design pattern recognition. In: International conference on knowledge-based and intelligent information and engineering systems. Springer, Berlin, pp 384–393
Kitchenham B, Charters S (2007) Guidelines for performing systematic literature reviews in software engineering
Kniesel G, Binun A (2009a) Witnessing patterns: a data fusion approach to design pattern detection. CS Department III, University of Bonn, Germany, Technical report IAI-TR-2009-02, ISSN, 0944-8535
Kniesel G, Binun A (2009b) Standing on the shoulders of giants---a data fusion approach to design pattern detection. In: IEEE 17th international conference on program comprehension, 2009, ICPC’09. IEEE, pp 208–217
Lavender RG, Schmidt DC (1995) Active object—an object behavioral pattern for concurrent programming
Lebon M, Tzerpos V (2012) Fine-grained design pattern detection. In: 2012 IEEE 36th annual computer software and applications conference (COMPSAC). IEEE, pp 267–272
Lee H, Youn H, Lee E (2008) A design pattern detection technique that aids reverse engineering. Int J Secur Appl 2(1):1–12
Liamwiset C, Wiwat V (2013) Detection of design patterns in software design model using graph. In: Applied mechanics and materials, vol. 411. Trans Tech Publications, pp 559–562
Liu C, van Dongen BF, Assy N, van der Aalst WM (2018a) A framework to support behavioral design pattern detection from software execution data. In: ENASE, pp 65–76
Liu C, van Dongen BF, Assy N, van der Aalst WM (2018b) A framework to support behavioral design pattern detection from software execution data. In: ENASE, pp 65–76
Luitel G, Stephan M, Inclezan D (2016) Model level design pattern instance detection using answer set programming. In: Proceedings of the 8th international workshop on modeling in software engineering. ACM, pp 13–19
Majtás LU (2011) Contribution to the creation and recognition of the design patterns instances. Inf Sci Technol Bull ACM Slovak 3(1):84–92
Mattson TG, Sanders B, Massingill B (2004) Patterns for parallel programming. Pearson Education, New York
Mayvan BB, Rasoolzadegan A (2017) Design pattern detection based on the graph theory. Knowl Based Syst 120:211–225
Nagy A, Kovari B (2015) Programming language neutral design pattern detection. In: 2015 16th IEEE international symposium on computational intelligence and informatics (CINTI). IEEE, pp 215–219
Ng JKY, Guéhéneuc YG, Antoniol G (2010) Identification of behavioural and creational design motifs through dynamic analysis. J Softw Evol Process 22(8):597–627
Oruc M, Akal F, Sever H (2016) Detecting design patterns in object-oriented design models by using a graph mining approach. In: 2016 4th international conference on software engineering research and innovation (CONISOFT). IEEE, pp 115–121
Pande A, Gupta M, Tripathi AK (2010a) A new approach for detecting design patterns by graph decomposition and graph isomorphism. Contemporary computing, pp 108–119
Pande A, Gupta M, Tripathi AK (2010b) DNIT—a new approach for design pattern detection. In: 2010 international conference on computer and communication technology (ICCCT). IEEE, pp 545–550
Pande A, Gupta M, Tripathi AK (2010c) A decision tree approach for design patterns detection by subgraph isomorphism. In: International conference on advances in information and communication technologies. Springer, Berlin, pp 561–564
Panich A, Vatanawood W (2016) Detection of design patterns from class diagram and sequence diagrams using ontology. In: 2016 IEEE/ACIS 15th international conference on computer and information science (ICIS). IEEE, pp 1–6
Paydar S, Kahani M (2012) A semantic web based approach for design pattern detection from source code. In: 2012 2nd international econference on computer and knowledge engineering (ICCKE). IEEE, pp 289–294
Pradhan P, Dwivedi AK, Rath SK (2015) Detection of design pattern using graph isomorphism and normalized cross correlation. In: 2015 Eighth international conference on contemporary computing (IC3). IEEE, pp 208–213
Priya RK (2014) A survey: design pattern detection approaches with metrics. In: 2014 IEEE national conference on emerging trends in new and renewable energy sources and energy management (NCET NRES EM). IEEE, pp 22–26
Qiu M, Jiang Q, Gao A, Chen E, Qiu D, Chai S (2010) Detecting design pattern using subgraph discovery. In: Asian conference on intelligent information and database systems. Springer, Berlin, pp 350–359
Rasool G, Mäder P (2011) Flexible design pattern detection based on feature types. In: 2011 26th IEEE/ACM international conference on automated software engineering (ASE). IEEE, pp 243–252
Rasool G, Mäder P (2014) A customizable approach to design patterns recognition based on feature types. Arab J Sci Eng 39(12):8851–8873
Rasool G, Philippow I, Mäder P (2010) Design pattern recovery based on annotations. Adv Eng Softw 41(4):519–526
Ren W, Zhao W (2012) An observer design-pattern detection technique. In: 2012 IEEE international conference on computer science and automation engineering (CSAE), vol. 3. IEEE
Riaz M, Breaux T, Williams L (2015) How have we evaluated software pattern application? A systematic mapping study of research design practices. Inf Softw Technol 65:14–38
Robinson A, Bates C (2016) Recovering design patterns from large codebases. In: Proceedings of international conference on computer science education innovation & technology (CSEIT). Global Science and Technology Forum, p 136
Romano S, Scanniello G, Risi M, Gravino C (2011) Clustering and lexical information support for the recovery of design pattern in source code. In: 2011 27th IEEE international conference on software maintenance (ICSM). IEEE, pp 500–503
Sebastian F (2002) Machine learning in automated text categorization. J ACM Comput Surv (CSUR) 34:1–47
Stencel K, Wegrzynowicz P (2008) Detection of diverse design pattern variants. In: Software engineering conference, 2008, APSEC’08, 15th Asia-Pacific. IEEE, pp 25–32
Stephan M, Cordy JR (2015) Identifying instances of model design patterns and antipatterns using model clone detection. In: 2015 IEEE/ACM 7th international workshop on modeling in software engineering (MiSE). IEEE, pp 48–53
Stoianov A, Şora I (2010) Detecting patterns and antipatterns in software using prolog rules. In: 2010 International joint conference on computational cybernetics and technical informatics (ICCC-CONTI). IEEE, pp 253–258
Thaller H, Linsbauer L, Egyed A (2019) Feature maps: a comprehensible software representation for design pattern detection. In: 2019 IEEE 26th international conference on software analysis, evolution and reengineering (SANER), pp 207–21
Thankappan J, Patil V (2015) Detection of web design patterns using reverse engineering. In: 2015 Second international conference on advances in computing and communication engineering (ICACCE). IEEE, pp 697–701
Thongrak M, Vatanawood W (2014) Detection of design pattern in class diagram using ontology. In: Computer science and engineering conference (ICSEC). IEEE, pp 97–102
Tramontana E (2014) Detecting extra relationships for design patterns roles. In: Proceedings of AsianPlop, Tokyo, Japan
Tripathi V, Mahesh TSG, Srivastava A (2009) Performance and language compatibility in software pattern detection. In 2009 IEEE international conference on advance computing, IACC 2009. IEEE, pp 1639–1643
Tsantalis N, Chatzigeorgiou A, Stephanides G, Halkidis ST (2006) Design pattern detection using similarity scoring. IEEE Trans Softw Eng 32(11):896–909
Uchiyama S, Washizaki H, Fukazawa Y, Kubo A (2011) Design pattern detection using software metrics and machine learning. In: First international workshop on model-driven software migration (MDSM 2011), p 38
Uchiyama S, Kubo A, Washizaki H, Fukazawa Y (2014) Detecting design patterns in object-oriented program source code by using metrics and machine learning. J Softw Eng Appl 7(12):983
von Detten M (2011) Towards systematic, comprehensive trace generation for behavioral pattern detection through symbolic execution. In: Proceedings of the 10th ACM SIGPLAN-SIGSOFT workshop on program analysis for software tools. ACM, pp 17–20
von Detten M, Becker S (2011) Combining clustering and pattern detection for the reengineering of component-based software systems. In: Proceedings of the joint ACM SIGSOFT conference–QoSA and ACM SIGSOFT symposium–ISARCS on quality of software architectures–QoSA and architecting critical systems–ISARCS. ACM, pp 23–32
von Detten M, Platenius MC (2009) Improving dynamic design pattern detection in reclipse with set objects. In: Proceedings of the 7th international Fujaba days, pp 15–19
Wang L, Han Z, He J, Wang H, Li X (2012a) Recovering design patterns to support program comprehension. In: Proceedings of the 2nd international workshop on evidential assessment of software technologies. ACM, pp 49–54
Wang Y, Guo H, Liu H, Abraham A (2012b) A fuzzy matching approach for design pattern mining. J Intell Fuzzy Syst 23(2–3):53–60
Wegrzynowicz P, Stencel K (2013) Relaxing queries to detect variants of design patterns. In: 2013 federated conference on computer science and information systems (FedCSIS). IEEE, pp 1571–1578
Wierda A, Dortmans E, Somers L (2008) Pattern detection in object-oriented source code. In: Software and data technologies. Springer, Berlin, pp 141–158
Yu D, Zhang Y, Ge J, Wu W (2013a) From sub-patterns to patterns: an approach to the detection of structural design pattern instances by subgraph mining and merging. In: 2013 IEEE 37th annual computer software and applications conference (COMPSAC). IEEE, pp 579–588
Yu D, Ge J, Wu W (2013b) Detection of design pattern instances based on graph isomorphism. In: 2013 4th IEEE international conference on software engineering and service science (ICSESS). IEEE, pp 874–877
Yu D, Zhang Y, Chen Z (2015) A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures. J Syst Softw 103:1–16
Yu D, Zhang P, Yang J, Chen Z, Liu C, Chen J (2018) Efficiently detecting structural design pattern instances based on ordered sequences. J Syst Softw 142:35–56
Zanoni M, Fontana FA, Stella F (2015) On applying machine learning techniques for design pattern detection. J Syst Softw 103:102–117
Zhang P, Yu D, Wang J (2017) A degree-driven approach to design pattern mining based on graph matching. In: 2017 24th Asia-Pacific software engineering conference (APSEC). IEEE, pp 179–188
Zhu H, Bayley I, Shan L, Amphlett R (2009) Tool support for design pattern recognition at model level. In: 2009 33rd Annual IEEE International Computer Software and Applications Conference, 2009, COMPSAC’09, vol. 1. IEEE, pp. 228–233
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Appendix
Appendix
See Table 16.
Rights and permissions
About this article
Cite this article
Yarahmadi, H., Hasheminejad, S.M.H. Design pattern detection approaches: a systematic review of the literature. Artif Intell Rev 53, 5789–5846 (2020). https://doi.org/10.1007/s10462-020-09834-5
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10462-020-09834-5