Software Architecture Pattern Morphology in Open-Source Systems
Neil B. Harrison, Erich Gubler, Danielle Skinner · 2016
Architecture patterns are commonly used to specify, understand, and document software architectures. As a system evolves, its architecture patterns are affected. In some cases, the patterns themselves may change. We studied the architectural documentation of a large number of open-source systems to learn how the architecture patterns change as the systems evolve. In some cases, the existing patterns accommodate the system evolution without changing, such as adding layers to a layered architecture. In other cases, new patterns are added where no patterns existed. In some cases, new patterns were added to existing architecture patterns. And in a few cases, a pattern changed to a different architecture pattern. We observed instances of each type of change. In most cases, there was a logical structural evolutionary path to the new pattern. Typically, the architecture documentation also explained the important quality attributes that motivated the changes. We propose this work as a foundation for the study of how architecture patterns change as system architectures evolve.