Feature-Based Software Design Pattern Detection

12/03/2020
by   Najam Nazar, et al.
0

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 patterns detection techniques to facilitate software developers. However, these techniques show low performance for certain design patterns. In this work, we introduce an approach that improves the performance over the state-of-the-art by using code features with machine learning classifiers to automatically train a design pattern detection. We create a semantic representation of source code from the code features and the call graph, and apply the Word2Vec algorithm on the semantic representation to construct the word-space geometric model of the Java source code. DPD_F then uses a Machine Learning approach trained using the word-space model and identifies software design patterns with 78 Additionally, we have compared our results with two existing design pattern detection approaches namely FeatureMaps MARPLE-DPD. Empirical results demonstrate that our approach outperforms the benchmark approaches by 30% and 10% respectively in terms of Precision. The runtime performance also supports its practical applicability.

READ FULL TEXT
research
12/24/2018

Feature Maps: A Comprehensible Software Representation for Design Pattern Detection

Design patterns are elegant and well-tested solutions to recurrent softw...
research
07/25/2020

Automated Query Generation for Design Pattern Mining in Source Code

Identifying which design patterns already exist in source code can help ...
research
10/09/2020

A Generic Approach to Detect Design Patterns in Model Transformations Using a String-Matching Algorithm

Maintaining software artifacts is among the hardest tasks an engineer fa...
research
09/20/2021

To Automatically Map Source Code Entities to Architectural Modules with Naive Bayes

Background: The process of mapping a source code entity onto an architec...
research
05/09/2023

Learning to Parallelize with OpenMP by Augmented Heterogeneous AST Representation

Detecting parallelizable code regions is a challenging task, even for ex...
research
06/03/2021

Finding and Fixing Spurious Patterns with Explanations

Machine learning models often use spurious patterns such as "relying on ...
research
12/23/2020

Crowdsmelling: The use of collective knowledge in code smells detection

Code smells are seen as major source of technical debt and, as such, sho...

Please sign up or login with your details

Forgot password? Click here to reset