Efficient Extraction and Analysis of Preprocessor-Based Variability

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-Review

Autoren

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

Externe Organisationen

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

Details

OriginalspracheEnglisch
Titel des SammelwerksGPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering
Seiten33-42
Seitenumfang10
PublikationsstatusVeröffentlicht - Okt. 2010
Extern publiziertJa
Veranstaltung9th International Conference on Generative Programming and Component Engineering, GPCE'10 - Eindhoven, Niederlande
Dauer: 10 Okt. 201013 Okt. 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.

ASJC Scopus Sachgebiete

Zitieren

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. S. 33-42.

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-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. S. 33-42, 9th International Conference on Generative Programming and Component Engineering, GPCE'10, Eindhoven, Niederlande, 10 Okt. 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 (S. 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. S. 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. S. 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 -