Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine...

Post on 19-Jan-2018

216 views 0 download

description

3 Managing Dependencies Minimise dependencies Most changes have local impact, local changes changepropagation evolution but some changes cannot be kept local. Document dependencies

Transcript of Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine...

Documenting Evolving Software Systems through

Reuse ContractsKim Mens

Patrick Steyaert

Carine Lucas

Programming Technology Lab,Vrije Universiteit BrusselOOPSLA’96 Workshop on Object-Oriented Software Evolution and Reengineering.

Monday, 7 October 1996.

2

Managing Evolution

Managing Evolution of software systems =Managing Dependencies between system parts

MinimiseDependencies

Document Dependencies:“Reuse Contracts”

How to cope with change and evolution ?

3

Managing Dependencies

Minimise dependencies

Most changes have local impact,

local changes

change

propagation

evolution evolution

but ...... some changes cannot be kept local.

Document dependencies

4

Minimising Dependencies

Evolution

How to cope with change and evolution?

Minimise dependencies between system parts!

Most changes have local impact.

local changes

BUT ...

5

Documenting Dependencies

Evolution

Some changes cannot be kept local.

Need for documentation of dependencies.

propagation of change

change

6

Reuse Contracts: Documenting Evolving Software Systems.

Documenting dependencies:

• Which parts depend on which other parts? where will problems occur?

• How do they depend on each other? what is the problem? how can it be solved?

7

Evolution in Class Hierarchies

Abstract A

SubClass B

SubClass C

Abstract A’

SubClass B’

SubClass C’

parent classexchange

?

Need for documentationof dependencies

Case Study:

8

Conflicts: Inconsistent Methods

Set

add(Element)addAll(Set)

CountingSetadd(Element)

OptimizedSet

addAll(Set)

add(Element)addAll(Set)

CountingSetadd(Element)addAll(Set)

count+1 count+1

Not all elementsare counted

9

Detecting ConflictsCoarsening

¦ addAll(Set) {-add}Set

add(Element)

CountingSet

add(Element)

Concretisation

¦ add

OptimizedSet

add(Element)addAll(Set) {}

CountingSet

add(Element)

Concretisation

¦ add

inconsistent method conflictfor add and addAll

addAll(Set) {add}

10

Environmental & Tool Support

• Synchronisation: reuse contracts implementation• Detection of problems when changes are made (PROLOG)• Extraction of reuse contracts from code (Smalltalk)

reuse contractimplementation

unstable designadd(El)addAll(Set)

addAll(Set)

Warning !

add(El)

Change

synchronisation

11

More about Reuse Contracts• OOPSLA’96 Technical Paper

“Reuse Contracts: Managing the Evolution of Reusable Assets”Wednesday, 9 October 1996, 11:30 am

• Home page:http://progwww.vub.ac.be/prog/pools/rcs/rc.html

• Mailing list: (also see homepage)e-mail: majordomo@cs.vub.ac.bein body: subscribe reuse