Assurances for Self-Adaptive Systems

Volume 7740 of the series Lecture Notes in Computer Science pp 266-296

Failure Avoidance in Configurable Systems through Feature Locality

  • Brady J. GarvinAffiliated withUniversity of Nebraska-Lincoln
  • , Myra B. CohenAffiliated withUniversity of Nebraska-Lincoln
  • , Matthew B. DwyerAffiliated withUniversity of Nebraska-Lincoln

* Final gross prices may vary according to local VAT.

Get Access


Despite the best efforts of software engineers, faults still escape into deployed software. Developers need time to prepare and distribute fixes, and in the interim, deployments must either avoid failures or endure their consequences. Self-adaptive systems–systems that adapt to changes internally, in requirements, and in a dynamic environment– can often handle these challenges automatically, depending on the nature of the failures.

Those self-adaptive systems where functional features can be added or removed also constitute configurable systems. Configurable software is known to suffer from failures that appear only under certain feature combinations, and these failures are particularly challenging for testers, who must find suitable configurations as well as inputs to detect them. However, these elusive failures seem well suited for avoidance by self-adaptation. We need only find an alternative configuration that precludes the failure without derailing the current use case.

This work investigates that possibility, along with some further conjectures: that the failures that are sensitive to a system’s configuration depend on similar feature combinations–a phenomenon we call featurelocality– that this locality can be combined with historical data to predict failure-prone configurations and reconfiguration workarounds, and that these workarounds rarely lead the system out of one failure and into another. In a case study on 128 failures reported against released versions of an open source configurable system, and 16 failures discovered through a state-of-the-art testing tool, plus several thousand tests cases, we find evidence to support all of these hypotheses.


self-adaptive software highly configurable systems failure avoidance fault tolerance reconfiguration workarounds software testing