Revealing and repairing configuration inconsistencies in large-scale system software

Publikation: Beitrag in FachzeitschriftArtikelForschungPeer-Review

Autoren

  • Reinhard Tartler
  • Julio Sincero
  • Christian Dietrich
  • Wolfgang Schröder-Preikschat
  • Daniel Lohmann

Externe Organisationen

  • Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU Erlangen-Nürnberg)
Forschungs-netzwerk anzeigen

Details

OriginalspracheEnglisch
Seiten (von - bis)531-551
Seitenumfang21
FachzeitschriftInternational Journal on Software Tools for Technology Transfer
Jahrgang14
Ausgabenummer5
PublikationsstatusVeröffentlicht - 17 Feb. 2012
Extern publiziertJa

Abstract

System software typically offers a large amount of compile-time options and variability. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly. This allows users to tailor it with respect to a broad range of supported hardware architectures and application domains. From the maintenance point of view, compile-time configurability poses big challenges. The configuration model (the selectable features and their constraints as presented to the user) and the configurability that is actually implemented in the code have to be kept in sync, which, if performed manually, is a tedious and error-prone task. In the case of Linux, this has led to numerous defects in the source code, many of which are actual bugs. In order to ensure consistency between the variability expressed in the code and the configuration models, we propose an approach that extracts variability from both into propositional logic. This reveals inconsistencies between variability as expressed by the C Preprocessor (CPP) and an explicit variability model, which manifest themselves in seemingly conditional code that is in fact unconditional. We evaluate our approach with the Linux, for which our tool detects 1,766 configurability defects, which turned out as dead/superfluous source code and bugs. Our findings have led to numerous source-code improvements and bug fixes in Linux: 123 patches (49 merged) fix 364 defects, 147 of which have been confirmed by the corresponding Linux developers and 20 as fixing a previously unknown bug.

ASJC Scopus Sachgebiete

Zitieren

Revealing and repairing configuration inconsistencies in large-scale system software. / Tartler, Reinhard; Sincero, Julio; Dietrich, Christian et al.
in: International Journal on Software Tools for Technology Transfer, Jahrgang 14, Nr. 5, 17.02.2012, S. 531-551.

Publikation: Beitrag in FachzeitschriftArtikelForschungPeer-Review

Tartler R, Sincero J, Dietrich C, Schröder-Preikschat W, Lohmann D. Revealing and repairing configuration inconsistencies in large-scale system software. International Journal on Software Tools for Technology Transfer. 2012 Feb 17;14(5):531-551. doi: 10.1007/s10009-012-0225-2
Tartler, Reinhard ; Sincero, Julio ; Dietrich, Christian et al. / Revealing and repairing configuration inconsistencies in large-scale system software. in: International Journal on Software Tools for Technology Transfer. 2012 ; Jahrgang 14, Nr. 5. S. 531-551.
Download
@article{209a6468ea5540b8a40d63ad7dcaac0d,
title = "Revealing and repairing configuration inconsistencies in large-scale system software",
abstract = "System software typically offers a large amount of compile-time options and variability. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly. This allows users to tailor it with respect to a broad range of supported hardware architectures and application domains. From the maintenance point of view, compile-time configurability poses big challenges. The configuration model (the selectable features and their constraints as presented to the user) and the configurability that is actually implemented in the code have to be kept in sync, which, if performed manually, is a tedious and error-prone task. In the case of Linux, this has led to numerous defects in the source code, many of which are actual bugs. In order to ensure consistency between the variability expressed in the code and the configuration models, we propose an approach that extracts variability from both into propositional logic. This reveals inconsistencies between variability as expressed by the C Preprocessor (CPP) and an explicit variability model, which manifest themselves in seemingly conditional code that is in fact unconditional. We evaluate our approach with the Linux, for which our tool detects 1,766 configurability defects, which turned out as dead/superfluous source code and bugs. Our findings have led to numerous source-code improvements and bug fixes in Linux: 123 patches (49 merged) fix 364 defects, 147 of which have been confirmed by the corresponding Linux developers and 20 as fixing a previously unknown bug.",
keywords = "Configurability, Experimentation, Linux, Maintenance, Management, Static analysis",
author = "Reinhard Tartler and Julio Sincero and Christian Dietrich and Wolfgang Schr{\"o}der-Preikschat and Daniel Lohmann",
note = "Funding information: This work was partly supported by the German Research Foundation (DFG) under grant no. SCHR 603/7-1 and SFB/TR 89.",
year = "2012",
month = feb,
day = "17",
doi = "10.1007/s10009-012-0225-2",
language = "English",
volume = "14",
pages = "531--551",
journal = "International Journal on Software Tools for Technology Transfer",
issn = "1433-2779",
publisher = "Springer Verlag",
number = "5",

}

Download

TY - JOUR

T1 - Revealing and repairing configuration inconsistencies in large-scale system software

AU - Tartler, Reinhard

AU - Sincero, Julio

AU - Dietrich, Christian

AU - Schröder-Preikschat, Wolfgang

AU - Lohmann, Daniel

N1 - Funding information: This work was partly supported by the German Research Foundation (DFG) under grant no. SCHR 603/7-1 and SFB/TR 89.

PY - 2012/2/17

Y1 - 2012/2/17

N2 - System software typically offers a large amount of compile-time options and variability. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly. This allows users to tailor it with respect to a broad range of supported hardware architectures and application domains. From the maintenance point of view, compile-time configurability poses big challenges. The configuration model (the selectable features and their constraints as presented to the user) and the configurability that is actually implemented in the code have to be kept in sync, which, if performed manually, is a tedious and error-prone task. In the case of Linux, this has led to numerous defects in the source code, many of which are actual bugs. In order to ensure consistency between the variability expressed in the code and the configuration models, we propose an approach that extracts variability from both into propositional logic. This reveals inconsistencies between variability as expressed by the C Preprocessor (CPP) and an explicit variability model, which manifest themselves in seemingly conditional code that is in fact unconditional. We evaluate our approach with the Linux, for which our tool detects 1,766 configurability defects, which turned out as dead/superfluous source code and bugs. Our findings have led to numerous source-code improvements and bug fixes in Linux: 123 patches (49 merged) fix 364 defects, 147 of which have been confirmed by the corresponding Linux developers and 20 as fixing a previously unknown bug.

AB - System software typically offers a large amount of compile-time options and variability. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly. This allows users to tailor it with respect to a broad range of supported hardware architectures and application domains. From the maintenance point of view, compile-time configurability poses big challenges. The configuration model (the selectable features and their constraints as presented to the user) and the configurability that is actually implemented in the code have to be kept in sync, which, if performed manually, is a tedious and error-prone task. In the case of Linux, this has led to numerous defects in the source code, many of which are actual bugs. In order to ensure consistency between the variability expressed in the code and the configuration models, we propose an approach that extracts variability from both into propositional logic. This reveals inconsistencies between variability as expressed by the C Preprocessor (CPP) and an explicit variability model, which manifest themselves in seemingly conditional code that is in fact unconditional. We evaluate our approach with the Linux, for which our tool detects 1,766 configurability defects, which turned out as dead/superfluous source code and bugs. Our findings have led to numerous source-code improvements and bug fixes in Linux: 123 patches (49 merged) fix 364 defects, 147 of which have been confirmed by the corresponding Linux developers and 20 as fixing a previously unknown bug.

KW - Configurability

KW - Experimentation

KW - Linux

KW - Maintenance

KW - Management

KW - Static analysis

UR - http://www.scopus.com/inward/record.url?scp=84866274282&partnerID=8YFLogxK

U2 - 10.1007/s10009-012-0225-2

DO - 10.1007/s10009-012-0225-2

M3 - Article

AN - SCOPUS:84866274282

VL - 14

SP - 531

EP - 551

JO - International Journal on Software Tools for Technology Transfer

JF - International Journal on Software Tools for Technology Transfer

SN - 1433-2779

IS - 5

ER -