UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

A new change propagation metric to assess software evolvability Gonzalez, Marco A.

Abstract

The development of software-intensive systems faces many challenges; one of the most important from an economic perspective is to reduce their maintenance costs. This thesis proposes a modified change propagation metric as a tool to assist the analysis of evolvability and maintainability of a software system and to ultimately support the reduction of its maintenance cost. The technical complexity of software systems has a great impact on their ability to make increased functionality and adaptability to the environment possible. One approach to understand and master the complexity of large software systems, varying from thousands to millions of lines of source code, is through software architecture. This study examines a sample of software systems from the dependencies of their static structural view. The dependencies and their importance are expressed as a design structure matrix (DSM) that is used as an indicator to reflect the strength of dependence and connection among the different modules. In this thesis, we propose a “modified change propagation” metric as a set of incremental improvements over the original Propagation Cost (PC) metric proposed by MacCormack (2008). Our improved metric uses dependencies weighted with strength to convey more information about the incidence of strongly connected relationships and it discounts weak dependencies. Moreover the original propagation metrics considered that the system should be acyclical; but we found that in practice a very few real systems are exempt of cycles. Furthermore, if cyclic dependencies are heavy rather than weak then these cycles should be treated differently. Finally, our metric is normalized to minimize the effect of both change in the total depth of the dependency graph, and increases in the size of the code. Our modified change propagation metric can help software designers assess the maintainability of a software system at design time and over a proposed release sequence by comparing change propagation measures for different designs of software architecture. For instance, after refactoring. We validated our metric both on a system developed at UBC, and on several large open-source repositories for which we were able to obtain long release histories.

Item Media

Item Citations and Data

Rights

Attribution-NonCommercial-NoDerivs 3.0 Unported