Generative Programming and Component Engineering

Generative Programming and Component Engineering

Generative Software Development


System family engineering seeks to exploit the commonalities among systems from a given problem domain while managing the variabilities among them in a systematic way. In system family 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 system families in such a way that a given system can be automatically generated from a specification written in a textual or graphical domain-specific language. Software Factories is a generative software development method that focuses on multi-dimensional specification, combining partial and complete generation of framework-completion code from domain-specific models with pattern and framework development.

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. We will also demonstrate tool support for Software Factories, and discuss its relationship to model-driven development and agile development methods.The presented concepts and methods will be demonstrated using a sample case study.


Conv. Ctr. Meeting Room 10

Date and Time

Sunday 10-24-04 1:30 - 5:00 pm (half-day)


Krzysztof Czarnecki, University of Waterloo, czarnecki (at)

Jack Greenfield, Microsoft Corporation, jackgr (at)

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 will deliver a keynote on generative software development at the UML 2004 conference in Lisbon. His current research focuses on realizing the synergies between generative and model-driven software development.

Jack Greenfield is an Architect for Enterprise Frameworks and Tools at Microsoft. He was previously Chief Architect, Practitioner Desktop Group, at Rational Software Corporation, and Founder and CTO of InLine Software Corporation. At NeXT, he developed the Enterprise Objects Framework, now called Apple Web Objects. A well known speaker and writer, he is co-author of the book on Software Factories used in this tutorial. He also contributed to UML, J2EE and related OMG and JSP specifications. He holds a B.S. in Physics from George Mason University.