by Alan MacCormack & Dan Sturtevant
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. In this article, Alan MacCormack and Daniel Sturtevant explain that 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, they lack of 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. Alan and Daniel 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. They 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.” Their results generate insight into how architectural debt can be assessed by understanding patterns of coupling among components in a system.