DOI: 10.5281/zenodo.11119703
title: Enhancing Change Impact Prediction by Integrating Evolutionary Coupling with Software Change Relationships

description: Replication Package For Paper: Enhancing Change Impact Prediction by Integrating Evolutionary Coupling with Software Change Relationships


IMPER is a change IMpact Prediction method that integrates Evolutionary coupling with software change Relationships. The approach consists of following four main steps:


Step 1: Relevant Transaction Filtering. Filtering the relevant transaction set based on the given query $Q$.

Step 2: Association Rule Generation. Generating association rules and obtaining the impact candidate set.

Step 3: Spatial-Temporal Window Processing. Considering the temporal and spatial change relationships to obtain the impact candidate set.

Step 4: Candidates Integrating and Ranking. Making a union of these two sets to find the final impact set.


The repo provides files for the paper replication. It includes::


 

git_repo.zip: Git repository used in the study.

***-rec-database-1107.tar.gz: Neo4j dataset containing entity-level software relationship graphs and change information (changed classes, member member methods, member member variables, and files) from over 19,003 versions of six well-maintained projects.

code_entiy_genealogy: Data for code entity genealogy.

imper_jar.zip:  Tool for the study, including: 1) Generating qualified queries; 2) Change prediction using four approaches (ROSE, TARMAQ, IMPER, IMPER-ST); 3) Evaluation. The tool outputs evaluation results for each query and average metrics (MAP, Precision, Recall, and F1-score).

evaluation_metrics_details.zip: Detailed evaluation metric results for different projects.

Imper_evaluation_results.xlsx: Summary of evaluation metric results for all projects.

 


Users are suggested to refer to the research paper for more detials.


This project is still in an early stage of development, and we are improving the implementation and documentation. Please feel free to contact ******(author) for the replication package.
Environment

- java 11+

- neo4j 4.2 

- memory 64G+
Quick Start:To begin our study, follow these steps. Note that only one project can be analyzed at a time.

Step 1: Database Setup

 

Copy the relevant database to the folder `data` (in the root path of the Neo4j database), copy the plugins to the plugin folder, and open the database using Neo4j 4.2 (Recommended).

Step 2: Configure application-dev.yml

 

Adjust the application-dev.yml file in the folder `imper_jar` to match your configuration. If you're using an existing database, simply configure the database address, username, and password.



 



Step 3:  Run imper-study.jar

Command: `java -jar imper-study.jar -imp -config ./application-dev.yml -rd /home/user/code_rec -pj commons-io -fi commons-io_file(Map)_1031.txt -mi commons-io_functionInfo(Map).txt -tw 35 -mc 20 -od /home/user/code_rec`.



-imp:  Used to run IMPER

-config:  Path of `application-dev.yml`.

-rd:  Root path of code entiy genealogy, e.g., `/home/user/code_rec`.

-pj:  Project name, e.g., `commons-io`.

-fi:  the code entiy genealogy (file), e.g., `commons-io_file(Map)_1031.txt` (the absolute path is `/home/user/code_rec/commons-io/commons-io_file(Map)_1031.txt`).

-mi:  the code entiy genealogy (method), e.g., `commons-io_functionInfo(Map).txt` (the absolute path is `/home/user/code_rec/commons-io/commons-io_functionInfo(Map).txt`).

-tw:  Time window (half), e.g., -tw 35 (the time window size is 70).

-mc:  Maxium commit size in the time window.

-od:  Output root path for evaluation results (MAP, Precison, Recall and F1-score), e.g., `/home/user/code_rec`.