The Impact of Component Modularity on Design Evolution: Evidence from the Software Industry
Executive Summary — What factors should influence the design of a complex system? And what is the impact of choices on both product and organizational performance? These issues are of particular importance in the field of software given how software is developed: Rarely do software projects start from scratch. The authors analyzed the evolution of a commercial software product from first release to its current design, looking specifically at 6 major versions released at varying periods over a 15-year period. These results have important implications for managers, highlighting the impact of design decisions made today on both the evolution and the maintainability of a design in subsequent years. Key concepts include:
- Data show strong support for the existence of a relationship between component modularity and design evolution.
- Tightly coupled components have a higher probability of survival as a design evolves compared with loosely coupled components.
- Tightly coupled components are also harder to augment, in that the mix of new components added in each version is significantly more modular than the legacy design.
Much academic work asserts a relationship between the design of a complex system and the manner in which this system evolves over time. In particular, designs which are modular in nature are argued to be more "evolvable," in that these designs facilitate making future adaptations, the nature of which do not have to be specified in advance. In essence, modularity creates "option value" with respect to new and improved designs, which is particularly important when a system must meet uncertain future demands.
Despite the conceptual appeal of this research, empirical work exploring the relationship between modularity and evolution has had limited success. Three major challenges persist: first, it is difficult to measure modularity in a robust and repeatable fashion; second, modularity is a property of individual components, not systems as a whole, hence we must examine these dynamics at the microstructure level; and third, evolution is a temporal phenomenon, in that the conditions at time t affect the nature of the design at time t+1, hence exploring this phenomenon requires longitudinal data.
In this paper, we tackle these challenges by analyzing the evolution of a successful commercial software product over its entire lifetime, comprising six major "releases." In particular, we develop measures of modularity at the component level, and use these to predict patterns of evolution between successive versions of the design. We find that modularity has a strong and unambiguous impact on design evolution. Specifically, we show that i) tightly-coupled components are "harder to kill," in that they have a greater likelihood of survival in subsequent versions of a design; ii) tightly-coupled components are "harder to maintain," in that they experience more surprise changes to their dependency relationships that are not associated with new functionality; and iii) tightly-coupled components are "harder to augment," in that the mix of new components added in each version is significantly more modular than the legacy design.