PatEvol – A pattern language for evolution in component-based software architectures
Aakash, Ahmad, Jamshidi, Pooyan, Pahl, ClausORCID: 0000-0002-9049-212X and Khaliq, Fawad
(2013)
PatEvol – A pattern language for evolution in component-based software architectures.
In: First Workshop on Patterns Promotion and Anti-patterns Prevention PPAP'2013, 5 Mar 2013, Genoa, Italy.
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.