A Case Study of a Seismology-based Approach to Change Impact Analysis Salima Hassaine * , Ferdaous Boughanmi , Yann-Ga¨ el Gu´ eh´ eneuc , Sylvie Hamel * , and Giuliano Antoniol * DIRO, Universit´ e de Montr´ eal, Qu´ ebec, Canada Email: {hassaisa,hamelsyl}@iro.umontreal.ca DGIGL, ´ Ecole Polytechnique de Montr´ eal, Qu´ ebec, Canada Email: {ferdaous.boughanmi,yann-gael.gueheneuc}@polymtl.ca, antoniol@ieee.org Abstract—The maintenance of large programs is a costly activity because their evolution often leads to two problems: an increase in their complexity and an erosion of their design. Impact analysis is crucial to make decisions among different alternatives to implement a change and to assess and plan maintenance activities by highlighting artefacts that should change when another artefact changes. Several approaches were proposed to identify software artefacts being affected by a change. However, to the best of our knowledge, none of these approaches have been used to study two pieces of information: (1) the scope of a change in a program and (2) the propagation of the change in time. Yet, these pieces of information are useful for developers to better understand and, thus, plan changes. In this paper, we present a metaphor inspired by seismology and propose a mapping between the concepts of seismology and software evolution. Our metaphor relate the problems of (1) change impact and earthquake’s debris and (2) change propagation and damaged site predictions to observe the scopes and the evolution in time of changes. We show the applicability and usefulness of our metaphor using Rhino and Xerces-J. Keywords-Software evolution; Change Impact Analysis; Change Propagation; Earthquake forecasting; I. I NTRODUCTION Although object-oriented programming has met great suc- cesses in modeling and implementing complex software programs, developers face problems with maintenance [1]. In particular, understanding the evolution of a program is a time- and resource-consuming activity, despite its benefits to perform adequate changes [2], [3]. Approaches exist to study software evolution phenomena, including evolution trends, traceability between artefacts, and the impacts of changes. In particular, understanding the propagation and the im- pact of changes is crucial for estimating the effort required to implement a change and for planning maintenance activ- ities. Change impact analysis aims at identifying software artefacts being affected by a change; it provides the potential consequences of a change and an estimate of the artefacts that must be modified to accomplish a change [4]. As in previous work, e.g., [5]–[7], for the sake of simplicity and without loss of generality, we focus on C++ and Java classes. Existing approaches for change impact analysis are based on the software structure and use static, dynamic, and–or tex- tual analyses [4], [8]–[10]. However, change impact analyses should also take into account classes that are semantically coupled but that may not be structurally depend on one another. Thus, recently, researchers proposed to analyse the content of version-control systems to identify semantically coupled classes (i.e., logical couplings) by assessing whether they co-change together within change sets [11]–[13]. However, to the best of our knowledge, none of these approaches have been used to study two pieces of infor- mation: (1) the scope of changes in a program and (2) the propagation of changes in time. First, they do not take into account a “distance” among classes, for example whether two co-changing classes are in direct relation or separated through a long chain of relationships. Yet, studying the scope of changes could help developers prioritise their changes according to the forecast scope of changes. Second, they do not report the trends of the co-changes among files in time, for example whether changing a class impacts more and more co-changing classes as the program evolves. Yet, studying the propagation of changes in time could help developers plan their maintenance activities according to the forecast time that a change may take to settle in a program. We propose a novel approach to change impact analysis specifically designed to study the scope and the propagation of changes, based on a metaphor between seismology and change impact analysis. Our approach considers changes to a class as a seism that propagates through the program following the class levels, defined by direct relationships among classes, and that impacts other classes with different extent, depending on (1) their relationships with the “epicen- ter class” and other impacted classes and (2) the moments in time at which developers change impacted classes. With our approach, we can observe and, in future work, will predict the scopes and the propagations of changes through the class levels of a program and in time. To show the applicability and the usefulness of our approach, we apply our approach on three epicenter classes in Rhino and six epicenter classes in Xerces-J and study its approach results to answer the three research questions: RQ1: Is it possible to find external information that support our observations on the impact of changes according to our metaphor? RQ2: Does our metaphor allow us to observe interesting change patterns in scope? RQ3: Does our metaphor allow us to observe interesting change patterns in time? 1