DP-CORE: A Design Pattern Detection Tool for Code Reuse

Themistoklis Diamantopoulos, Antonis Noutsos, Andreas Symeonidis


In order to maintain, extend or reuse software projects one has to primarily understand what a system does and how well it does it. And, while in some cases information on system functionality exists, information covering the non-functional aspects is usually unavailable. Thus, one has to infer such knowledge by extracting design patterns directly from the source code. Several tools have been developed to identify design patterns, however most of them are limited to compilable and in most cases executable code, they rely on complex representations, and do not offer the developer any control over the detected patterns. In this paper we present DP-CORE, a design pattern detection tool that defines a highly descriptive representation to detect known and define custom patterns. DP-CORE is flexible, identifying exact and approximate pattern versions even in non-compilable code. Our analysis indicates that DP-CORE provides an efficient alternative to existing design pattern detection tools.


  1. Arcelli, F. and Christina, L. (2007). Enhancing Software Evolution through Design Pattern Detection. In Proceedings of the 2007 Third International IEEE Workshop on Software Evolvability, pages 7-14, Paris, France.
  2. Arcelli, F. F., Perin, F., Raibulet, C., and Ravani, S. (2008). Behavioral Design Pattern Detection through Dynamic Analysis. In Proceedings of the 4th International Workshop on Program Comprehension through Dynamic Analysis, pages 11-16, Antwerp, Belgium.
  3. and Birkner, M. (2007). Object-Oriented Design Pattern Detection Using Static and Dynamic Analysis of Java Software. Master's thesis, University of Applied Sciences Bonn-Rhein-Sieg Sankt Augustin, Germany.
  4. Dong, J., Lad, D. S., and Zhao, Y. (2007a). DP-Miner: Design Pattern Discovery Using Matrix. In Proceedings of the 14th Annual IEEE International Conference and Workshops on the Engineering of ComputerBased Systems, ECBS 7807, pages 371-380, Tucson, AZ, USA.
  5. Dong, J., Zhao, Y., and Peng, T. (2007b). Architecture and Design Pattern Discovery Techniques - A Review. In Proceedings of the 2007 International Conference on Software Engineering Research & Practice, volume 2 of SERP 2007, pages 621-627, Las Vegas, NV, USA.
  6. Dong, J., Zhao, Y., and Peng, T. (2009). A Review of Design Pattern Mining Techniques. International Journal of Software Engineering and Knowledge Engineering, 19(06):823-855.
  7. Gamma, E., Vlissides, J., Johnson, R., and Helm, R. (1998). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
  8. Guéhéneuc, Y.-G. and Antoniol, G. (2008). DeMIMA: A Multilayered Approach for Design Pattern Identification. IEEE Trans. Softw. Eng., 34(5):667-684.
  9. Kaczor, O., Guéhéneuc, Y.-G., and Hamel, S. (2006). Efficient Identification of Design Patterns with Bit-vector Algorithm. In Proceedings of the 10th European Conference on Software Maintenance and Reengineering, CSMR 2006, pages 175-184, Bari, Italy.
  10. Lucia, A. D., Deufemia, V., Gravino, C., and Risi, M. (2009). Design Pattern Recovery Through Visual Language Parsing and Source Code Analysis. J. Syst. Softw., 82(7):1177-1193.
  11. Nickel, U., Niere, J., and Zündorf, A. (2000). The FUJABA Environment. In Proceedings of the 22nd International Conference on Software Engineering, ICSE 7800, pages 742-745, Limerick, Ireland.
  12. Oracle (2015). Compiler Tree API. Avail. online: http:// docs.oracle.com/javase/8/docs/jdk/api/ javac/tree/index.html, [retrieved March, 2015].
  13. Rasool, G. and Streitferdt, D. (2011). A Survey on Design Pattern Recovery Techniques. International Journal of Computer Science Issues, 8(6):251-260.
  14. Shi, N. and Olsson, R. A. (2006). Reverse Engineering of Design Patterns from Java Source Code. In Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering, ASE 7806, pages 123-134, Tokyo, Japan.
  15. Stencel, K. and Wegrzynowicz, P. (2008). Detection of Diverse Design Pattern Variants. In Proceedings of the 2008 15th Asia-Pacific Software Engineering Conference, APSEC 7808, pages 25-32, Beijing, China.
  16. Tsantalis, N., Chatzigeorgiou, A., Stephanides, G., and Halkidis, S. (2006). Design Pattern Detection using Similarity Scoring. IEEE Trans. Softw. Eng., 32(11):896-909.

Paper Citation

in Harvard Style

Diamantopoulos T., Noutsos A. and Symeonidis A. (2016). DP-CORE: A Design Pattern Detection Tool for Code Reuse . In Proceedings of the Sixth International Symposium on Business Modeling and Software Design - Volume 1: BMSD, ISBN 978-989-758-190-8, pages 160-167. DOI: 10.5220/0006223301600167

in Bibtex Style

author={Themistoklis Diamantopoulos and Antonis Noutsos and Andreas Symeonidis},
title={DP-CORE: A Design Pattern Detection Tool for Code Reuse},
booktitle={Proceedings of the Sixth International Symposium on Business Modeling and Software Design - Volume 1: BMSD,},

in EndNote Style

JO - Proceedings of the Sixth International Symposium on Business Modeling and Software Design - Volume 1: BMSD,
TI - DP-CORE: A Design Pattern Detection Tool for Code Reuse
SN - 978-989-758-190-8
AU - Diamantopoulos T.
AU - Noutsos A.
AU - Symeonidis A.
PY - 2016
SP - 160
EP - 167
DO - 10.5220/0006223301600167