Compile-time variability is paramount in many software systems: Users can select desired features and generate a product tailored for their needs. For example, the Linux kernel has over 10000 such compile-time configuration options. Typically organized as software product lines, there are many different implementation mechanisms that can all be regarded as generators that produce products based on variability specifications.
However, with variability also complexity is not far. Already with few configuration options, we can generate a vast number (easily exceeding billions) of potential products. Checking all products in isolation with traditional testing or analysis approaches is no longer feasible.
Recently, many researchers have begun to adapt existing analysis techniques, such as type checking, model checking, theorem proving, static analysis, and parsing, to reason about variability. Usually, the idea is to check the entire product line with its variability in one step and to reason about variability locally. When the product line passes the check, we want to guarantee that all possible generated products would pass the check as well. Such variability-aware analyses take variability information into account, including feature models and implementation artifacts, thus spanning problem and solution space.
In the talk, I give an overview of concepts for variability-aware analysis, discuss different strategies (brute force, sampling, family-based analysis, feature-based analysis), and show repeating ideas of how existing analysis are extended for variability. While taking a broad view, illustrate how to make a type system variability-aware and report experience from our current endeavor to find type errors in all variants of the Linux kernel, without generating them in isolation.
Biography
Christian Kästner is a researcher in the Programming Languages Group at 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, which included developing a variability-aware type system for software product lines. His research focuses on correctness and understanding of systems with variability, including work on implementation mechanisms, tools, different kinds of analyses, feature interactions, and variability mining and refactoring. He is the author or coauthor of over a fifty peer-reviewed scientific publications.