Efficient Extraction and Analysis of Preprocessor-Based Variability

Research output: Chapter in book/report/conference proceedingConference contributionResearchpeer review

Authors

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

External Research Organisations

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

Details

Original languageEnglish
Title of host publicationGPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering
Pages33-42
Number of pages10
Publication statusPublished - Oct 2010
Externally publishedYes
Event9th International Conference on Generative Programming and Component Engineering, GPCE'10 - Eindhoven, Netherlands
Duration: 10 Oct 201013 Oct 2010

Abstract

The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this de-facto variability tends to be "hidden in the code"; which on the long term leads to variability defects, such as dead code or inconsistencies with respect to the intended (modeled) variability of the software. This calls for tool support for the efficient extraction of (and reasoning over) CPP-based variability. We suggest a novel approach to extract CPP-based variability. Our tool transforms CPP-based variability in O(n) complexity into a propositional formula that "mimics" all valid effects of conditional compilation and can be analyzed with standard SAT or BDD packages. Our evaluation results demonstrate the scalability and practicability of the approach. A dead-block-analysis on the complete Linux source tree takes less than 30 minutes; we thereby have revealed 60 dead blocks, 2 of which meanwhile have been confirmed as new (and long-lasting) bugs; the rest is still under investigation.

Keywords

    Conditional compilation, Linux, Variability

ASJC Scopus subject areas

Cite this

Efficient Extraction and Analysis of Preprocessor-Based Variability. / Sincero, Julio; Tartler, Reinhard; Lohmann, Daniel et al.
GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering. 2010. p. 33-42.

Research output: Chapter in book/report/conference proceedingConference contributionResearchpeer review

Sincero, J, Tartler, R, Lohmann, D & Schröder-Preikschat, W 2010, Efficient Extraction and Analysis of Preprocessor-Based Variability. in GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering. pp. 33-42, 9th International Conference on Generative Programming and Component Engineering, GPCE'10, Eindhoven, Netherlands, 10 Oct 2010. https://doi.org/10.1145/1868294.1868300
Sincero, J., Tartler, R., Lohmann, D., & Schröder-Preikschat, W. (2010). Efficient Extraction and Analysis of Preprocessor-Based Variability. In GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering (pp. 33-42) https://doi.org/10.1145/1868294.1868300
Sincero J, Tartler R, Lohmann D, Schröder-Preikschat W. Efficient Extraction and Analysis of Preprocessor-Based Variability. In GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering. 2010. p. 33-42 doi: 10.1145/1868294.1868300
Sincero, Julio ; Tartler, Reinhard ; Lohmann, Daniel et al. / Efficient Extraction and Analysis of Preprocessor-Based Variability. GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering. 2010. pp. 33-42
Download
@inproceedings{fd348d848af6404f80a176564ff74c51,
title = "Efficient Extraction and Analysis of Preprocessor-Based Variability",
abstract = "The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this de-facto variability tends to be {"}hidden in the code{"}; which on the long term leads to variability defects, such as dead code or inconsistencies with respect to the intended (modeled) variability of the software. This calls for tool support for the efficient extraction of (and reasoning over) CPP-based variability. We suggest a novel approach to extract CPP-based variability. Our tool transforms CPP-based variability in O(n) complexity into a propositional formula that {"}mimics{"} all valid effects of conditional compilation and can be analyzed with standard SAT or BDD packages. Our evaluation results demonstrate the scalability and practicability of the approach. A dead-block-analysis on the complete Linux source tree takes less than 30 minutes; we thereby have revealed 60 dead blocks, 2 of which meanwhile have been confirmed as new (and long-lasting) bugs; the rest is still under investigation.",
keywords = "Conditional compilation, Linux, Variability",
author = "Julio Sincero and Reinhard Tartler and Daniel Lohmann and Wolfgang Schr{\"o}der-Preikschat",
year = "2010",
month = oct,
doi = "10.1145/1868294.1868300",
language = "English",
isbn = "9781450301541",
pages = "33--42",
booktitle = "GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering",
note = "9th International Conference on Generative Programming and Component Engineering, GPCE'10 ; Conference date: 10-10-2010 Through 13-10-2010",

}

Download

TY - GEN

T1 - Efficient Extraction and Analysis of Preprocessor-Based Variability

AU - Sincero, Julio

AU - Tartler, Reinhard

AU - Lohmann, Daniel

AU - Schröder-Preikschat, Wolfgang

PY - 2010/10

Y1 - 2010/10

N2 - The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this de-facto variability tends to be "hidden in the code"; which on the long term leads to variability defects, such as dead code or inconsistencies with respect to the intended (modeled) variability of the software. This calls for tool support for the efficient extraction of (and reasoning over) CPP-based variability. We suggest a novel approach to extract CPP-based variability. Our tool transforms CPP-based variability in O(n) complexity into a propositional formula that "mimics" all valid effects of conditional compilation and can be analyzed with standard SAT or BDD packages. Our evaluation results demonstrate the scalability and practicability of the approach. A dead-block-analysis on the complete Linux source tree takes less than 30 minutes; we thereby have revealed 60 dead blocks, 2 of which meanwhile have been confirmed as new (and long-lasting) bugs; the rest is still under investigation.

AB - The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this de-facto variability tends to be "hidden in the code"; which on the long term leads to variability defects, such as dead code or inconsistencies with respect to the intended (modeled) variability of the software. This calls for tool support for the efficient extraction of (and reasoning over) CPP-based variability. We suggest a novel approach to extract CPP-based variability. Our tool transforms CPP-based variability in O(n) complexity into a propositional formula that "mimics" all valid effects of conditional compilation and can be analyzed with standard SAT or BDD packages. Our evaluation results demonstrate the scalability and practicability of the approach. A dead-block-analysis on the complete Linux source tree takes less than 30 minutes; we thereby have revealed 60 dead blocks, 2 of which meanwhile have been confirmed as new (and long-lasting) bugs; the rest is still under investigation.

KW - Conditional compilation

KW - Linux

KW - Variability

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

U2 - 10.1145/1868294.1868300

DO - 10.1145/1868294.1868300

M3 - Conference contribution

AN - SCOPUS:78650099270

SN - 9781450301541

SP - 33

EP - 42

BT - GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering

T2 - 9th International Conference on Generative Programming and Component Engineering, GPCE'10

Y2 - 10 October 2010 through 13 October 2010

ER -