Documenting Evolving Software Systems through Reuse Contracts Kim Mens Patrick SteyaertCarine Lucas Programming Technology Lab, Vrije Universiteit Brussel OOPSLA’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 Minimise Dependencies Document Dependencies: “Reuse Contracts” How to cope with change and evolution ?
3 Managing Dependencies Minimise dependencies Most changes have local impact, local changes changepropagation 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 changechange
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 class exchange ? Need for documentation of dependencies Case Study:
8 Conflicts: Inconsistent Methods Set add(Element) addAll(Set) CountingSet add(Element) OptimizedSet addAll(Set) add(Element) addAll(Set) CountingSet add(Element) addAll(Set) count+1 Not all elements are counted
9 Detecting Conflicts Coarsening ¦ addAll(Set) {-add} Set add(Element) CountingSet add(Element) Concretisation ¦ add OptimizedSet add(Element) addAll(Set) {} CountingSet add(Element) Concretisation ¦ add inconsistent method conflict for 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 design add(El) 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: Mailing list: (also see homepage) in body: subscribe reuse