Using domain specific languages for product line engineering

Markus Völter. Using domain specific languages for product line engineering. In Dirk Muthig, John D. McGregor, editors, Software Product Lines, 13th International Conference, SPLC 2009, San Francisco, California, USA, August 24-28, 2009, Proceedings. Volume 446 of ACM International Conference Proceeding Series, pages 329, ACM, 2009. [doi]


Product line engineering deals with managing and implementing the variability among a set of related products. We distinguish between two kinds of variability: structural and non-structural. Structural variability can be described using programming language code or creative construction DSLs, whereas non-structural variability is described using configuration based approaches, such as feature models. Many product lines have both kinds of variability, and they need to be integrated efficiently. This paper describes an approach for product line engineering using projectional language workbenches. These represent code and models with the same fundamental technology, enabling the mixing of models and code. They make the tight integration between several domain-specific languages possible and simple. Since they can store arbitrary information in models, it is possible to overlay non-structural variability over structural variability (i.e. apply feature model-based configuration to code and models). Because of the projectional approach to editing, programs can be shown with or without the dependencies on feature models, they can even be rendered (and edited) for a specific variant. This approach leads to highly integrated and productive tools for product line development. The paper explains the approach, outlines the implementation of a prototype tool based on Jetbrains MPS and illustrates the benefits using a small product line for embedded systems.