Extending the reflexion method for consolidating software variants into product lines

  • Authors:
  • Rainer Koschke;Pierre Frenzel;Andreas P. Breu;Karsten Angstmann

  • Affiliations:
  • University of Bremen, Bremen, Germany;University of Bremen, Bremen, Germany;Robert Bosch GmbH, Stuttgart, Germany;Robert Bosch GmbH, Stuttgart, Germany

  • Venue:
  • Software Quality Control
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software variants emerge from ad-hoc copying in-the-large with adaptations to a specific context. As the number of variants increases, maintaining such software variants becomes more and more difficult and expensive. In contrast to such ad-hoc reuse, software product lines offer organized ways of reuse, taking advantage of similarities of different products. To re-gain control, software variants may be consolidated as organized software product lines. In this paper, we describe a method and supporting tools to compare software variants at the architectural level extending the reflexion method to software variants. Murphy's reflexion method allows one to reconstruct the module view, a static architectural view describing the static components, their interfaces and dependencies and their grouping as layers and subsystems. The method consists of the specification of the module view and the mapping of implementation components onto the module view. An automatic analysis determines differences between the module view and its implementation. We extend the reflexion method from single systems to software variants. Because software variants share a very large amount of code, we can expect components of one variant to re-occur in the other variant either identically or at least similarly. We use similarity metrics to determine this type of correspondence among implementation components between two variants. Because the similarity metrics are expensive to compute, we use clone detection techniques to reduce the number of candidate pairs of implementation components for which the similarity is computed. The correspondence is then used to transfer as much as possible of the mapping for the analyzed variants to the next variant to be analyzed. Furthermore, we describe how to unify the individual product architectures into a software product line architecture.