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.
翻译:产品线和高度可配置的系统中的特性可以与开发者的意图相反的方式相互作用。目前查明这种意外特性相互作用的方法成本高,而且不适当。为了解决这个问题,我们提议一种新的方法来学习特性相互作用,无论是在具体限定特性组合的产品线上,还是在往往没有这种规格的特性丰富的可配置系统中。本文的贡献是利用程序分析从源码中提取与特性有关的学习模型,以发现意外特性相互作用。在没有特性限制的规格的情况下,我们的方法推断出利用与特性有关的数据流依赖性信息的限制因素。对三个软件产品线基准和高度可配置系统的实验评价表明,这一方法迅速而有效。其贡献是通过在新产品或新版本中自动检测特性组合来支持开发者,而新产品或新版本可以以不需要或未经认可的方式相互作用。这样可以更好地了解潜在的相互作用,并查明由于它们的特点在某些组合中相互作用而应一起测试的软件组成部分。