Abstract

Context:The world is quickly adopting new technologies and evolving to rely on software systems for the simplest tasks. This prompts developers to expand their software systems by adding new product features. However, this expansion should be cautiously tackled to prevent the degradation of the quality of the software product. Objective:One challenge when modifying code - whether to patch a bug or add a feature- is knowing which components will be affected by the change and amending possible misbehavior. In this context, the study of change propagation or the impact of introducing a change is needed. By investigating how changing one component may impact the functionality of a dependency (another component), developers can prevent unexpected behavior and maintain the quality of their system. Methods:In this work, we tackle the change propagation problem by modeling a software system as a temporal graph where nodes represent system files and edges co-changeability, i.e., the tendency of two files to change together. The graph representation is temporal so that nodes and edges can change with time, reflecting the addition of files in the system and changes in dependencies. We then employ a Temporal Graph Network and a Long Short-Term Memory model to predict which other files will be impacted by a modification performed on a file. Results:We test our model on software systems of different functionality, size, and nature. We compare our results to other published work, and our model shows a significantly higher ability to predict files impacted by a change. Conclusion:The proposed approach effectively predicts change propagation in software systems and can guide developers and software engineers in planning the change and estimating the cost in terms of time and money.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call