Home   >   CSC-OpenAccess Library   >    Manuscript Information
Full Text Available

This is an Open Access publication published under CSC-OpenAccess Policy.
Publications from CSC-OpenAccess Library are being accessed from over 74 countries worldwide.
A Survey on Design Pattern Detection Approaches
Mohammed Ghazi Al-Obeidallah, Miltos Petridis, Stelios Kapetanakis
Pages - 41 - 59     |    Revised - 30-11-2016     |    Published - 31-12-2016
Volume - 7   Issue - 3    |    Publication Date - December 2016  Table of Contents
Design Patterns, Detection, Reverse Engineering, Gang of Four, Patterns Recovery, Survey.
Design patterns play a key role in software development process. The interest in extracting design pattern instances from object-oriented software has increased tremendously in the last two decades. Design patterns enhance program understanding, help to document the systems and capture design trade-offs.

This paper provides the current state of the art in design patterns detection. The selected approaches cover the whole spectrum of the research in design patterns detection. We noticed diverse accuracy values extracted by different detection approaches. The lessons learned are listed at the end of this paper, which can be used for future research directions and guidelines in the area of design patterns detection.
CITED BY (2)  
1 Derezi?ska, A., & Byczkowski, M. (2018, September). Enhancements of Detecting Gang-of-Four Design Patterns in C# Programs. In International Conference on Information Systems Architecture and Technology (pp. 277-286). Springer, Cham.
2 Dolz, M. F., Astorga, D. D. R., Fernández, J., García, J. D., & Carretero, J. (2018). Towards Automatic Parallelization of Stream Processing Applications. IEEE Access, 6, 39944-39961.
1 Google Scholar  
2 CiteSeerX 
3 Scribd 
4 SlideShare 
5 PdfSR 
1 Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995.
2 G. Rasool, I. Philippow, P. Mader, "Design Pattern Recovery Based on Annotations". International Journal of advances in Engineering Software, Vol 41, Issue 4, 2010, pp. 519- 526.
3 K. Stencel, and P. Wegrzynowicz, "Detection of Diverse Design Pattern Variants", 15th Asia-Pacific Software Engineering Conference, 2008, pp. 25-32.
4 M. Vokac, " An efficient tool for recovering design patterns from C++ code", Journal of Object Technology, Volume 5, No. 1, 2006, pp. 139-157.
5 Scientific Tool works Inc. Understand for C++, 2003.
6 Rudolf K. Keller, Reinhard Schauer, Sebastien Robitaille, and Patrick Page; Pattern based reverse-engineering of design components. In ICSE 99: Proceedings of the 21st International Conference on Software Engineering, pages 226-235, Los Alamitos, CA, USA, 1999. IEEE Computer Society Press.
7 Paakki J., Karhinen A., Gustafsson J., Nenonen L. and Verkamo A.I., Software metrics by architectural pattern mining, Proceedings of the International Conference on Software: Theory and Practice (16th IFIP World Computer Congress), 2000, 325-332.
8 Niere, J., Shafer, W., Wadsack, J.P., Wendehals, L., Walsh, J., 2002. Towards pattern design recovery. In: Proceedings of International Conference on Software Engineering (ICSE'02), Orlando, FL, USA, pp. 338-348.
9 G. Antoniol, R. Fiutem, and L. Cristoforetti, "Design pattern recovery in object-oriented software", In Proceedings of the 6th international workshop on program comprehension, 1998, pp. 153-160.
10 M. V. Detten, and S. Becker, "Combining Clustering and Pattern Detection for the Reengineering of Component-based Software Systems", In Proceedings of the 7th International Conference on the Quality of Software Architectures, QoSA, pp. 23-32, 2011.
11 Uchiyama, S., Kubo, A., Washizaki, H., and Fukazawa, Y. (2014). Detecting Design Patterns in Object-Oriented Program Source Code by Using Metrics and Machine Learning. Journal of Software Engineering and Applications, 7, 983-998. doi: 10.4236/jsea.2014.712086.
12 Jochen Seemann and Juergen Wolff von Gudenberg. Pattern-based design recovery of java software. In SIGSOFT '98/FSE-6: Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering, pages 10-16, New York, NY, USA, 1998. ACM Press.
13 Felix Agustin Castro Espinoza, Gustavo Nuez Esquer, and Joel Surez Cansino. Automatic design patterns identification of C++ programs. In EurAsia-ICT 02: Proceedings of the First EurAsian Conference on Information and Communication Technology, pages 816-823, London, UK, 2002. Springer-Verlag.
14 Ferenc, R., Beszedes, A., Tarkiainen, M., Gyimothy, T.: Columbus-reverse engineering tool a schema for C++. 18th IEEE international conference on software maintenance (ICSM'02), pp. 172-181, October 2002.
15 Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S.: Design Pattern Detection Using Similarity Scoring. IEEE Transaction on Software Engineering 32(11) (2006).
16 Dong, J., Lad, D.S., Zhao, Y.: Dp-miner: Design pattern discovery using matrix. In: Proc. 14th Annual IEEE International Conference and Workshops on the Engineering of Computer-Based Systems, ECBS 2007, pp. 371-380 (2007).
17 Dongjin Yu, Yanyan Zhang, and Zhenli Chen: A comprehensive approach to the recovery of design pattern instances based on sub-patterns and method signatures. The Journal of Systems and Software 103 (2015) 1-16.
18 Ampatzoglou, A.,Michou, O.,Stamelos, I.,2013b. Building and mining a repository of design pattern instances: practical and research benefits. EntertainmentComput.4, 131-142.
19 Christian Kramer and Lutz Prechelt. Design recovery by automated search for structural design patterns in object-oriented software. In Working Conference on Reverse Engineering, pages 208-1996.
20 Y.-G. Guéhéneuc and N. Jussien, "Using Explanations for Design Patterns Identification," Proc. First IJCAI Workshop Modelling and Solving Problems with Constraints, C. Bessie`re, ed., pp. 57-64, Aug. 2001.
21 Y.-G. Guéhéneuc, H. Sahraoui, and F. Zaidi, "Fingerprinting Design Patterns," Proc. 11th Working Conf. Reverse Eng. (WCRE'04), Nov. 2004.
22 Beyer, D., Lewerentz, C. CrocoPat: efficient pattern analysis in object-oriented programs. In: Proceedings of the International Workshop on Program Comprehension (IWPC'03), Portland, OR, USA, pp. 294-295 (2003).
23 J. McC. Smith, and D. Stotts. SPQR: Flexible Automated Design Pattern Extraction from Source Code. In Proceedings of the 2003 IEEE International Conference on Automated Software Engineering, Montreal QC, Canada, October, 2003, pp. 215-224.
24 Nija Shi and Ronald A. Olsson. Reverse engineering of design patterns from java source code. In ASE ’06: Proceedings of the 21st IEEE International Conference on Automated Software Engineering (ASE’06), pages 123–134, Washington, DC, USA, 2006. IEEE Computer Society.
25 Y.-G. Guéhéneuc and G. Antoniol, “DeMIMA: A Multi-Layered Framework for Design Pattern Identification,” IEEE Trans. Software Eng., vol. 34, no. 5, pp. 667-684, Sept./Oct. 2008.
26 Lucia, A.D., Deufemia, V., Gravino, C., and Risi, M., Design pattern recovery through visual language parsing and source code analysis, The Journal of Systems and Software, Vol 82, pp. 1177-1193, 2009.
27 M. Zanoni, "Data mining techniques for design pattern detection," Ph.D. dissertation, Universita degli Studi di Milano-Bicocca, 2012.
28 Alnusair, A., Zhao, T., Yan, G., 2014. Rule based detection of design patterns in program code. Int.J.Softw.ToolsTechnol.Trans.16 (3), 315-334.
29 Kyle Brown. Design reverse-engineering and automated design pattern detection in Smalltalk, Master's thesis, North Carolina State University, 1996.
30 Bansiya Jagdish: Automating Design-Pattern Identification. Dr. Dobb's Journal. June 1998.
31 Kim, H. and Boldyreff, C. (2000) A Method to Recover Design Patterns Using Software Product Metrics. In: Proceedings of the 6th International Conference on Software Reuse: Advances in Software Reusability, Vienna, 27-29 June 2000, 318-335.
32 Heuzeroth, D., Holl, T., Hogstrom, G., Lowe, W., 2003. Automatic design pattern detection. In: Proceedings of International Workshop on Program Comprehension (IWPC'03), Portland, OR, USA, pp. 94-103.
33 Philippow, I., Streitferdt, D., Riebish, M., Naumann, S., 2005. An approach for reverse engineering of design patterns. Software System Modeling 4 (1), 55-79.
34 A. Blewitt. Hedgehog: Automatic Verification of Design Patterns in Java. PhD thesis, School of Informatics, University of Edinburgh, 2005. http://www.bandlem.com/Alex/Papers/PhDThesis.pdf.
35 Kaczor O. Guéhéneuc Y-G, Hamel S. Efficient identification of design patterns with bit- vector algorithm. In: Proceedings of the 10th European conference on software maintenance and reengineering, Bari, Italy; 22–24 March 2006. p. 184–93.
36 W.B Frakes and R.Baeza, Yates, Information Retrieval: Data Structure and Algorithms, Prentice Hall, 1992.
37 Arcelli Fontana, F., Caracciolo, A., Zanoni, M., 2012. DPB: A benchmark for design pattern detection tools. In: Proceedings of the 16th European Conference on Software Maintenance and Reengineering (CSMR'12). IEEE Computer Society, Szeged, Hungary, pp. 235-244. doi:10.1109/C.
38 Y.-G. Guéhéneuc, “P-MARt: Pattern-like micro architecture repository,” Proceedings of the 1st EuroPLoP Focus Group on Pattern Repositories, 2007.
39 Fülöp, L. J., Hegedus, P., & Ferenc, R. (2008). BEFRIEND - A benchmark for evaluating reverse engineering tools. Periodica Polytechnica, Electrical Engineering, 52(3-4), 153-162. DOI: 10.3311/pp.ee.2008-3-4.04.
Mr. Mohammed Ghazi Al-Obeidallah
Department of Computing, University of Brighton - United Kingdom
Dr. Miltos Petridis
Department of Computing, University of Brighton - United Kingdom
Dr. Stelios Kapetanakis
Department of Computing, University of Brighton - United Kingdom