WG211/M12Liebig
Analysis and Transformation of Product Lines by Jörg Liebig
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 variability 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 variability, developers usually make use of product-line technologies such as feature-oriented programming.
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 variable software. It relies on a set of directives (a.k.a. macros) that developers use to express explicit source-to-source transformations. Unfortunately, cpp is not obliged to respect the syntactic structure of the underlying language (e.g., C) and, thus, users do not necessarily respect it either. However, existing analysis and transformation techniques expect structured input. thus, the use of cpp in the development of product lines imposes many challenges.
In this presentation, we present our findings regarding three research questions on the analysis and transformation of cpp-based product lines.