Analyzing all 2^10000 Configurations of the Linux Kernel


Event Details
Tuesday, December 3, 2013
Talk:
4:00 p.m., Avery 115

Reception:
3:30 p.m., Avery 348

Christian Kästner, Ph.D.

Assistant Professor, Carnegie Mellon University

Abstract

Highly configurable systems can be tailored to specific use cases. When planned as software product lines, they can achieve orders of magnitude improvements in development costs, speed and quality compared to developing products one by one. At the same time configuration options challenge quality assurance. Traditional analysis techniques, including type checking, static analysis and testing can analyze only one specific configuration in an exponentially exploding configuration space (up to 2^n configurations for n boolean configuration options). In this talk, I will give an overview of our work on variability-aware analysis that aims at analyzing all configurations of a configurable systems in a single run, while exploiting the similarities between the configurations. I will give an overview of the TypeChef infrastructure that is able to parse and type check C code with #ifdef variability, targeted at finding bugs in highly configurable systems as the Linux kernel (10000 compile-time configuration options).

Speaker Bio

Christian Kästner is an Assistant Professor of Computer Science in the School of Computer Science at Carnegie Mellon University. He joined Carnegie Mellon in 2012, after a 2-year postdoc in the group of Klaus Ostermann at the University of Marburg. He received his PhD from the University of Magdeburg in 2010 for his work on virtual separation of concerns. For his dissertation he received the prestigious GI Dissertation Award for the best computer-science dissertation in 2010. His research interests lie in reducing variability-induced complexity in software systems. He combines programming-language research and software-engineering research in the areas of software product lines, feature-oriented programming, modularity, metaprogramming, software analysis, program comprehension, and program transformations.