Identifying Design Patterns in Object-Oriented Software Systems Using Unsupervised Learning
István Gergely Czibula, Gabriela Czibula · 2008
Design patterns offer timeless and elegant solutions to common problems in software design. From a program-understanding and a reverse engineering perspective the discovery of patterns in a software artifact (design or code) represents a step in the program understanding process. It would be useful to find instances of design patterns especially in designs where they were not used explicitly or where their use is not documented, as this could improve the maintainability of software. Clustering is considered the most important unsupervised learning problem. The aim of clustering methods is to differentiate groups (classes or clusters) inside a given set of objects. In this paper we introduce a hierarchical clustering based approach in order to localize instances of design patterns in existing software systems. We also provide an experimental evaluation of our approach, illustrating its advantages in comparison with similar existing approaches.