+ All Categories
Home > Technology > PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Date post: 10-Jul-2015
Category:
Upload: aakash-ahmad
View: 247 times
Download: 3 times
Share this document with a friend
Popular Tags:
13
Lero© 2013 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.
Transcript
Page 1: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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.

Page 2: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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

Page 3: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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.

Page 4: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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.

[Add, Remove, Modify] <Components, Connctor, Configurations>

Component PortConnector

Endpoints

<<atomic>><<Composite>>

Configuration

1

2

3[ISO/IEC/IEEE 42010 Standard]

Evolved

ArchitectureC1 C2 Add Remove

ModifyC1 C2

CMSource

Architecture

B. Evolution in CBSAs

Page 5: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Research Problem: How to foster an explicit evolution-centric knowledge that enables

modeling and executing reuse of frequent evolution tasks in CBSAs?

Research Challenges:

- Empirical acquisition of reuse Knowledge and Expertise

- Application of reuse knowledge to evolve CBSAs

Research Problem and Challenges

“[…] 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

Page 6: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Architecture Change Mining as a complementary and integrated

phase to Architecture Change Execution

1. Change Mining (Patterns Discovery) 2. Change Execution (Pattern Application)

Proposed Solution

Architecture Change Logs

Change

Operationalisation

Operationl

Dependencies

Architecture

Change Patterns

A B

C

Collection of Patterns

Change

SpecificationC1 C2

Source

Architecture

Change

Execution

Evolved

Architecture

C1 C2

CM

Collection of Patterns

Change Reuse

A

B

C

Page 7: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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).

Page 8: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

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).

Pat-Evol - Change Pattern Language for Evolution in CBSAs

Language SequencingLanguage GrammarLanguage Vocabulary

Pattern Classification

- Pattern Instances

- Pattern Variants

Pattern Model

- Pattern Composition

- Semantic Relations

Pattern Classification

- Pattern Selection

- Pattern Relations

Graph-based Modeling of Pattern Language

Page 9: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Pattern Instances in the Language

Integrate(PRE, (C1, CM, C2), POST)

Pattern Selection with Question Option

Criteria (QOC) Methodology

Page 10: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Change Patterns to guide Architecture Evolution

Pattern Name Consequences Pattern Intent

Component Mediation

(CM , <C1, CM, C2>)

Integrates a component CM

among two or more directly

connected components C1, C2

Functional Slicing

(C, <C1, C2>)

Splits a component C in two or

more components C1, C2

Functional Unification

(<C1, C2>, C)

Merge two or more components

C1, C2 into a single component

C.

Active Displacement

(C2:C3, <C1, C2>, <C1, C3>)

Replace an existing Component

C1 with C3 while maintaining

connection with existing

component C2

Child Creation

(C1, x:C1)

Create a child component x1

inside an atomic Component C1

Child Adoption

(x:C1, <C1,x>, <C2, x>)

Move an internal component x

from its parent component C1

to another component C2

Child Swap

(x:C1, y:C2, <C1,x>, <C2, y>)

Swap an internal component x in

C1 to y in C2

Page 11: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Change Anti-PatternsAnti-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).

Page 12: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Discover Evolution Pattern

- prototype: G-Pride

Maintain Pattern Library

- prototype: Pat-Lib

Reuse Change Execution

- prototype: Pat-Evol

Pa

t-Ev

olP

roje

ct

Recap

Page 13: PatEvol - A Pattern Language for Evolution in Component-based Software Architectures

Lero© 2013

Thank you for your attention.


Recommended