758136c64811fab2a0456b7cbecf6080.ppt
- Количество слайдов: 13
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE. RC EMOOSE 1999 -2000
Reuse Contracts (RCs) n 1996 u Base class exchange in OO class hierarchies n 1997 u C. Lucas: RCs for class collaborations M. Mezini: Smalltalk tool support u u n 1998 K. De Hondt: Reverse engineering RCs for UML collaboration diagrams u n 1999 u T. Mens: A formalism for RCs n 2000 u T. Mens: RCs in UML metamodel K. Mens: RCs for architectural evolution T. Mens: Software merging u u
Publications about RCs n [Steyaert&al 1996] P. Steyaert, C. Lucas, K. Mens, T. D’Hondt. Reuse contracts: managing the evolution of reusable assets. Proc. OOPSLA’ 96. n [Codenie&al 1997] W. Codenie, K. De Hondt, P. Steyaert, A. Vercammen. From custom applications to domain-specific frameworks. Communications of the ACM. n [Mezini 1997] M. Mezini. Maintaining the consistency of class libraries during their evolution. Proc. OOPSLA’ 97. n [Mens&al 1998] T. Mens, C. Lucas, P. Steyaert. Supporting disciplined reuse and evolution of UML models. Proc. <
Ph. D Dissertations about RCs n [Lucas 1997] u n [De. Hondt 1998] u n K. De Hondt. A Novel Approach to Architectural Recovery in Evolving Object-Oriented Systems. Ph. D Dissertation. [Mens 1999] u February, 2000 C. Lucas. Documenting Reuse and Evolution with Reuse Contracts. Ph. D Dissertation. T. Mens. A Formal Foundation for Object-Oriented Software Evolution. Ph. D Dissertation. Programming Technology Lab, Vrije Universiteit Brussel
Dissertations about RCs n [Cornelis 1997] u n [D’Hondt 1998] u n N. Romero. Managing Evolution of Software Architectures with Reuse Contracts. EMOOSE Dissertation. [Arganaraz 1999] u February, 2000 M. D’Hondt. Managing Evolution of Changing Software Requirements. Dissertation. [Romero 1999] u n G. Cornelis. Reuse Contracts as a Modular System in Statically Typed Object-Oriented Languages. Dissertation. V. Arganaraz. Definition and validation of statically typed reuse contracts. EMOOSE Dissertation. Programming Technology Lab, Vrije Universiteit Brussel
1996 A’ A n Fragile base class problem u B C D n Reuse Contracts [Steyaert&al 1996] u E independently developed subclasses of a given base class can be broken when the base class evolves (base class exchange) F subdividing inheritance mechanism in more primitive operations (contract types) F u n extension, cancellation, refinement, coarsening categorisation of conflicts upon base class exchange, based on primitive contract types Contract clauses u use specialisation interfaces F client interfaces + self sends between methods
1997 n Tools u u u February, 2000 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
1997 ctd. n Problems u A B u C u A’ B n Ph. D Dissertation [Lucas 1997] u C’ 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. Reuse contracts for class collaborations F F F primitive contract types evolution conflicts composite contract types
1998 n Reuse Contracts for UML u u n UML = standardised analysis and design notation (OMG, September 1997) [Mens&al 1998] shows how to integrate RC framework into UML Ph. D Dissertation [De Hondt 1998] u u Reverse engineering: mechanism for (semi-) automatically recovering class collaborations from Smalltalk-code Supported by a tool in Smalltalk
1999 n Problems u n No general underlying formalism for reuse contracts. Ph. D Dissertation [Mens 1999] u Underlying formal foundation for reuse contracts F F F n based on conditional graph rewriting extension of existing ideas on RCs customisable to many different areas Tools u Domain-independent tool for detecting evolution conflicts, implemented in PROLOG
2000 n Reuse contracts for Software Merging u u u n February, 2000 Three-way Syntactic and Semantic Merging Operation-based / Change-based Validation of RCs in industrial case Programming Technology Lab, Vrije Universiteit Brussel
To Do n Validation of RCs in real case u u n Scalability Classification of evolution conflicts according to severity. Applying RCs to new domains u RCs for traceability F u u n analysis->design->implementation RCs for non-OO paradigms RCs for distributed programming, real time programming, workflow, AOP, … Reuse and evolution metrics based on RCs
To Do ctd. n Support for RCs u CASE Tool support (with UML) F u Language Support F u Integration of RCs in full-fledged methodology Extension of RC formalism u u Generic Reuse Contracts More behavioural information F u u February, 2000 Smalltalk, C++, Java Methodology Support F n Rational Rose, SELECT, . . . Ordering of dependencies, … Conflict resolution strategies RC operations for composition/decomposition Programming Technology Lab, Vrije Universiteit Brussel