Analyzing the source code of multiple software variants for reuse potential
Software reuse approaches, such as software product lines, can help to achieve considerable effort and cost savings when developing families of software systems with a significant overlap in functionality. In practice, however, the need for strategic reuse often becomes apparent only after a number of product variants have already been delivered. Hence, a reuse approach has to be introduced afterwards. To plan for such a reuse introduction, it is crucial to have precise information about the distribution of commonality and variability in the source code of each system variant. However, this information is often not available because each variant has evolved independently over time and the source code does not exhibit explicit variation points. In this paper, we present Variant Analysis, a scalable reverse engineering technique that aims at delivering exactly this information. It supports simultaneous analysis of multiple source code variants and enables easy interpretation of the analysis results. We demonstrate the technique by applying it to a large industrial software system with four variants.