Abstract
Variability models are a common means for describing the commonalities and differences in Software Product Lines (SPL); configurations
of the SPL that respect the constraints imposed by the variability model define the problem space. The same variability is
usually also captured in the final implementation through implementation constraints, defined in terms of preprocessor directives,
build files, build-time errors, etc. Configurations satisfying the implementation constraints and producing correct (compilable)
programs define thesolution space. Since sometimes the variability model is defined after the implementation exists, it could
wrongly assess the validity of some system configurations, i.e., it could consider acceptable some configurations (not belonging
to the solution space) that do not permit to obtain a correct program. We here propose an approach that automatically repairs
variability models such that the configurations they consider valid are also part of the solution space. Experiments show
that some existing variability models are indeed faulty and can be repaired by our approach.
[download the pdf file] [DOI]