A Hybrid Feature Location Technique for Reengineering Single Systems into Software Product Lines

G. Michelon, L. Linsbauer, W. Assunção, S. Fischer, A. Egyed. A Hybrid Feature Location Technique for Reengineering Single Systems into Software Product Lines. pages Article No.: 11, 1-9, DOI https://doi.org/10.1145/3442391.3442403, 2, 2021.

  • Gabriela K. Michelon
  • Lukas Linsbauer
  • Wesley K.G. Assunção
  • Stefan Fischer
  • Alexander Egyed
BuchVaMoS'21: 15th International Working Conference on Variability Modelling of Software-Intensive Systems
TypIn Konferenzband
SeitenArticle No.: 11, 1-9

Software product lines (SPLs) are known for improving productivity and reducing time-to-market through the systematic reuse of assets. SPLs are adopted mainly by re-engineering existing system variants. Feature location techniques (FLTs) support the re-engineering process by mapping the variants’ features to their implementation. However, such FLTs do not perform well when applied to single systems. In this way, there is a lack of FLTs to aid the re-engineering process of a single system into an SPL. In this work, we present a hybrid technique that consists of two complementary types of analysis: i) a dynamic analysis by runtime monitoring traces of scenarios in which features of the system are exercised individually, and ii) a static analysis for refining overlapping traces. We evaluate our technique on three subject systems by computing the common metrics used in FL research. We thus computed Precision, Recall, and F-Score at the line- and method-level of source code. In addition to that, one of the systems has a ground truth available, which we also used for comparing results. Results show that our FLT reached an average of 68-78% precision and 72-81% recall on two systems at the line-level, and 67-65% precision and 68-48% recall at the method-level. In these systems, most of the implementation can be covered by the exercise of the features. For the largest system, our technique reached a precision of up to 99% at the line-level, 94% at the method-level, and 44% when comparing to traces. However, due to its size, it was difficult to reach high code coverage during execution, and thus the recall obtained was on average of 28% at the line-level, 25% at the method-level, and 30% when comparing to traces. The main contribution of this work is a hybrid FLT, its publicly available implementation, and a replication package for comparisons and future studies.