Feature-Based Software Design Pattern Detection
This work addresses the time-consuming task of manual design pattern detection for software developers, offering a practical tool for improved software comprehension, though it is incremental as it builds on existing techniques with specific enhancements.
The paper tackles the problem of automatically detecting software design patterns in Java source code, which is challenging with existing low-performance techniques, and introduces DPD_F, a machine learning-based approach that achieves over 80% precision and 79% recall, outperforming state-of-the-art methods by up to 35% in precision.
Software design patterns are standard solutions to common problems in software design and architecture. Knowing that a particular module implements a design pattern is a shortcut to design comprehension. Manually detecting design patterns is a time consuming and challenging task, therefore, researchers have proposed automatic design pattern detection techniques. However, these techniques show low performance for certain design patterns. In this work, we introduce a design pattern detection approach, DPD_F that improves the performance over the state-of-the-art by using code features with machine learning classifiers to automatically train a design pattern detector. DPD_F creates a semantic representation of Java source code using the code features and the call graph, and applies the \textit{Word2Vec} algorithm on the semantic representation to construct the word-space geometric model of the Java source code. DPD$_F$ then builds a Machine Learning classifier trained on a labelled dataset and identifies software design patterns with over 80% Precision and over 79\% Recall. Additionally, we have compared DPD_F with two existing design pattern detection techniques namely FeatureMaps & MARPLE-DPD. Empirical results demonstrate that our approach outperforms the state-of-the-art approaches by approximately 35% and 15% respectively in terms of Precision. The run-time performance also supports the practical applicability of our classifier.