Dipl. Ing.-Inf. Jörg Liebig, University of Passau, Germany
Analysis and Transformation of Configurable Systems
Wednesday, December 4th 2013, 12:30
Room: S 247 (Computer Science Building)
Abstract: Today’s software systems have grown to a level of complexity that make them hard to understand and maintain for developers. It is not only their sheer size, but also their configurability that contributes to their high complexity. Nowadays, software systems support a variety of hardware platforms and provide different configuration options to enable users to adopt a system in application scenarios. To realize the required configurability, developers usually make use of technologies such as feature-oriented programming. Using these technologies, developers are able to make configuration options explicit in the development process. A configuration option represents a unit of functionality that can be reused for the generation of different variants of a system.
Among different implementation techniques and tools that have been proposed by practitioners and researchers, the C preprocessor (cpp) is one of the tools most frequently used to implement configurable software. It relies on a set of directives (e.g., #ifdef) that developers use to express explicit source-to-source transformations. Since the use of cpp doesn’t have to respect the syntactic structure to the underlying language (e.g., C), its use in the development of configurable systems imposes many challenges regarding their analysis and transformation, because existing analysis and transformation techniques expect structured input. Furthermore, current systems such as the Linux kernel provide more than 7000 configuration options, giving rise to the generation of possibly billions of variants. However, myriads of variants cannot be handled efficiently with current analysis and transformation tools. In this talk, we state three research questions regarding the analysis and transformation of cpp-based software systems and present our answers to these questions.