More Related Content
Similar to PatEvol - A Pattern Language for Evolution in Component-based Software Architectures (20)
PatEvol - A Pattern Language for Evolution in Component-based Software Architectures
- 1. PatEvol – A Pattern Language for Evolution
in Component-Based Software Architectures
Aakash Ahmad, Pooyan Jamshidi, Claus Pahl, Fawad Khaliq
Lero – the Irish Software Engineering Research Centre
School of Computing, Dublin City University, Ireland.
Lero© 2013
- 2. Agenda
Architecture-Centric Software Evolution
Evolution in Component-based Software Architectures
Research Problem and Challenges
Proposed Solution
The Anatomy of Pattern-based Architecture Evolution
Pat-Evol - Change Pattern Language for Evolution in CBSAs
Change Patterns to guide Architecture Evolution
Change Anti-Patterns
Conclusions
Lero© 2013
- 3. Architecture-Centric Software Evolution
Software Architecture represents the blue-print of a software as
topological configuration of computational components and connectors that
enable component-level interconnections. [ISO/IEC/IEEE 42010 Standard]
Software Evolution deals with adapting a software to changing
requirements and operating environment by means of addition, removal and
modification of software artifacts. [ACM/IEEE Software Engineering Curriculum, 2004]
Reuse-driven Architecture Evolution empowers
the role of software architect by promoting
generic and reusable off-the-shelf evolution expertise.
Lero© 2013
- 4. Evolution in Component-based Software Architectures
A. Component-Based Software Architecture (CBSA)
1. Component – Computation, Data Stores, Message Processor, […]
2. Connector – Component Interconnection, Message Passing, […]
3. Configuration – topology of components and connectors to model architecture.
<<Composite>>
<<atomic>> 2
Component Port Connector
1 Endpoints
[ISO/IEC/IEEE 42010 Standard] Configuration
3
B. Evolution in CBSAs
[Add, Remove, Modify] <Components, Connctor, Configurations>
Source CM Evolved
Architecture C1 C2 Add Remove Architecture
C1 C2
Modify
Lero© 2013
- 5. Research Problem and Challenges
Research Problem: How to foster an explicit evolution-centric knowledge that enables
modeling and executing reuse of frequent evolution tasks in CBSAs?
“[…] in software architectures, evolution-centric reuse knowledge and expertise are
expressed as Styles and Patterns etc. that offer repeatable change implementation
expertise; that can be shared and reused as a solution to frequent (architecture) evolution
problems”
Our Systematic Literature Reviews:
[1] A Framework for Classifying and Comparing Architecture-Centric Software Evolution Research, in CSMR’2013.
[2]. Reuse-driven Evolution and Adaptation in Software Architectures – A Systematic Literature Review, in preparation
Research Challenges:
- Empirical acquisition of reuse Knowledge and Expertise
- Application of reuse knowledge to evolve CBSAs
Lero© 2013
- 6. Proposed Solution
Architecture Change Mining as a complementary and integrated
phase to Architecture Change Execution
1. Change Mining (Patterns Discovery) 2. Change Execution (Pattern Application)
Architecture Change Logs
A
Change
C1 C2
Specification
Source
A B
Operationl
Architecture Change Reuse
Change
Operationalisation Dependencies
B
Architecture
C
Change Patterns Collection of Patterns
CM
Change
C1 C2 Execution
C
Evolved
Architecture
Collection of Patterns
Lero© 2013
- 7. The Anatomy of Pattern-based Architecture Evolution
Change pattern provides a generic, first class abstraction (that can be operationalised and
parameterised) to support potential reuse in architectural change execution.
𝐼𝑁𝑉(𝑂𝑃𝑅𝑛(𝑎𝑒𝑚∈𝐴𝐸))
PAT<name, intent>: PRE(aem ∈ AE) POST(ae′m ∈ AE).
Lero© 2013
- 8. Pat-Evol - Change Pattern Language for Evolution in CBSAs
The pattern language represents a formalised collection of architecture change patterns
to map problem-solution view of the domain (i.e; family of evolving CBSAs).
Language Vocabulary Language Grammar Language Sequencing
Pattern Classification Pattern Model Pattern Classification
- Pattern Instances - Pattern Composition - Pattern Selection
- Pattern Variants - Semantic Relations - Pattern Relations
Graph-based Modeling of Pattern Language
Lero© 2013
- 9. Pattern Instances in the Language
Pattern Selection with Question Option
Criteria (QOC) Methodology
Integrate(PRE, (C1, CM, C2), POST)
Lero© 2013
- 10. Change Patterns to guide Architecture Evolution
Pattern Name Consequences Pattern Intent
Integrates a component CM
Component Mediation among two or more directly
(CM , <C1, CM, C2>) connected components C1, C2
Functional Slicing Splits a component C in two or
(C, <C1, C2>) more components C1, C2
Merge two or more components
Functional Unification C1, C2 into a single component
(<C1, C2>, C) C.
Replace an existing Component
Active Displacement C1 with C3 while maintaining
(C2:C3, <C1, C2>, <C1, C3>) connection with existing
component C2
Child Creation Create a child component x1
(C1, x:C1) inside an atomic Component C1
Move an internal component x
Child Adoption from its parent component C1
(x:C1, <C1,x>, <C2, x>) to another component C2
Child Swap Swap an internal component x in
(x:C1, y:C2, <C1,x>, <C2, y>) C1 to y in C2
Lero© 2013
- 11. Change Anti-Patterns
Anti-pattern I – Orphan Child
• Prevention 1 – Kill the child if parent is dead).
• Prevention 2 – Apply the Child Adoption pattern to accommodate an orphan (i.e;
adopt the child if parent is dead).
Anti-pattern II – Bulky Component
Prevention – Apply Functional Slicing pattern to split the parent into fine-grained and
specialised components, Figure 4b).
Lero© 2013
- 12. Recap
Discover Evolution Pattern
- prototype: G-Pride
Pat-Evol Project
Maintain Pattern Library
- prototype: Pat-Lib
Reuse Change Execution
- prototype: Pat-Evol
Lero© 2013