Revealing and repairing configuration inconsistencies in large-scale system software

Research output: Contribution to journalArticleResearchpeer review

Authors

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

External Research Organisations

  • Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU Erlangen-Nürnberg)
View graph of relations

Details

Original languageEnglish
Pages (from-to)531-551
Number of pages21
JournalInternational Journal on Software Tools for Technology Transfer
Volume14
Issue number5
Publication statusPublished - 17 Feb 2012
Externally publishedYes

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

ASJC Scopus subject areas

Cite this

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, Vol. 14, No. 5, 17.02.2012, p. 531-551.

Research output: Contribution to journalArticleResearchpeer 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 ; Vol. 14, No. 5. pp. 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 -