An analysis of the variability in forty preprocessor-based software product lines

Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its error-proneness and low abstraction level, the preprocessor is still widely used in present-day software projects to implement variable software. Howeve...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:2010 ACM/IEEE 32nd International Conference on Software Engineering Ročník 1; s. 105 - 114
Hlavní autoři: Liebig, Jörg, Apel, Sven, Lengauer, Christian, Kästner, Christian, Schulze, Michael
Médium: Konferenční příspěvek
Jazyk:angličtina
Vydáno: New York, NY, USA ACM 01.05.2010
IEEE
Edice:ACM Conferences
Témata:
ISBN:9781605587196, 1605587192
ISSN:0270-5257
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Popis
Shrnutí:Over 30 years ago, the preprocessor cpp was developed to extend the programming language C by lightweight metaprogramming capabilities. Despite its error-proneness and low abstraction level, the preprocessor is still widely used in present-day software projects to implement variable software. However, not much is known about how cpp is employed to implement variability. To address this issue, we have analyzed forty open-source software projects written in C. Specifically, we answer the following questions: How does program size influence variability? How complex are extensions made via cpp's variability mechanisms? At which level of granularity are extensions applied? Which types of extension occur? These questions revive earlier discussions on program comprehension and refactoring in the context of the preprocessor. To provide answers, we introduce several metrics measuring the variability, complexity, granularity, and types of extension applied by preprocessor directives. Based on the collected data, we suggest alternative implementation techniques. Our data set is a rich source for rethinking language design and tool support.
ISBN:9781605587196
1605587192
ISSN:0270-5257
DOI:10.1145/1806799.1806819