Activities and costs of re-engineering cloned variants into an integrated platform
Paper in proceeding, 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

Re-engineering

Author

Jacob Krüger

Otto von Guericke Universitaet Magdeburg

Thorsten Berger

University of Gothenburg

ACM International Conference Proceeding Series

a21

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

Subject Categories

Other Mechanical Engineering

Software Engineering

Computer Science

DOI

10.1145/3377024.3377044

More information

Latest update

2/19/2021