ITU

Variability Bugs in Highly Configurable Systems: A Qualitative Analysis

Research output: Journal Article or Conference Article in JournalJournal articleResearchpeer-review

Standard

Variability Bugs in Highly Configurable Systems: A Qualitative Analysis. / Abal, Iago; Melo, Jean; Stanciulescu, Stefan; Brabrand, Claus; Ribeiro, Márcio; Wasowski, Andrzej.

In: ACM Transactions on Software Engineering and Methodology, Vol. 26, No. 3, 10, 2018.

Research output: Journal Article or Conference Article in JournalJournal articleResearchpeer-review

Harvard

APA

Vancouver

Author

Bibtex

@article{94da0accaf5a44ababaef23e1b33987d,
title = "Variability Bugs in Highly Configurable Systems: A Qualitative Analysis",
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.",
keywords = "Software bugs, Feature interactions, Linux, BusyBox, Apache, Marlin, Software Variability, Software Product Lines, Program Families",
author = "Iago Abal and Jean Melo and Stefan Stanciulescu and Claus Brabrand and M{\'a}rcio Ribeiro and Andrzej Wasowski",
year = "2018",
doi = "10.1145/3149119",
language = "English",
volume = "26",
journal = "ACM Transactions on Software Engineering and Methodology",
issn = "1049-331X",
publisher = "Association for Computing Machinery",
number = "3",

}

RIS

TY - JOUR

T1 - Variability Bugs in Highly Configurable Systems: A Qualitative Analysis

AU - Abal, Iago

AU - Melo, Jean

AU - Stanciulescu, Stefan

AU - Brabrand, Claus

AU - Ribeiro, Márcio

AU - Wasowski, Andrzej

PY - 2018

Y1 - 2018

N2 - 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.

AB - 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.

KW - Software bugs

KW - Feature interactions

KW - Linux

KW - BusyBox

KW - Apache

KW - Marlin

KW - Software Variability

KW - Software Product Lines

KW - Program Families

U2 - 10.1145/3149119

DO - 10.1145/3149119

M3 - Journal article

VL - 26

JO - ACM Transactions on Software Engineering and Methodology

JF - ACM Transactions on Software Engineering and Methodology

SN - 1049-331X

IS - 3

M1 - 10

ER -

ID: 80123801