Learning Feature Interactions With and Without Specifications
This work addresses the challenge for developers in managing feature interactions in software product lines and configurable systems, though it is incremental as it builds on existing program analysis techniques.
The paper tackles the problem of identifying unanticipated feature interactions in product lines and configurable systems, which are costly and inadequately addressed by current methods, by proposing a program analysis approach that extracts feature-relevant learning models from source code to detect unwanted interactions, achieving fast and effective results in experiments on three benchmarks and a configurable system.
Features in product lines and highly configurable systems can interact in ways that are contrary to developers' intent. Current methods to identify such unanticipated feature interactions are costly and inadequate. To address this problem we propose a new approach to learn feature interactions, both in those product lines where constraints on feature combinations are specified and in feature-rich configurable systems where such specifications often are not available. The contribution of the paper is to use program analysis to extract feature-relevant learning models from the source code in order to detect unwanted feature interactions. Where specifications of feature constraints are unavailable, our approach infers the constraints using feature-related data-flow dependency information. Evaluation in experiments on three software product line benchmarks and a highly configurable system shows that this approach is fast and effective. The contribution is to support developers by automatically detecting feature combinations in a new product or version that can interact in unwanted or unrecognized ways. This enables better understanding of latent interactions and identifies software components that should be tested together because their features interact in some configurations.