110 likes | 241 Views
Documenting Evolving Software Systems through Reuse Contracts. Kim Mens Patrick Steyaert Carine Lucas Programming Technology Lab, Vrije Universiteit Brussel. OOPSLA’96 Workshop on Object-Oriented Software Evolution and Reengineering. Monday, 7 October 1996. Managing Evolution.
E N D
Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick Steyaert Carine Lucas Programming Technology Lab, Vrije Universiteit Brussel OOPSLA’96 Workshop on Object-Oriented Software Evolution and Reengineering. Monday, 7 October 1996.
Managing Evolution How to cope with change and evolution ? Managing Evolution of software systems = Managing Dependencies between system parts Minimise Dependencies Document Dependencies: “Reuse Contracts”
Managing Dependencies local changes evolution evolution change propagation Most changes have local impact, but ... ... some changes cannot be kept local. Minimise dependencies Document dependencies
Minimising Dependencies How to cope with change and evolution? Minimise dependencies between system parts! Evolution local changes Most changes have local impact. BUT ...
Documenting Dependencies Some changes cannot be kept local. Evolution Need for documentation of dependencies. change propagation of change
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?
Evolution in Class Hierarchies Case Study: parent class exchange Abstract A Abstract A’ ? SubClass B SubClass B’ SubClass C SubClass C’ Need for documentation of dependencies
Conflicts: Inconsistent Methods Set OptimizedSet add(Element) add(Element) addAll(Set) addAll(Set) CountingSet CountingSet count+1 count+1 add(Element) add(Element) addAll(Set) addAll(Set) Not all elementsare counted
Detecting Conflicts • Coarsening • addAll(Set) {-add} Set OptimizedSet add(Element) add(Element) addAll(Set) {add} addAll(Set) {} • Concretisation • add • Concretisation • add CountingSet CountingSet add(Element) add(Element) inconsistent method conflict for add and addAll
Environmental & Tool Support implementation reuse contract Change add(El) unstable design addAll(Set) synchronisation add(El) addAll(Set) Warning ! • Synchronisation: reuse contracts implementation • Detection of problems when changes are made (PROLOG) • Extraction of reuse contracts from code (Smalltalk)
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.be • in body: subscribe reuse