Post on 19-Jan-2018
description
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