Monday, October 24, 2011 - 4:00pm to 4:50pm
KEC 1001

Speaker Information

Christian Kästner
Post-Doctoral Researcher
Group for Programming Languages and Software Engineering
Philipps University Marburg, Germany


Despite much research on sophisticated programming languages and generators to implement software product lines, practitioners still implement variability in most industrial product lines with the   preprocessor. By annotating code fragments with #ifdef and #endif directives, different programs with or without these fragments can be created. However, despite their common use in practice, preprocessors are heavily criticized for their negative effect on code quality and maintainability: Preprocessors neglect separation of concerns, are prone to introduce subtle errors, and can entirely obfuscate the source code. We discuss how to tame preprocessor variability. We show how already simple tool support, including views and visualizations, emulates separation of concerns virtually, eliminates common pitfalls, and supports developers in program understanding tasks. Additionally, we explore strategies to detect and prevent errors that show up only in specific configurations. To that end, we have developed a variability-aware type system that can check entire product lines without generating all configurations. We report experience from scaling our tools to the Linux kernel with 6 million lines of code and 10000 configurations options. Our goal is to parse and type checking all up to 2^10000 configurations of the Linux kernel in one pass.

Speaker Bio

Christian Kästner is a PostDoc at the Group for Programming Languages and Software Engineering of the Philipps University Marburg, Germany. He received his Ph.D in Computer Science in 2010 from the University of Magdeburg, Germany for his work on virtual separation of concerns. For his dissertation, he received the best-dissertation award from the German Computer Science Association (GI). His research focuses on correctness and understanding of systems with variability, including work on implementation mechanisms, tools, variability-aware analysis, type systems, feature interactions, and refactoring. He is the author or coauthor of over a fifty peer-reviewed scientific publications.