VarXplorer
Larissa Rocha, Jens Meinicke, Sarah Nadi, Christian Kästner, Eduardo Santana de Almeida · 2018
Features in highly configurable systems can interact in undesired ways which may result in faults. However, most interactions are not easily detectable as specifications of feature interactions are usually missing. In this paper, we aim to detect interactions and to help create feature-interaction specifications. We use variational execution to observe internal interactions on control and data flow of highly configurable systems. The number of potential interactions can be large and hard to understand, especially as many interactions are benign. To help developers understand these interactions, we propose feature-interaction graphs as a concise representation of all pairwise interactions. We provide two analyses that provide additional details about interactions, namely suppress and require interactions. Finally, we propose a specification language that enables developers to define different kinds of allowed and forbidden interactions, which help to detect interaction faults. Our tool, VarXplorer, provides a visualization of feature-interaction graphs and supports the creation of feature interaction specifications. VarXplorer also provides an iterative analysis of feature interactions allowing developers to focus on suspicious cases.