=============================== ABSTRACTS OF TECHREPORTS 1997 =============================== #Reference: vub-prog-tr-97-01 "Managing Software Evolution through Reuse Contracts" Carine Lucas, Patrick Steyaert, Kim Mens Proceedings of CSMR '96, 1st EUROMICRO Working Conference On Software Maintenance and Reengineering #Abstract: Assessing the impact of changes in one part of a software system on other parts remains one of the most compelling problems in software maintenance. This problem can be relieved by making implicit dependencies between different system parts explicit. We propose to explicitly document the interaction between the different system parts by means of reuse contracts, that can only be manipulated by formal reuse operators. Reuse contracts and their operators facilitate managing the evolution of a software system by indicating how much work is needed to update the system, by pointing out when and which problems might occur and where and how to test and adjust the system. #Keywords: Reuse contracts, change propagation, evolution #Reference: vub-prog-tr-97-02 "Reuse Contracts: Making Systematic Reuse a Standard Practice" Patrick Steyaert, Carine Lucas, Kim Mens Proceedings of WISR 8 #Abstract: While object-orientation has had a large impact on the popularisation of reuse, reuse in OO is mostly ad hoc and thus lessons can be learned from the work on systematic reuse. On the other hand, the emphasis of object-orientation on iterative development can help in reducing the large up-front investments that are typically associated with systematic reuse. We claim that systematic reuse needs to be reconciled with iterative development in order to make reuse a standard practice. Such a reuse methodology must emphasise the co-operation between asset providers and asset reusers to control how assets can be reused, how assets are reused and how changes propagate from assets to applications during iterative development. We propose reuse contracts as the basis for such a methodology. #Keywords: Reuse contracts, systematic reuse, evolution #Reference: vub-prog-tr-97-03 "Evolving Custom-Made Applications into Domain-Specific Frameworks" Wim Codenie, Koen De Hondt, Patrick Steyaert, Arlette Vercammen CACM, October 1997, Theme Issue on Object-Oriented Application Frameworks #Abstract: Framework development involves many challenges, from a technical as well as a managerial point of view: reuse documentation, proliferation of versions, effort estimation, delta analysis, architectural drift. Several of these challenges are not, or scarcely, addressed by current OOA/OOD methodologies nor by the framework literature. We elaborate on the experiences we had with building a framework for developing commercial applications in the market of broadcast planning. In particular it is shown how we dealt with these challenges during the development of the framework. Reuse contracts are put forward as an indicative solution to a number of problems we encountered. #Keywords: Application frameworks, framework development, reuse contracts #Reference: vub-prog-tr-97-04 "Incremental Design of Layered State Diagrams" Tom Mens, Patrick Steyaert Unpublished #Abstract: Nested state diagrams are a commonly accepted design notation for modelling complex software systems at different levels of detail. Besides nesting, other layering mechanisms are needed. However, incremental development of layered state diagrams raises the problem of change management. Changes made at high abstraction layers can have a serious impact on more concrete layers, as conflicts can be introduced that are propagated through all layers. To resolve these conflicts, the methodology of reuse contracts is applied. Carefully choosing a set of incremental modification operators and investigating their interactions allows us to categorise the conflicts. These conflicts can be detected semi-automatically, facilitating incremental design. #Keywords: Incremental Design Methodology, Nested State Diagrams, Layering, Change Management, Reuse Contracts #Reference: vub-prog-tr-97-05 "Monadic Methods" Wolfgang De Meuter Unpublished #Abstract: Object-oriented frameworks are usually based on `skeleton' methods that determine the overall control flow and that carry around `contextual information'. Changing the signature of a skeleton method often induces a combinatorial explosion of changes to other methods spread over the different classes of the framework. Our work materialises these methods as \emph{monadic methods} that carry around monadic information. The nature of the information and the way it flows through the code is determined by a so called monad. We formally investigate monadic methods, and explain how the monadic style limits the propagation of changes to skeleton methods. #Keywords: Semantics, Monads, Frameworks, Reuse #Reference: vub-prog-tr-97-06 "Combining Behavioural and Structural Software Descriptions" Kim Mens, Tom Mens and Patrick Steyaert Position paper of the ECOOP '97 Workshop on Object-Oriented Software Evolution and Re-engineering #Abstract: This paper discusses the following question: What is the best way to combine structural and behavioural descriptions of software to facilitate reuse and evolution of object-oriented systems? #Keywords: Reuse, Evolution, Structure, Behaviour #Reference: vub-prog-tr-97-07 "Reuse Contracts as Component Interface Descriptions" Koen De Hondt, Carine Lucas, Patrick Steyaert ECOOP 97 workshop reader #Abstract: #Keywords: Reuse contracts, component interface descriptions, components #Reference: vub-prog-tr-97-08 "Design Guidelines for Tailorable Frameworks" Serge Demeyer, Theo Dirk Meijler, Oscar Nierstrasz and Patrick Steyaert Comunications of the ACM October 1997 - Volume 40, Number 10, Special Issue on Object-Oriented Application Frameworks, pp. 60-64 #Abstract: #Keywords: frameworks, design guidelines, open systems, hypertext #End ABSTRACTS OF DISSERTATIONS 1997 ------------------------------- #Reference: vub-prog-phd-97-01 "Documenting Reuse and Evolution with Reuse Contracts" Carine Lucas PhD thesis 1997, unpublished #Abstract: This dissertation introduces reuse contracts as structured documentation to support the evolution of reusable components. Despite recent research efforts towards the deployment of systematic reuse, the production and documentation of reusable components is still very much an issue. The central tenet of this dissertation is that \emph{evolution} is at the heart of reuse. Evolution is crucial because reusable components have a long life span, because good reuse can only be achieved after a component has been reused and adapted several times and finally, because it is simply not conceivable to predict all possible uses of a component upon its conception. In order to reuse a system in ways different from what was foreseen, a general understanding of its structure and behaviour is essential. While most approaches to reuse focus on declarative behaviour, i.e., what a system does, we focus on operational behaviour, i.e., how a system's behaviour is achieved. Furthermore, instead of allowing customisations that respect the original design only, we present a less coercive approach where reusers are allowed to make adaptations that break the general design. As iterations over reusable components are inherent to their development, managing the impact of changes on existing applications is crucial when components change. The problem of change propagation is then handled through a careful documentation of the assumptions reusers make about the components they reuse. \emph{Reuse contracts} augment conventional interfaces with documentation of structural dependencies in a system. This provides reusers with crucial information about the operational behaviour of a system. Moreover, this information can be retrieved statically, which makes automated support and the development of tools much easier. Reuse contract interfaces can only be composed or adapted by means of certain predefined \emph{reuse operators}. Reuse operators enable reusers to explicitly document the assumptions they make about the components they reuse and thus what parts of the interface they rely on. This makes their applications more robust to change, since explicitly documenting these assumptions allows verifying whether these assumptions are broken when changes are made. This dissertation provides the definition of a general model of reuse contracts and their reuse operators. It demonstrates how this general model can be enhanced to assist in the reuse and evolution of object-oriented class libraries and frameworks. It demonstrates the usefulness of the reuse contract approach with a number of experiments and discusses other possible uses and the possibility to build tools based on reuse contracts. The work in this dissertation is part of a larger research effort aiming to develop a full-fledged methodology for disciplined reuse. This dissertation establishes the foundations of the methodology as well as a set of directives for further efforts. #Keywords: Reuse, evolution, documentation, reuse contracts #End