Generative Programming and Component Engineering

Generative Software Development

Krzysztof Czarnecki, University of Waterloo

Wednesday, Oct 25, from 13:30 to 17:00


Product-line engineering seeks to exploit the commonalities among systems from a given problem domain while managing the variabilities among them in a systematic way. In product-line engineering, new system variants can be rapidly created based on a set of reusable assets (such as a common architecture, components, models, etc.). Generative software development aims at modeling and implementing product lines in such a way that a given system can be automatically generated from a specification written in one or more textual or graphical domain-specific languages (DSLs).

In this tutorial, participants will learn how to perform domain analysis (i.e., capturing the commonalities and variabilities within a system family in a software schema using feature modeling), domain design (i.e., developing a common architecture for a system family), and implementing software generators using multiple technologies, such as template-based code generation and model transformations. Available tools for feature modeling and implementing DSLs as well as related approaches such as Software Factories and Model-Driven Architecture will be surveyed and compared. The presented concepts and methods will be demonstrated using a sample case study of an e-commerce platform.

Level: Intermediate

Required Knowledge

Basic knowledge of object-oriented programming and modeling.

Speaker profile

Krzysztof Czarnecki is an Assistant Professor at the University of Waterloo, Canada. Before coming to Waterloo, he spent 8 years at DaimlerChrysler Research working on the practical applications of generative programming. He is co-author of the book "Generative Programming" (Addison-Wesley, 2000), which is regarded as founding work of the area and is used as a graduate text at universities around the world. He was General Chair of the 2003 International Conference on Generative Programming and Component Engineering (GPCE) and keynote speaker at UML 2004. His current work focuses on realizing the synergies between generative and model-driven software development.