Home   >   CSC-OpenAccess Library   >    Manuscript Information
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 
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.
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.
Ampatzoglou, A.,Michou, O.,Stamelos, I.,2013b. Building and mining a repository of design pattern instances: practical and research benefits. EntertainmentComput.4, 131-142.
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.
Bansiya Jagdish: Automating Design-Pattern Identification. Dr. Dobb's Journal. June 1998.
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).
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
K. Stencel, and P. Wegrzynowicz, "Detection of Diverse Design Pattern Variants", 15th Asia-Pacific Software Engineering Conference, 2008, pp. 25-32.
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.
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.
Kyle Brown. Design reverse-engineering and automated design pattern detection in Smalltalk, Master's thesis, North Carolina State University, 1996.
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.
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.
M. Vokac, " An efficient tool for recovering design patterns from C++ code", Journal of Object Technology, Volume 5, No. 1, 2006, pp. 139-157.
M. Zanoni, "Data mining techniques for design pattern detection," Ph.D. dissertation, Universita degli Studi di Milano-Bicocca, 2012.
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.
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.
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.
Philippow, I., Streitferdt, D., Riebish, M., Naumann, S., 2005. An approach for reverse engineering of design patterns. Software System Modeling 4 (1), 55-79.
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.
Scientific Tool works Inc. Understand for C++, 2003.
Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., Halkidis, S.: Design Pattern Detection Using Similarity Scoring. IEEE Transaction on Software Engineering 32(11) (2006).
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.
W.B Frakes and R.Baeza, Yates, Information Retrieval: Data Structure and Algorithms, Prentice Hall, 1992.
Y.-G. Guéhéneuc, H. Sahraoui, and F. Zaidi, "Fingerprinting Design Patterns," Proc. 11th Working Conf. Reverse Eng. (WCRE'04), Nov. 2004.
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.
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.
Y.-G. Guéhéneuc, “P-MARt: Pattern-like micro architecture repository,” Proceedings of the 1st EuroPLoP Focus Group on Pattern Repositories, 2007.
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