- 11 Feb 2010
- Working Paper
The Architecture of Complex Systems: Do Core-periphery Structures Dominate?
Executive Summary — All complex systems can be divided into a nested hierarchy of subsystems. However, not all these subsystems are of equal importance: Some subsystems are core to system performance, whereas others are only peripheral. In this study, HBS professor Carliss Y. Baldwin and coauthors developed methods to detect the core components in a complex software system, establish whether these systems possess a core-periphery structure, and measure important elements of these structures. The general patterns highlight the difficulties a system architect faces in designing and managing such systems. Results represent a first step in establishing stylized facts about the structure of real-world systems. Key concepts include:
- Core-periphery structures dominate the sample, with 75-80 percent of systems in the sample possessing such a structure.
- It is significant that a substantial number of systems lack such a structure. This implies that a considerable amount of managerial discretion exists when choosing the "best" architecture for a system.
- Variations in system structure can be explained, in part, by the different models of development used to develop systems.
- Legacy code is rarely rewritten, but instead forms a platform upon which new systems are built. With such an approach, today's developers bear the consequences of design decisions made long ago.
Any complex technological system can be decomposed into a number of subsystems and associated components, some of which are core to system function while others are only peripheral. The dynamics of how such "core-periphery" structures evolve and become embedded in a firm's innovation routines has been shown to be a major factor in predicting survival, especially in turbulent technology-based industries. To date however, there has been little empirical evidence on the propensity with which core-periphery structures are observed in practice, the factors that explain differences in the design of such structures, or the manner in which these structures evolve over time. We address this gap by analyzing a large number of systems in the software industry. Our sample includes 1,286 software releases taken from 19 distinct applications. We find that 75-80% of systems possess a core-periphery structure. However, the number of components in the core varies widely, even for systems that perform the same function. These differences appear to be associated with different models of development - open, distributed organizations developing systems with smaller cores. We find that core components are often dispersed throughout a system, making their detection and management difficult for a system architect. And we show that systems evolve in different ways - in some, the core is stable, whereas in others, it grows in proportion to the system, challenging the ability of an architect to understand all possible component interactions. Our findings represent a first step in establishing some stylized facts about the structure of real world systems. 37 pages