Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit...
-
Upload
valentine-willis -
Category
Documents
-
view
217 -
download
0
description
Transcript of Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit...
Reuse Contracts
A Historic Overview
Dr. Tom MensProgramming Technology Lab
Vrije Universiteit Brussel
Course OOSE.RC
EMOOSE 1999-2000
February, 2000 Programming Technology Lab, Vrije Universiteit Brussel
Reuse Contracts (RCs) 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
1996
1997
1998
1999
2000
February, 2000 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.
February, 2000 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.
February, 2000 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.
February, 2000 Programming Technology Lab, Vrije Universiteit Brussel
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
A
B
C D
E F
A’
February, 2000 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)
February, 2000 Programming Technology Lab, Vrije Universiteit Brussel
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
A B
C
A’ B
C’
February, 2000 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
February, 2000 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
February, 2000 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
February, 2000 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
February, 2000 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