Aim/Purpose: To predict the change-proneness of software from the continuous evolution using machine learning methods. To identify when software changes become statistically significant and how metrics change.
Background: Software evolution is the most time-consuming activity after a software release. Understanding evolution patterns aids in understanding post-release software activities. Many methodologies have been proposed to comprehend software evolution and growth. As a result, change prediction is critical for future software maintenance.
Methodology: I propose using machine learning methods to predict change-prone classes. Classes that are expected to change in future releases were defined as change-prone. The previous release was only considered by the researchers to define change-proneness. In this study, I use the evolution of software to redefine change-proneness. Many snapshots of software were studied to determine when changes became statistically significant, and snapshots were taken biweekly. The research was validated by looking at the evolution of five large open-source systems.
Contribution: In this study, I use the evolution of software to redefine change-proneness. The research was validated by looking at the evolution of five large open-source systems.
Findings: Software metrics can measure the significance of evolution in software. In addition, metric values change within different periods and the significance of change should be considered for each metric separately. For five classifiers, change-proneness prediction models were trained on one snapshot and tested on the next. In most snapshots, the prediction performance was excellent. For example, for Eclipse, the F-measure values were between 80 and 94. For other systems, the F-measure values were higher than 75 for most snapshots.
Recommendations for Practitioners: Software change happens frequently in the evolution of software; however, the significance of change happens over a considerable length of time and this time should be considered when evaluating the quality of software.
Recommendation for Researchers: Researchers should consider the significance of change when studying software evolution. Software changes should be taken from different perspectives besides the size or length of the code.
Impact on Society: Software quality management is affected by the continuous evolution of projects. Knowing the appropriate time for software maintenance reduces the costs and impacts of software changes.
Future Research: Studying the significance of software evolution for software refactoring helps improve the internal quality of software code.