Activities and costs of re-engineering cloned variants into an integrated platform
Paper in proceedings, 2020

Many software systems need to exist in multiple variants. Organizations typically develop variants using clone & own-copying and adapting systems towards new requirements. However, while clone & own is a simple and readily available strategy, it does not scale with the number of variants, and then requires a costly re-engineering of the cloned variants into a configurable software platform (a.k.a., software product line). Ideally, organizations could rely on decision models or at least on substantial empirical data to assess the costs and benefits of such a re-engineering. Unfortunately, despite decades of research on product lines and platforms, such data is scarce, not least because obtaining it from industrial re-engineering efforts is challenging. We address this gap with a study on re-engineering two cases of cloned variants of open-source Android and Java games. Student developers re-engineered the clones into software product lines, logging their activities and costs. They performed the types of activities typically associated with re-engineering, but the activities were intertwined and done iteratively. The costs were relatively similar among both cases, but the used variability mechanism had a substantial impact. Interestingly, beyond a common diffing tool, no dedicated re-engineering tool was particularly useful. We hope that our results support researchers working on re-engineering techniques and decision models, as well as practitioners trying to assess the costs and activities involved in re-engineering a software platform.

Software product lines

Clone and own

Empirical study



Jacob Krüger

Otto von Guericke Universitaet Magdeburg

Thorsten Berger

University of Gothenburg


ACM International Conference Proceeding Series


14th International Working Conference on Variability Modelling of Software-Intensive Systems, VaMoS 2020
Magdeburg, Germany,

Subject Categories

Other Mechanical Engineering

Software Engineering

Computer Science



More information

Latest update

4/7/2020 2