This paper reports on an exploratory study of how the architecture of a software product evolves over time. Because software is embedded in many of today’s complex products, and it is prone to relatively rapid change, it is instructive to study software architecture evolution for general insights into product design. We use metrics to capture the intrinsic complexity of software architectures as they evolve through successive generations (version releases). We introduce a set of product representations and metrics that take into account two important features used to manage the complexity in software products: layers and modules. We also capture organizational data associated with the product under development. We propose a three-step approach for the analysis and illustrate it using successive versions of an open source product, Ant. One of our findings is that software architectures seem to evolve in a non-linear manner similar to the S-shaped curve that characterizes technology evolution at the industry level. We also find several parallel patterns among architectural and organizational dynamics. Implications for research and practice are discussed.

This content is only available via PDF.
You do not currently have access to this content.