Evolution and Composition of Object-Oriented Frameworks

University dissertation from Karlskrona : Blekinge Institute of Technology

Abstract: This thesis comprises studies of evolution and composition of object-oriented frameworks, a certain kind of reusable asset. An object-oriented framework is a set of classes that embodies an abstract design for solutions to a family of related problems. The work presented is based on and has its origin in industrial contexts where object-oriented frameworks have been developed, used, evolved and managed. Thus, the results are based on empirical observations. Both qualitative and quantitative approaches have been used in the studies performed which cover both technical and managerial aspects of object-oriented framework technology. Historically, object-oriented frameworks are large monolithic assets which require several design iterations and are therefore costly to develop. With the requirement of building larger applications, software engineers have started to compose multiple frameworks, thereby encountering a number of problems. Five common framework composition problems, together with existing solution approaches and the underlying causes for the problems are presented in this thesis. Adopting a reuse technology, such as object-oriented frameworks, in a software development organization causes changes and additions of practices and procedures. We present problems and possible solutions related to these issues. Examples of topics addressed are; domain scoping, business models, verification of the framework’s abstract behavior, and when to release a framework. Object-oriented frameworks, as all software, evolve due to changed and new requirements. The evolution of object-oriented framework can be more costly than conventional software since there generally exist several applications based on and forced to evolve with the framework. In our studies, we characterize different views of framework evolution. Aspects investigated are structural and behavioral stability, change and growth rates using historical information and effort distribution of framework development and customization. We also provide an assessment of the methods used for characterizing the evolution against the following management issues; identification of evolution-prone modules, framework deployment, change impact analysis, benchmarking and requirements management. As part of these studies, we have extended and validated two proposed methods for software evolution; one for quantitatively assessing stability of a framework, which has been extended with a set of framework stability indicators, and one for identifying evolution-prone modules based on historical information (adapted for object-orientation). Our studies have validated that these methods are feasible and possible to apply on industrial object-oriented frameworks. In addition, we provide quantitative evidence that the use of framework technology reduces application development effort.