Feigenspan, Janet; Schulze, Michael; Papendieck, Maria; Kästner, Christian; Dachselt, Raimund; Köppen, Veit; Frisch, Mathias
Using Background Colors to Support Program Comprehension in Software Product Lines (Inproceeding)
International Conference on Evaluation and Assessment in Software Engineering (EASE), Institution of Engineering and Technology, 2011.
(BibTeX | Tags: Development, Product Lines)
@inproceedings{FIN-2011.000-FSPKDKF,
title = {Using Background Colors to Support Program Comprehension in Software Product Lines},
author = {Janet Feigenspan and Michael Schulze and Maria Papendieck and Christian Kästner and Raimund Dachselt and Veit Köppen and Mathias Frisch},
year = {2011},
date = {2011-01-01},
booktitle = {International Conference on Evaluation and Assessment in Software Engineering (EASE)},
publisher = {Institution of Engineering and Technology},
keywords = {Development, Product Lines}
}
|
Liebig, Jörg; Apel, Sven; Lengauer, Christian; Kästner, Christian; Schulze, Michael
An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines (Inproceeding)
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering – Volume 1, pp. 105-114, ACM New York, NY, USA, Cape Town, South Africa, 2010, (Acceptance rate: 14% (52 / 380)).
(Abstract | Links | BibTeX | Tags: Development, Product Lines, Variability)
@inproceedings{FIN-2010.000-LALKS,
title = {An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines},
author = {Jörg Liebig and Sven Apel and Christian Lengauer and Christian Kästner and Michael Schulze},
url = {http://portal.acm.org/citation.cfm?doid=1806799.1806819},
year = {2010},
date = {2010-05-01},
booktitle = {Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering – Volume 1},
pages = {105-114},
publisher = {ACM New York, NY, USA},
address = {Cape Town, South Africa},
series = {ICSE ’10},
abstract = {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. Specically, we answer the following questions: How does program size in uence 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.},
note = {Acceptance rate: 14% (52 / 380)},
keywords = {Development, Product Lines, Variability}
}
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. Specically, we answer the following questions: How does program size in uence 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.
|