Supporting the Grow-and-Prune Model in Software Product Lines Evolution Using Clone Detection

  • Authors:
  • Thilo Mende;Felix Beckwermert;Rainer Koschke;Gerald Meier

  • Affiliations:
  • University of Bremen, Germany, tmende@informatik.uni-bremen.de;University of Bremen, Germany, beckwermert@informatik.uni-bremen.de;University of Bremen, Germany, koschke@informatik.uni-bremen.de;Testo AG, Lenzkirch, Germany, gmeier@testo.de

  • Venue:
  • CSMR '08 Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software Product Lines (SPL) can be used ot create and maintain different variants of software-intensive system by explicitly managing variability. Often, SPLs are organized as an SPL core, common to all products, upon which product-specific components are built. Following the so called grow-and-prune model, SPLs may be evolved by copy&paste at large scale. New products are created from existing ones and existing products are enhanced with functionalities specific to other products by copying and pasting code between product-specific code. To regain control of this unmanaged growth, such code may be pruned, that is, identified and refactored into core components upon success. This paper describes tool support for the grow-and-prune model in the evolution of software product lines by identifying similar functions which can be moved to the core. These functions are identified in two steps. First, token-based clone detection is used to detect pairs of functions sharing code. Second, Levenshtein distance measures the textual similarity among these functions. Sufficient similarity at function level is then lifted to the architectural level. The approach is evaluated by three case studies, one using an open source email client to simulate the initial creation of an SPL, and two monitoring existing industrial product lines from the embedded domain.