Publications
Publications
- October 2016
- Journal of Systems and Software
Technical Debt and System Architecture: The Impact of Coupling on Defect-related Activity
By: Alan MacCormack and Daniel J. Sturtevant
Abstract
Technical debt is created when design decisions that are expedient in the short-term increase the costs of maintaining and adapting this system in future. An important component of technical debt relates to decisions about system architecture. As systems grow and evolve, their architectures can degrade, increasing maintenance costs and reducing developer productivity. This raises the question if and when it might be appropriate to redesign (“refactor”) a system, to reduce what has been called “architectural debt.” Unfortunately, we lack robust data by which to evaluate the relationship between architectural design choices and system maintenance costs, and hence to predict the value that might be released through such refactoring efforts. We address this gap by analyzing the relationship between system architecture and maintenance costs for two software systems of similar size but with very different structures: one has a “Hierarchical” design, the other has a “Core-Periphery” design. We measure the level of system coupling for the 20,000+ components in each system and use these measures to predict maintenance efforts or “defect-related activity.” We show that in both systems, the tightly coupled Core or Central components cost significantly more to maintain than loosely coupled Peripheral components. In essence, a small number of components generate a large proportion of system costs. However, we find major differences in the potential benefits available from refactoring these systems, related to their differing designs. Our results generate insight into how architectural debt can be assessed by understanding patterns of coupling among components in a system.
Keywords
Citation
MacCormack, Alan, and Daniel J. Sturtevant. "Technical Debt and System Architecture: The Impact of Coupling on Defect-related Activity." Journal of Systems and Software 120 (October 2016): 170–182. (Received 31 May 2015. Revised 28 May 2016. Accepted 4 June 2016.)