Understanding and Taming Feature Interactions

  • Date May 23 - 25, 2018
  • Room GSSI
  • Speaker Christian Kästner (Carnegie Mellon University, USA)


Feature interactions have been recognized as an important challenge in the design and implementation of configurable and extensible systems, including software product lines, plugin-based systems, and platforms. At implementation level, unanticipated or incorrectly implemented interactions can show up as bugs, missing or surprising behavior, and performance anomalies. A typical scenario is: two or more optional features work well in isolation, but expose a bug if combined. For example, email encryption and email forwarding in an email system may work as expected in isolation, but emails get forwarded unencrypted by accident when combined. Interaction-related issues may affect only few configurations in a huge configuration space, which makes development, quality assurance, and maintenance challenging.
I will give an overview on current research and open challenges to understand, specify, and detect interactions in highly-configurable systems, such as the Linux kernel and WordPress, implemented with hundreds or thousands of optional features. I will cover basics of reasoning about variability with SAT solvers, basics of static and dynamic analyses to cover large configuration spaces, approaches to specify interactions and their expected behavior, as well as discuss performance interactions. I will introduce recent approaches, including analysis mechanisms that soundly cover large configuration spaces (type checking, static analysis, testing), machine-learning techniques to understand the observable behavior of options and interactions, as well as a new perspective on sampling strategies, and highlight existing tools. At the same time, I will point out open challenges, of which there are plenty, and possible directions toward addressing them, as well as ideas of how feature interaction research might apply in nontraditional domains such as program repair and game testing.