Variant-preserving refactorings for migrating cloned products to a product line

A common and simple way to create custom product variants is to copy and adapt existing software (a. k. a. the clone-and-own approach). Clone-and-own promises low initial costs for creating a new variant as existing code is easily reused. However, clone-and-own also comes with major drawbacks for ma...

Full description

Saved in:
Bibliographic Details
Published in2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER) pp. 316 - 326
Main Authors Fenske, Wolfram, Meinicke, Jens, Schulze, Sandro, Schulze, Steffen, Saake, Gunter
Format Conference Proceeding
LanguageEnglish
Japanese
Published IEEE 01.02.2017
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:A common and simple way to create custom product variants is to copy and adapt existing software (a. k. a. the clone-and-own approach). Clone-and-own promises low initial costs for creating a new variant as existing code is easily reused. However, clone-and-own also comes with major drawbacks for maintenance and evolution since changes, such as bug fixes, need to be synchronized among several product variants. Software product lines (SPLs) provide solutions to these problems because commonalities are implemented only once. Thus, in an SPL, changes also need to be applied only once. Therefore, the migration of cloned product variants to an SPL would be beneficial. The main tasks of migration are the identification and extraction of commonalities from existing products. However, these tasks are challenging and currently not well-supported. In this paper, we propose a step-wise and semi-automated process to migrate cloned product variants to a feature-oriented SPL. Our process relies on clone detection to identify code that is common to multiple variants and novel, variant-preserving refactorings to extract such common code. We evaluated our approach on five cloned product variants, reducing code clones by 25 %. Moreover, we provide qualitative insights into possible limitations and potentials for removing even more redundant code. We argue that our approach can effectively decrease synchronization effort compared to clone-and-own development and thus reduce the long-term costs for maintenance and evolution.
DOI:10.1109/SANER.2017.7884632