Abstract
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.
Similar content being viewed by others
References
Antoniol G, Fiutem R, Cristoforetti L (1998) Design pattern recovery in object-oriented software. In: 6th International Workshop on Program Comprehension, June, pp 153–160
Bansiya J (1998) Automatic Design-Pattern Identification. Dr. Dobb’s Journal. Available online at: http://www.ddj.com
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–343
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: http://www.ncsu.edu/
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–235
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: http://www.soi.city.ac.uk/∼hkim69/publications/icsr6.pdf
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–215
Salton G, McGill M (1983) Introduction to Modern Information Retrieval. McGraw-Hill, New York
Naumann S (2001) Reverse Engineering of Design Patterns. Diploma Thesis. Technical University of Ilmenau (in German)
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 online
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–76
Rational (2000) Using the Rose Extensibility Interface Rational Rose 2001 Rational Rose Software Corporation
Tatsubori M, Chiba S (1998) Programming Support of Design Patterns with compile-time Reflection. OOPSLA 98 Workshop Reflective Programming in C++ and Java, Vancouver, Canada
West R (1993) Reverse Engineering – An Overview, HMSO, London
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design Patterns – Elements of Reusable Object-Oriented Software, Addison Wesley
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 Maryland
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Philippow, I., Streitferdt, D., Riebisch, M. et al. An approach for reverse engineering of design patterns. Softw Syst Model 4, 55–70 (2005). https://doi.org/10.1007/s10270-004-0059-9
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-004-0059-9