Decoupling Level: A New Metric for Architectural Maintenance Complexity

Author(s): R. M. Yuanfang Cai, R. Kazman, L. X. Qiong Feng
Venue: IEEE Conference on Software Engineering
Date: 2016

Type of Experiement: Survey/Multi-Case Study
Sample Size: 129
Class/Experience Level: Professional
Data Collection Method: Code Metric


The authors propose a new method of measuring the maintainability of a code base through a new metric they call Decoupling Level. Rather than measuring how coupled an architecture is, they measure how easily the code could be broken up into smaller modules. The idea behind their research is that the higher the decoupling level the easier the code is to maintain; their research backs up this hypothesis, with a higher decoupling level indicating a better architecture in 129 separate open-source projects. They also point out the benefit of this new metric in monitoring architectural decay and cross-project comparison, which would allow project managers to track the development of the quality of their project’s architecture and allow them to make incremental improvements and prevent the project from reaching a point where huge architectural refactors are necessary.

They calculate decoupling level by splitting the project into modules based on packages, files, and using a Design Rule Hierarchy algorithm from previous research to split it into smaller pieces. Each module’s decoupling level is calculated by dividing it into layers (see the Design Rule Hierarchy research) and calculating the number of files within other lower layers that depend on that layer, divided by the total number of lower layers. This metric can be used to evaluate the stability of a project as well as its maintainability, because architectural issues that could result in future refactoring can be caught and addressed early while the fix requires less time and effort.