Article Preview
TopIntroduction
Complexity of code interaction increases significantly with evolution in software applications. It becomes extremely challenging for the developers to control the impact of changes implemented in the system. Change impact analysis is a prospective solution to this problem, which identifies the entities affected by a particular change. The advance knowledge of these co-changed entities can be very useful in the software maintenance phase. This information will assist the developers in identifying the effects of changes made to a class and also help in testing phase by helping in test case selection and prioritization.
Identification of co-changed classes is very beneficial when only few classes in a software system change during the maintenance phase. It can identify dependencies and thus eliminate the need for testing the complete software system, which is quite tedious. It will guide the developers by providing the advance knowledge of dependent classes and also help the testers in choosing the appropriate set of changed entities thus, accelerating the testing phase.
In literature, very few studies focus on identifying the co-changed classes and use the information derived from previous logs for identifying the co-changed classes. The most common approach uses static code attributes for identification of such classes (Ying, Murphy, Ng & Chu-Carroll, 2004; Zimmermann, Weibgerber, Diehl & Zeller, 2005). A limitation of this approach is that it is not able to identify any dependencies among software entities and unable to identify the potential set of classes which are likely to be changed due to modifications in a class (also called as the ripple effect). It is not able to identify any dependencies that may occur due to addition of new classes.
To overcome this limitation, we have proposed a predictive modeling-based solution that can identify the after-effects of newly added classes using evolutionary coupling. We have used the logs from software version control system (svn repository) to obtain the co-change information of classes and set of object-oriented software metric to establish the relationship among these co-changed classes. The combination of software metrics and revision history has been used in predicting the future changeability pattern of software entities.
The objective of this research is to investigate the evolutionary coupling among classes for prediction of future changeability pattern. It is believed that classes that have been changed together frequently in past are likely to be changed together in future as well (Zimmermann, Weibgerber, Diehl & Zeller, 2005; Parashar & Chhabra, 2014, Rolfsnes et al., 2017). We obtain this co-change information from the revision history and use it to predict evolutionary coupling among classes. We have used eight open source software applications for performing our experiments. All the software applications are written in Java and maintained under SVN repository. We have collected the metric information from the source code and change proneness from the logs obtained from SVN repository. In this work, we have addressed the following research questions:
RQ1. Is it possible to identify the classes that are modified as a ripple effect of change prone class?
RQ2. What are the possible attributes that can be useful for ripple effect identification of changed class?
RQ3. How well is the proposed system applicable to commercial systems?
The rest of the paper is organized as follows. Section 2 presents the related work. The research methodology is discussed in section 3 followed by empirical data collection process in section 4. The results and threats to validity are discussed in section 5. Section 6 concludes the paper and presents the future scope of work.
TopChangeability is an important attribute of maintainability and indicates the ease of modifying a software system. Change-coupling prediction plays an important role in changeability measurement. In literature two approaches for identifying change prone entities in software applications have been proposed (Zimmermann, Weibgerber, Diehl & Zeller, 2005; Lu, Zhou, Xu, Leung & Chen, 2012; Brucker & Julliand, 2014). One suggests the use of structural information of object-oriented systems and the other suggests mining past co-changes to predict future changeability pattern.