Improving software evolvabilityby exploiting change history and software metrics

Antonio Cappiello · KTH Publication Database DiVA (KTH Royal Institute of Technology) · 2012

A software system is well structured if its constituting components have a high cohesion and a low coupling [Yourdon and Constantibe, 1975]. Inevitably those parameters tend to vary during the software lifespan: environment changes lead to software changes, and if software does not evolve over time, then its quality decreases [Leheman, 1980]. The ability of software to evolve in a cost effective way is known as evolvability [Cook et al., 2000]. Nowadays the evolvability has been recognized as a critical success factor in system design, thus there is an overall increasing interest in this topic, and numerous studies proposing solutions to deal with it. These solutions can be categorized in two main categories: the approaches based on change history information, and the approaches based on software metrics. This thesis describes a third approach to deal with the software evolvability: it is an hybrid of the first two approaches and It has been named EVO, from the first three letters of “Evolvability”. The aims of EVO is to facilitate the analysis of change history information by reducing the scope of investigation. This reduction is achieved by using software metrics that point to “bad smells”. During this project, EVO has been validated on one industrial case study. The product under examination has a lifespan of a decade, and during that time it has been exposed to several changes and patches that have negatively affected its architecture. As consequence, today the product presents clear difficulties to evolve, and the engineers need an efficient support in refactoring the system in order to deal with its evolvability problems. The results of this validation cannot be generalized because they are obtained from a single case study and not from a number of cases statistically significant. However, these results are interesting, at least within this research, since they shows that EVO could be a good tradeoff between the two kind of approaches considered. It is faster then the approaches based on history information, because it reduces the couplings to inspect, and it is more accurate then the approaches based on software metrics, because it searches for “anti-patterns” only among the candidate unwanted couplings. This implies that the “anti-patterns” identified via metrics point not only to “bad development practices”, but also to problems that really hinder software evolvability. Concerning the design of a refactory strategy, it was possible to propose only improvements at method level due to the lack of “in-house knowledge” of the system. However, these kinds of local improvements represent a necessary initial step to make the code more readable and understandable before to operate at architectural level to concretely remove the evolutionary threats. Antonio Cappiello GSEEM Thesis 2012 I This page is intentionally left blank. II Antonio Cappiello GSEEM Thesis 2012

Read the paper · More papers on PaperTik