Machine Learning Strategies for Temporal Analysis of Software Clone Evolution using Software Metrics
During software evolution, there is a tendency to duplicate the code, and modify the copy slightly, giving rise to clones. Cloned code fragments adversely affect software quality and maintenance. In this paper, we discuss identification of different types of clone components using Abstract Syntax Tree based approach and also propose models for prediction of the evolution of cloned components in future versions of the software. The primary focus of the paper is modelling of the evolution of clones in a software application. Detection of clones in a large software system is challenging as it depends on the internal design of software modules and methods. Object oriented metrics like DIT, NOC,WMC, LCOM, and Cyclomatic complexity can be used as good indicators of clone contents. We demonstrate a correlation between clones and various metrics of the source. The first part of our study is to identify the cloned components using Abstract Syntax Tree. The second part is to predict the evolution of cloned components using advanced time series modelling using machine learning approaches. Evaluation of our model is performed using a large open source software system. The assessment includes quantifying the correlation between software metrics and the clone contents in the software.