52
2IMP25 Software Evolution Architecture Evolution Alexander Serebrenik

Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

2IMP25 Software Evolution

Architecture Evolution Alexander Serebrenik

Page 2: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Announcements

•  Reminder Assignment 1 deadline: Feb 19, 23:59. •  Do not wait till 23:58…

•  Guest lecture by Prof Vinju postponed to Feb 24.

/ SET / W&I PAGE 2 17/02/16

Page 3: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Sources

/ SET / W&I PAGE 3 17/02/16

Architecture reconstruction slides Rainer Koschke (in German) http://www.informatik.uni-bremen.de/st/lehredetails.php?id=3&lehre_id=309

Page 4: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Where are we now?

•  Last time: requirements •  This week: architecture

•  [IEEE Std. 1471-2000] Software architecture is the fundamental organization of a system embodied in •  its components, •  their relationships to each other and to the

environment, •  and the principles guiding its design and evolution.

/ SET / W&I PAGE 4 17/02/16

Page 5: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Components? Relations?

•  Many views: •  Kruchten’s 4+1 •  Siemens •  Zachman •  Perry and Wolf •  Clements et al. •  …

/ SET / W&I PAGE 5 17/02/16

•  M: module: static structure •  decomposition •  use •  generalization •  layers

•  CC: component & connectors: runtime structure

•  pipe and filter •  shared data •  publish and subscribe •  client server •  peer-to-peer •  communicating processes

•  A: allocation: embedding in organizational development context

•  deployment •  implementation •  work assignment

Page 6: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Architecture

•  As intended

•  As described •  Architecture Description Languages −  Should express different views

•  As implemented •  Code, deployment •  From code to architecture: reverse engineering −  Should extract different views

/ SET / W&I PAGE 6 17/02/16

evolution

evolution

Page 7: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Reverse Engineering

•  [Chikofsky, Cross II 1990] Reverse Engineering is the process of analyzing a subject system to •  identify the system’s components and their

interrelationships and •  create representations of the system in another form or

a higher level of abstraction.

•  Reverse engineering: different meanings

/ SET / W&I PAGE 7 17/02/16

Page 8: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Our Reverse Engineering

•  [Koschke 2008] Architecture reconstruction is the process of analyzing a subject system to reconstruct architectural views.

•  Different views require different architecture reconstruction techniques! •  No silver bullets!

/ SET / W&I PAGE 8 17/02/16

Page 9: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

How can we choose the right AR approach? GQ(V)M!

•  Goals: What problem does the AR try to solve? •  Ex.: Changes affect too many modules •  Goal: Assess and improve current modularisation

•  Questions: What do we need to know to achieve the goal? •  What are the dependencies between the modules? •  How can one improve the modularisation?

•  Views: Which views are needed to answer the questions? •  Module-Use Views: as-is + improved

•  Metrics: How can we quantify the answers? •  Number of dependencies between the modules, …

/ SET / W&I PAGE 9 17/02/16

Page 10: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Architecture Reconstruction ⇒ UML

•  UML •  De facto standard architecture description language •  Various diagrams corresponding to different views −  Structure: − Class diagrams, package diagrams

−  Behaviour: − Sequence diagrams, state machines, activity

diagrams

•  AR is implemented in many commercial, open-source and academic tools •  Assignment 2! •  @TUe: CPP2XMI, I2SD

/ SET / W&I PAGE 10 17/02/16

Today

Page 11: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

AR: Class diagrams

•  Basic idea

/ SET / W&I PAGE 11 17/02/16

import java.util.*; class User { int userCode; String fullName; static int nextCodeAv = 0; … public User(String name) { fullname = Name; userCode = User.nextCodeAv++; } public int getCode() { return userCode; } }

User

userCode: int fullName: String nextCodeAv: int

User(String name) getCode(): int

Do not draw the library classes

Page 12: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What about the relationships?

/ SET / W&I PAGE 12 17/02/16

Tonella, Potrich 2005

Relationships Code Association / aggregation

class A { B b; }

Dependency

class A { void f(B b) {b.g(); } } class A { void f() {B b; … b.g();} }

Generalization

class A extends B {…}

Realization

class A implements B {…}

A B

A B

A B

A B

Page 13: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Library example

•  Looks strange… •  No relations between the library, its documents and

its users? / SET / W&I PAGE 13 17/02/16

Tonella, Potrich 2005 Library

Loan

User Document

TechReport Book Journal InternalUser

user loan document

Page 14: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What is going on?

•  Relation between Library and Map/Collection •  Not drawn: library classes

•  Containers are weakly typed •  Collect objects of the type that

is not yet declared •  Relation between Library and

User is missed / SET / W&I PAGE 14 17/02/16

class Library { Map documents = new HashMap(); Map users = new HashMap(); Collection loans = new LinkedList(); public boolean addUser(User user) { if (!users.containsValue(user)) {

users.put( new Integer( user.getCode()), user); return true;

} return false; } }

Page 15: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What do we need?

•  Flow of information about objects •  creation by allocation statements, •  assignment to variables, •  storage in class fields, •  usage in method invocations

•  Data-flow analysis •  We need a data structure to propagate the information •  It should represent relations between objects

•  Both backward and forward propagation

/ SET / W&I PAGE 15 17/02/16

( ) ( ) ( ) ( )nkillngenninnout \∪=

( )( )

( )poutninnpredp∈

= ∪( )( )

( )poutninnsuccp∈

= ∪ of

Page 16: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Data-flow analysis

Recall: •  We need a data structure to propagate the

information •  It should represent relations between objects

Solution: Object Flow Graph •  Vertices: variables, fields, method parameters

(everything that can store data) •  Edges: represent data flow (see next slide)

/ SET / W&I PAGE 16 17/02/16

Page 17: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Basic idea: Object Flow Graph

•  Vertices: variables, •  x = y •  x = y.m(a1, …, ak)

•  Method m(f1, …, fk)

•  x = new c(a1, …, ak)

•  cs – constructor of c

/ SET / W&I PAGE 17 17/02/16

y x

y m.this

a1 f1 ak fk …

m.return x

a1 f1 ak fk …

cs.this x

fields, method parameters , method invocations and returns

Page 18: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Example: Object Flow Graph

/ SET / W&I PAGE 18 17/02/16

public boolean borrowDocument(User user, Document doc) { if (user == null || doc == null) return false; if (user.numberOfLoans() < MAX_NUMBER_OF_LOANS &&

doc.isAvailable() && doc.authorizedLoan(user)) { Loan loan = new Loan(user, doc); addLoan(loan); return true;

} return false; } Library.borrowDocument.user

User.numberOfLoans.this

Document.authorizedLoan.user

Loan.Loan.usr

Page 19: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

public boolean borrowDocument(User user, Document doc) { if (user == null || doc == null) return false; if (user.numberOfLoans() < MAX_NUMBER_OF_LOANS &&

doc.isAvailable() && doc.authorizedLoan(user)) { Loan loan = new Loan(user, doc); addLoan(loan); return true;

} return false; }

Example: Object Flow Graph

/ SET / W&I PAGE 19 17/02/16

•  Control-flow is ignored •  Fields, parameters and methods are

encoded with fully qualified names

Loan.Loan.this

Library.borrowDocument.loan

Library.addLoan.loan

Page 20: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Question

•  Does the path in the OFG always correspond to a possible execution?

/ SET / W&I PAGE 20 17/02/16

if (user != null) Loan loan = new Loan(user, doc); if (user == null) addLoan(loan);

•  This approach is conservative (safe): •  no path in the Object Flow Graph ⇒ no execution can

produce the flow •  path in the Object Flow Graph ⇒ ???

Loan.Loan.this

Library.borrowDocument.loan

Library.addLoan.loan

Page 21: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

How can we use our graphs?

•  Problem: declared type ≠ actual type •  Subclasses and implemented interfaces •  Inheritance from a library superclass/interface is not

visible in a class diagram!

•  In general: undecidable, we try our best •  For any “x = new c” node record c: •  Propagate this information through the graph: −  From creation to use (forward)

/ SET / W&I PAGE 21 17/02/16

( ) { }cthiscsgen =.

Page 22: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Example

/ SET / W&I PAGE 22 17/02/16

1

1

2

2

4

4

3 3

gen(Student.Student.this) = {Student}

out(BTN.obj) = {Student}

out(Student.Student.this) = {Student}

out(UA.main.s) = {Student}

out(UA.addStudent.s) = {Student}

out(BTN.BTN.x) = {Student}

Student.Student.this

UA.main.s

UA.addStudent.s

BTN.BTN.x

BTN.obj

Page 23: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Example

/ SET / W&I PAGE 23 17/02/16

1

1

2

2

4

4 3

3

gen(Student.Student.this) = {Student}

out(BTN.obj) = {Student}

out(Student.Student.this) = {Student}

out(UA.main.s) = {Student}

out(UA.addStudent.s) = {Student}

out(BTN.BTN.x) = {Student}

Student.Student.this

UA.main.s

UA.addStudent.s

BTN.BTN.x

BTN.obj

class BinaryTreeNode { BinaryTreeNode left, right; Comparable obj; public BinaryTreeNode (Comparable x) { obj = x; }

} class UniversityAdmin {

static BinaryTree students = new BinaryTree(); public static addStudent (Student s) { BinaryTreeNode n = new BinaryTreeNode(s); students.insert(n); } public static void main(String args[]) { Student s = new Student(“Jane Smith”); addStudent(s); }

}

Page 24: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What about containers?

•  Containers: Map, List, Collection, Vector… •  Weakly typed: Collect objects of the type that is not

yet declared.

•  Operations: insert and extract •  Information flow −  insert

−  extract

•  The same approach works!

/ SET / W&I PAGE 24 17/02/16

element collection

element collection

Page 25: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Back to the original problem: Missing link

/ SET / W&I PAGE 25 17/02/16

class Library { Map documents = new HashMap(); Map users = new HashMap(); Collection loans = new LinkedList(); public boolean addUser(User user) { if (!users.containsValue(user)) {

users.put( new Integer( user.getCode()), user); return true;

} return false; } }

Library.addUser.user

Library.users

Page 26: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Back to the original problem: Missing link

/ SET / W&I PAGE 26 17/02/16

class Main { static Library lib = new Library(); … public static void addUser(String cmd) { … User user = new User(args[0], args[1]) lib.addUser(user); … } } Library.addUser.user

Library.users

Main.addUser.user

User.User.this

1 1

2

2

gen(User.User.this) = {User}

out(Library.users) = {User}

Page 27: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Back to the original problem: Missing link

/ SET / W&I PAGE 27 17/02/16

Library.addUser.user

Library.users

Main.addUser.user

User.User.this

gen(User.User.this) = {User}

out(Library.users) = {User}

Library

Loan

User Documen

t

TechReport Book Journal InternalU

ser

users

Page 28: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Is this all?

•  Associations can be introduced by extraction:

/ SET / W&I PAGE 28 17/02/16

public List searchDocumentByTitle(String title) { List docsFound = newLinkedList(); Iterator i = documents.values().iterator(); while (i.hasNext()) {

Document doc = (Document)i.next(); if (doc.getTitle().indexOf(title) != -1) docsFound.add(doc);

} return docsFound; }

gen(Library.sDBT.i) = {Document}

out(Library.documents) = {Document}

•  Data-flow analysis progresses backwards!

Library.documents

Library.searchDocumentByTitle.i

Library.searchDocumentByTitle.doc

Page 29: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Library

Loan

User Document

TechReport Book Journal InternalUser

user loan document

Concluding the example…

/ SET / W&I PAGE 29 17/02/16

Tonella, Potrich 2005

•  Red associations were omitted by the “basic” AR technique.

loans

loans users

documents

Page 30: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Concluding the example…

/ SET / W&I PAGE 30 17/02/16

•  Red associations were omitted by the “basic” AR technique.

Library

Loan

User Document

TechReport Book Journal InternalUser

Page 31: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Summary so far: AR – Class diagrams

•  Implemented in many tools •  How precise? Depends on the tool…

•  Basic technique is very simple but imprecise

•  Improving precision necessitates data-flow analysis

/ SET / W&I PAGE 31 17/02/16

Page 32: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

/ LaQuSo / Mathematics & Computer Science PAGE 32 17/02/16

Is this the Holy Grail?..

Page 33: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Packages

•  Higher level of abstraction •  OO-languages usually contain explicit mechanism:

•  packages (Java), namespaces (C++), modules (Modula) •  Easily derived from the class diagram

/ SET / W&I PAGE 33 17/02/16

Library

Loan

User Document

TechReport Book Journal InternalUser

Page 34: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Better visualizations

/ SET / W&I PAGE 34 17/02/16

Page 35: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What if the packages are unknown?

•  When can it happen? •  Suitability for evolution −  Packaging is being assessed for appropriateness

•  Implementation of evolution −  Legacy language with no “packaging” −  Inappropriate packaging

•  What can we do? •  Let the user do it her/himself! •  Do it automatically: −  Join “similar” classes together: clustering −  Packages can be composed into larger packages: − Hierarchical clustering

/ SET / W&I PAGE 35 17/02/16

Page 36: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What is a good modularization?

•  Many intra-package dependencies: high cohesion

/ SET / W&I PAGE 36 17/02/16

2i

ii NA µ=

( )1−=

ii

ii NNA µ

or

iN

- Number of dependencies in package i

- Number of classes in package i

Page 37: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What is a good modularization?

•  Many intra-package dependencies: high cohesion

•  Few inter-package dependencies: low coupling

/ SET / W&I PAGE 37 17/02/16

2i

ii NA µ=

( )1−=

ii

ii NNA µ

or

ji

jiji NN

E2

,,

ε=

ji ,ε - Number of dependencies between packages i and j

Page 38: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What is a good modularization?

•  Many intra-package dependencies: high cohesion

•  Few inter-package dependencies: low coupling

•  Joint measure

/ SET / W&I PAGE 38 17/02/16

2i

ii NA µ=

( )1−=

ii

ii NNA µ

or

ji

jiji NN

E2

,,

ε=

∑∑∑−

= +== −−=

1

1 1,

1 )1(21 k

i

k

ijji

k

ii E

kkA

kMQ k - Number of

packages

Page 39: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Modularity Quality

•  What does MQ = -1 mean? •  No cohesion, maximal coupling

•  MQ = 1? •  No coupling, maximal cohesion

/ SET / W&I PAGE 39 17/02/16

∑∑∑−

= +== −−=

1

1 1,

1 )1(21 k

i

k

ijji

k

ii E

kkA

kMQ

Cohesion Coupling

Page 40: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Hierarchical Clustering

•  Init: every element is a cluster on its own •  While (#clusters > 1) do

•  Calculate similarity between all pairs of clusters •  Select two most similar clusters −  Single linkage: max pairwise similarity − Reduces coupling

−  Complete linkage: min pairwise similarity −  Increases cohesion − Usually more important

•  Merge these clusters

/ SET / W&I PAGE 40 17/02/16

Page 41: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Hierarchical clustering example

/ SET / W&I PAGE 41 17/02/16

H F G E D B C A

Page 42: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Hierarchical clustering: Classes

•  Class description: feature vectors •  Dimension: feature −  Methods called, types used, words in the description

•  Coordinate: number of references to this feature •  NB: Should be “discriminating enough”

/ SET / W&I PAGE 42 17/02/16

Variables and fields of the user-defined

classes

Classes

Page 43: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

When are two vectors similar?

•  Distance between and :

•  What happens if the vectors are almost empty? •  Distance is small •  Clustering is imprecise −  d(red,green) = d(green,purple) −  green and purple are more similar

/ SET / W&I PAGE 43 17/02/16

nxx ,...,1 nyy ,...,1

∑=

−n

iii yx

1( )∑

=

−n

iii yx

1

2or

1 3 2

1

Page 44: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Better alternative: Similarity measures

•  Cosine measure:

−  sim(red,green) = 0 −  sim(green,purple) = 1

•  Many more can be found in the literature

/ SET / W&I PAGE 44 17/02/16

∑∑

==

=

n

ii

n

ii

n

iii

yx

yx

1

2

1

2

1

1 3 2

1

Page 45: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Back to the library example

•  Class description: feature vectors •  Dimension: feature −  Methods called, types used, words in the description

•  Coordinate: number of references to this feature

/ SET / W&I PAGE 45 17/02/16

Library Loan Document Book Journal TR User InternalUser

Library <0, 5, 12, 0, 0, 0, 10, 0> Loan <0, 1, 3, 0, 0, 0, 3, 0> Document <0, 2, 1, 0, 0, 0, 3, 0> Book <0, 0, 0, 0, 0, 0, 0, 0> Journal <0, 0, 0, 0, 0, 0, 1, 0> TR <0, 0, 0, 0, 0, 0, 1, 0> User <0, 3, 1, 0, 0, 0, 1, 0> InternalUser <0, 0, 0, 0, 0, 0, 0, 0>

Page 46: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Hierarchical clustering: Library

/ SET / W&I PAGE 46 17/02/16 Loan Document Lib. User TechnicalReport IntUser Journal Book

Library Loan Document Book Journal TR User InternalUser

Library <0, 5, 12, 0, 0, 0, 10, 0> Loan <0, 1, 3, 0, 0, 0, 3, 0> Document <0, 2, 1, 0, 0, 0, 3, 0> Book <0, 0, 0, 0, 0, 0, 0, 0> Journal <0, 0, 0, 0, 0, 0, 1, 0> TR <0, 0, 0, 0, 0, 0, 1, 0> User <0, 3, 1, 0, 0, 0, 1, 0> InternalUser <0, 0, 0, 0, 0, 0, 0, 0>

Page 47: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

From clusters to packages

/ SET / W&I PAGE 47 17/02/16

•  Packages are created by cut points •  Subpackages are created by more cut points

Where can we put the cutline(s)? Evaluate the MQ!

Library Document Loan User TechnicalReport InternalUser Journal Book

Page 48: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Algorithm: what have we done?

•  Init: every element is a cluster on its own •  While (#clusters > 1) do

•  Calculate similarity between all pairs of clusters •  Select two most similar clusters −  Single linkage: max pairwise similarity − Reduces coupling

−  Complete linkage: min pairwise similarity −  Increases cohesion − Usually more important

•  Merge these clusters

/ SET / W&I PAGE 48 17/02/16

We can stop earlier, when the MQ no longer improves

Minor change in cluster partition

Some cluster partition

Page 49: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

This is a combinatorial optimization problem!

•  Hill Climbing: •  Start with a random cluster partitioning •  As long as the optimization function increases −  Select a best “neighbour” partition − Neighbour: small change − Best: with the highest opt. func. value − A: there may be more than one such partition

•  Problems: local maxima, plateau, ridges •  There are better search techniques

•  Search-Based Software Engineering

/ SET / W&I PAGE 49 17/02/16

Page 50: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

What have we seen today?

•  Reverse engineering/architecture reconstruction •  Different views – different approaches •  Goal – Question – Views – Metrics

•  Class diagrams •  Basic approach: simple, imprecise •  Better precision requires data-flow analysis

•  Package diagrams •  “Fixed” or “user-defined” packages •  Automated techniques: −  Clustering −  Search-based, e.g. Hill climbing

/ SET / W&I PAGE 50 17/02/16

Page 51: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Assignment 2: Till March 9!

•  Pairs •  Architecture

reconstruction: •  Using Rascal •  build a small

architecture reconstruction tool for Java, and

•  apply it to study evolution of CyberNeko HTML Parser −  Dec 2007 vs June

2014 / SET / W&I PAGE 51 17/02/16

Page 52: Architecture Evolutionaserebre/2IMP25/2015-2016/3.pdfWhere are we now? • Last time: requirements • This week: architecture • [IEEE Std. 1471-2000] Software architecture is the

Rascal???

•  Meta-programming language •  Developed at CWI

•  Jurgen Vinju and his team •  http://www.rascal-mpl.org/

•  Next Wednesday: Guest lecture of Jurgen Vinju about

Rascal

/ SET / W&I PAGE 52 17/02/16