Systematic Software Reuse with Automated Extraction and Composition for Clone-and-Own
Sprache des Titels:
Handbook of Re-Engineering Software Intensive Systems into Software Product Lines
In order to meet highly individual and frequently changing customer requirements, engineers need to efficiently develop and maintain large sets of custom-tailored variants of systems. An approach commonly used in practice is to clone existing variants and adapt them to meet new requirements. This clone-and-own approach is flexible, intuitive and leads to quick results. However, it causes problems in the long run, as the efficient maintenance of existing variants and reuse of implementation when creating new variants become challenging for larger sets of clones. Software product line engineering addresses these problems as a structured approach for developing highly configurable systems by providing a common platform from which variants can be derived. This enables efficient reuse and maintenance, but requires large upfront investment for building the platform and training of developers. Furthermore, it is not as flexible when it comes to evolution, as changes to the platform can affect many variants at once and possible side-effects need to be considered. In this work, we propose an approach for combining the advantages of ad-hoc reuse, such as flexibility and intuitiveness, with the advantages of product line engineering, such as efficient reuse and a common platform. Specifically, we introduce data structures and operations for the automated extraction of feature-to-implementation traces from variants, and accompanying workflows for creating and evolving a portfolio of variants that resemble clone-and-own but are supported by automated reuse. We show an implementation of the discussed concepts in practice and successfully evaluate it on a research challenge.