Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine...
-
Upload
ernest-robinson -
Category
Documents
-
view
216 -
download
0
description
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: [email protected] body: subscribe reuse