Abstract:
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 in order to prevent the degradation of the quality of the software product. One challenge when modifying code - whether to patch a bug or add a feature- is being aware of which components will be affected by the change and amending possible misbehavior. In such cases, 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. In this work, we tackle the change propagation problem by modeling the software system as a temporal graph where nodes represent system les and edges co-changeability i.e., the tendency of two les to change together. The graph representation is temporal so that nodes and edges can change with time reflecting addition of les in the system and changes in dependencies. We then employ a Temporal Graph Network
and a Long Short-Term Memory model to predict which les will change when a modifi cation is introduced to another le. We test our model on software systems of different functionality, size, and nature. Results show that our model signi ficantly outperforms other recent published work.