Variability Bugs in Highly Configurable Systems: A Qualitative Analysis
- Iago Abal,
- Jean Melo,
- Stefan Stanciulescu,
- ,
- Márcio Ribeiro,
- ,
- Federal University of Alagoas
Research Output:
Journal Article or Conference Article in Journal
Journal article
Peer-reviewOpen access
Publication Information
Output type
Research Output:
Journal Article or Conference Article in Journal
Journal article
Peer-reviewOriginal language
EnglishArticle number
10Pages from-to (Number of pages)
Pages 1-34 (34 pages)Journal (Volume, Issue Number)
ACM Transactions on Software Engineering and Methodology (Volume 26, Issue 3)Publication milestones
- Published - 2018
Publication status
Published - 2018
ISSN
1049-331XPublication IDs
- Scopus: 85042483857
Abstract
Variability-sensitive verification pursues effective analysis of the exponentially many variants in number of features of a program family. Several variability-aware techniques have been proposed, but researchers still lack examples of concrete bugs induced by variability, occurring in real large-scale systems. A collection of real world bugs is needed to evaluate tool implementations of variability-sensitive analyses by testing them on real bugs. We present a qualitative study of 98 diverse variability bugs collected from bug-fixing commits in the Apache, BusyBox, Linux kernel and Marlin repositories. We analyze each of the bugs, and record the results in a database. For each bug, we create a self-contained simplified C99 version and a simplified patch, in order to help researchers who are not experts on these subject studies to understand them, so that they can use it for evaluation of their tools. In addition, we provide single-function versions of the bugs, which are useful for evaluating intra-procedural analyses. A Web-based User Interface for the database allows to conveniently browse and visualize the collection of bugs. Our study provides insights into the nature and occurrence of variability bugs in four highly-configurable systems implemented in C, and shows in what ways variability affects and increases the complexity of software bugs. Software bugs appear across different kinds of components, features, and bug categories. Variability affects complexity of bugs by feature interactions, that may span multiple subsystems; through hidden configuration dependent definitions of functions, variables, and types; extending the bug locations from code to also feature models and code mappings, and to modeling languages in which these are expressed. We also find many bugs that are caused by disabling a feature (negative feature interaction), which leads us to suggest the one-disabled strategy for configuration sampling.
Publication metrics
PlumX, opens in new tab
Captures
51
Citations
67
Access to documents
Accepted author manuscript, 1.31 MB
