130 likes | 284 Views
Reuse Contracts. A Historic Overview. Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE 1999-2000. Reuse Contracts (RCs). 1996 1997 1998 1999 2000. Base class exchange in OO class hierarchies C. Lucas : RCs for class collaborations
E N D
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE 1999-2000
Reuse Contracts (RCs) • 1996 • 1997 • 1998 • 1999 • 2000 • Base class exchange in OO class hierarchies • C. Lucas: RCs for class collaborations • M. Mezini: Smalltalk tool support • K. De Hondt: Reverse engineering • RCs for UML collaboration diagrams • T. Mens: A formalism for RCs • T. Mens: RCs in UML metamodel • K. Mens: RCs for architectural evolution • T. Mens: Software merging Programming Technology Lab, Vrije Universiteit Brussel
Publications about RCs • [Steyaert&al1996] P. Steyaert, C. Lucas, K. Mens, T. D’Hondt. Reuse contracts: managing the evolution of reusable assets. Proc. OOPSLA’96. • [Codenie&al1997] W. Codenie, K. De Hondt, P. Steyaert, A. Vercammen. From custom applications to domain-specific frameworks. Communications of the ACM. • [Mezini1997] M. Mezini. Maintaining the consistency of class libraries during their evolution. Proc. OOPSLA’97. • [Mens&al1998] T. Mens, C. Lucas, P. Steyaert. Supporting disciplined reuse and evolution of UML models. Proc. <<UML>>’98. • [Mens&al2000] T. Mens, T. D’Hondt. Automating support for software evolution in UML. Automated Software Engineering Journal. • [Mens2000] T. Mens. Conditional graph rewriting as a domain-independent formalism for software evolution. Proc. Agtive’99. Programming Technology Lab, Vrije Universiteit Brussel
PhD Dissertations about RCs • [Lucas1997] • C. Lucas. Documenting Reuse and Evolution with Reuse Contracts. PhD Dissertation. • [DeHondt1998] • K. De Hondt. A Novel Approach to Architectural Recovery in Evolving Object-Oriented Systems. PhD Dissertation. • [Mens1999] • T. Mens. A Formal Foundation for Object-Oriented Software Evolution. PhD Dissertation. Programming Technology Lab, Vrije Universiteit Brussel
Dissertations about RCs • [Cornelis1997] • G. Cornelis. Reuse Contracts as a Modular System in Statically Typed Object-Oriented Languages. Dissertation. • [D’Hondt1998] • M. D’Hondt. Managing Evolution of Changing Software Requirements. Dissertation. • [Romero1999] • N. Romero. Managing Evolution of Software Architectures with Reuse Contracts. EMOOSE Dissertation. • [Arganaraz1999] • V. Arganaraz. Definition and validation of statically typed reuse contracts. EMOOSE Dissertation. Programming Technology Lab, Vrije Universiteit Brussel
A’ A B C D E F 1996 • Fragile base class problem • independently developed subclasses of a given base class can be broken when the base class evolves (base class exchange) • Reuse Contracts [Steyaert&al1996] • subdividing inheritance mechanism in more primitive operations (contract types) • extension, cancellation, refinement, coarsening • categorisation of conflicts upon base class exchange, based on primitive contract types • Contract clauses • use specialisation interfaces • client interfaces + self sends between methods Programming Technology Lab, Vrije Universiteit Brussel
1997 • Tools • Experiments with RCs in Smalltalk • Implementation of a reuse contract extractor (Koen De Hondt) to automatically generate reuse contracts from the code • Support for base class exchange in Smalltalk by means of metaprogramming (Mira Mezini) Programming Technology Lab, Vrije Universiteit Brussel
A B C A’ B C’ 1997 ctd. • Problems • Previous approach too small scale. Only evolution of single classes. Need for dealing with collaborations of classes. • Need for more scalability, such as composite contract types. • Too implementation-oriented. Transfer the ideas to design phase. • PhD Dissertation [Lucas1997] • Reuse contracts for class collaborations • primitive contract types • evolution conflicts • composite contract types Programming Technology Lab, Vrije Universiteit Brussel
1998 • Reuse Contracts for UML • UML = standardised analysis and design notation (OMG, September 1997) • [Mens&al1998] shows how to integrate RC framework into UML • PhD Dissertation [De Hondt1998] • Reverse engineering: mechanism for (semi-) automatically recovering class collaborations from Smalltalk-code • Supported by a tool in Smalltalk Programming Technology Lab, Vrije Universiteit Brussel
1999 • Problems • No general underlying formalism for reuse contracts. • PhD Dissertation [Mens1999] • Underlying formal foundation for reuse contracts • based on conditional graph rewriting • extension of existing ideas on RCs • customisable to many different areas • Tools • Domain-independent tool for detecting evolution conflicts, implemented in PROLOG Programming Technology Lab, Vrije Universiteit Brussel
2000 • Reuse contracts for Software Merging • Three-way • Syntactic and Semantic Merging • Operation-based / Change-based • Validation of RCs in industrial case Programming Technology Lab, Vrije Universiteit Brussel
To Do • Validation of RCs in real case • Scalability • Classification of evolution conflicts according to severity. • Applying RCs to new domains • RCs for traceability • analysis->design->implementation • RCs for non-OO paradigms • RCs for distributed programming, real time programming, workflow, AOP, … • Reuse and evolution metrics based on RCs Programming Technology Lab, Vrije Universiteit Brussel
To Do ctd. • Support for RCs • CASE Tool support (with UML) • Rational Rose, SELECT, ... • Language Support • Smalltalk, C++, Java • Methodology Support • Integration of RCs in full-fledged methodology • Extension of RC formalism • Generic Reuse Contracts • More behavioural information • Ordering of dependencies, … • Conflict resolution strategies • RC operations for composition/decomposition Programming Technology Lab, Vrije Universiteit Brussel