Abstract:
Software maintenance is considered the costliest process in the software system development life cycle. The changes made in this process on a specific software entity may trigger co-changes in other software entities. Detecting these co-changes manually increases the time and the cost of the maintenance process, while ignoring those co-changes may lead to software defects or poor software performance. Mining the historical data stored on software repositories may help in detecting software entities' co-changes. In this research, we propose the Change Propagation Path (CPP) approach. The CPP approach is a co-change detection approach that depends on mining software repositories. The CPP approach consists of three main phases. In the first phase, the commit data stored in the Git repository are gathered. In the second phase, the data gathered are prepared to be analyzed. The features are extracted, the misleading commits are removed, and the file names are coded. Then, the files that are tagged as deleted are ignored. Finally, the data are reduced. The output of this phase is a transactional database containing a set of coded file names lists. The final phase includes four main steps. The first step is generating all the possible patterns from the file names lists. The second step is creating rules from the patterns that describe the relationship between files. In the third step, the rules with the same antecedent are aggregated. In the fourth step, the rules are chained according to the software editing scenario. The output of the approach was tested manually to evaluate the output. A tool (Wide Assisting and Leading) was built upon the CPP concept and tested to prove the feasibility of the approach. Testing the CPP approach proved that mining software repositories may reduce the time of the maintenance process by 50%.