Software & Systems Modeling

, Volume 4, Issue 1, pp 55–70 | Cite as

An approach for reverse engineering of design patterns

  • Ilka PhilippowEmail author
  • Detlef Streitferdt
  • Matthias Riebisch
  • Sebastian Naumann
Regular Paper


For the maintenance of software systems, developers have to completely understand the existing system. The usage of design patterns leads to benefits for new and young developers by enabling them to reuse the knowledge of their experienced colleagues. Design patterns can support a faster and better understanding of software systems. There are different approaches for supporting pattern recognition in existing systems by tools. They are evaluated by the Information Retrieval criteria precision and recall. An automated search based on structures has a highly positive influence on the manual validation of the results by developers. This validation of graphical structures is the most intuitive technique. In this paper a new approach for automated pattern search based on minimal key structures is presented. It is able to detect all patterns described by the GOF [15]. This approach is based on positive and negative search criteria for structures and is prototypically implemented using Rational Rose and Together.


Design patterns Reverse engineering Pattern recognition 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Antoniol G, Fiutem R, Cristoforetti L (1998) Design pattern recovery in object-oriented software. In: 6th International Workshop on Program Comprehension, June, pp 153–160Google Scholar
  2. 2.
    Bansiya J (1998) Automatic Design-Pattern Identification. Dr. Dobb’s Journal. Available online at: http://www.ddj.comGoogle Scholar
  3. 3.
    Bergenti F, Poggi A (2000) Improving UML design using automatic design pattern detection. In: Proc. 12th. International Conference on Software Engineering and Knowledge Engineering (SEKE 2000), pp 336–343Google Scholar
  4. 4.
    Brown K (1996) Design reverse-engineering and automated design pattern detection in Smalltalk. Master’s thesis. Department of Computer Engineering, North Carolina State University. Available online at: Scholar
  5. 5.
    Keller RK, Schauer R, Robitaille S, Page P (1999) Pattern-based reverse engineering of design components. In: Proc. Of the 21st International Conference On Software Engineering. IEEE Computer Society Press, pp 226–235Google Scholar
  6. 6.
    Kim H, Boldyreff C (2000) A method to recover design patterns using software product metrics. In: Proc. of the 6th International Conference on Software Reuse (ICSR6). Available online at:∼hkim69/publications/icsr6.pdfGoogle Scholar
  7. 7.
    Kraemer C, Prechelt L (1996) Design recovery by auto-mated search for structural design patterns in object-oriented software. In: Proc. of the Working Conference on Reverse Engineering, pp. 208–215Google Scholar
  8. 8.
    Salton G, McGill M (1983) Introduction to Modern Information Retrieval. McGraw-Hill, New YorkGoogle Scholar
  9. 9.
    Naumann S (2001) Reverse Engineering of Design Patterns. Diploma Thesis. Technical University of Ilmenau (in German)Google Scholar
  10. 10.
    Niere J, Wadsack JP, Wendehals L (2001) Design pattern recovery based on source code analysis with fuzzy logic. Technical Report tr-ri-01-222, University of Paderborn. Available onlineGoogle Scholar
  11. 11.
    Prechelt L, Unger B, Philippsen M (1997) Documenting Design Patterns in Code Eases Program Maintenance. In: Proc. Of the ICSE Workshop on Process Modeling and Empirical Studies of Software Evolution, pp 72–76Google Scholar
  12. 12.
    Rational (2000) Using the Rose Extensibility Interface Rational Rose 2001 Rational Rose Software CorporationGoogle Scholar
  13. 13.
    Tatsubori M, Chiba S (1998) Programming Support of Design Patterns with compile-time Reflection. OOPSLA 98 Workshop Reflective Programming in C++ and Java, Vancouver, CanadaGoogle Scholar
  14. 14.
    West R (1993) Reverse Engineering – An Overview, HMSO, LondonGoogle Scholar
  15. 15.
    Gamma E, Helm R, Johnson R, Vlissides J (1995) Design Patterns – Elements of Reusable Object-Oriented Software, Addison WesleyGoogle Scholar
  16. 16.
    Shull F, Melo WL, Basili VR (1996) An inductive method for discovering design patterns from object-oriented software systems. Technical Report UMIACS-TR-96-10, University of MarylandGoogle Scholar

Copyright information

© Springer-Verlag 2004

Authors and Affiliations

  • Ilka Philippow
    • 1
    Email author
  • Detlef Streitferdt
    • 1
  • Matthias Riebisch
    • 1
  • Sebastian Naumann
    • 1
  1. 1.Technische Universität IlmenauIlmenauGermany

Personalised recommendations