Details
Original language | English |
---|---|
Title of host publication | GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineering |
Pages | 33-42 |
Number of pages | 10 |
Publication status | Published - Oct 2010 |
Externally published | Yes |
Event | 9th International Conference on Generative Programming and Component Engineering, GPCE'10 - Eindhoven, Netherlands Duration: 10 Oct 2010 → 13 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
- Computer Science(all)
- Computational Theory and Mathematics
- Computer Science(all)
- Computer Science Applications
- Computer Science(all)
- Software
Cite this
- Standard
- Harvard
- Apa
- Vancouver
- BibTeX
- RIS
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 proceeding › Conference contribution › Research › peer review
}
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 -