PatEvol - A pattern language for evolution in component-based software architectures
MetadataShow full item record
Modern software systems are prone to a continuous evolution under frequently varying requirements. Architecture-centric software evolution (ACSE) enables change in system structure and behavior while maintaining a global view of software to address evolution-centric tradeoffs. Lehman?s law of continuing change demands for long-living and continuously evolving architectures to prolong the productive life and economic value of software systems. To support a continuous change, the existing solutions fall short of exploiting generic and reusable solutions to address frequent ACSE problems. We argue that architectural evolution process requires an explicit evolution-centric knowledge for pro-active and anticipative change management. We propose a pattern language (PatEvol) as a collection of 7 change patterns that enable reuse-driven and consistent architecture evolution. We integrate architecture change mining (PatEvol development) as a complementary and integrated phase to facilitate reuse-driven architecture change execution (PatEvol application). In the proposed pattern language, reuse-knowledge is expressed as a network-of-patterns that build on each other to facilitate a generic, first-class abstraction to operationalise recurring evolution tasks. We exploit language based formalism to promote patterns and prevent potential anti-patterns during ACSE. The pattern language itself continuously evolves with an incremental acquisition of new patterns from architecture change logs over-time.