In Lecture Notes in Computer Science 1687 (© Springer-Verlag)

Components and Generative Programming

Krzysztof Czarnecki1 and Ulrich W. Eisenecker2

1DaimlerChrysler AG Research and Technology, Ulm, Germany
czarnecki@acm.org

2University of Applied Sciences Heidelberg, Germany
ulrich.eisenecker@t-online.de

Abstract

This paper is about a paradigm shift from the current practice of manually searching for and adapting components and their manual assembly to Generative Programming, which is the automatic selection and assembly of components on demand. First, we argue that the current OO technology does not support reuse and configurability in an effective way. Then we show how a system family approach can aid in defining reusable components. Finally, we describe how to automate the assembly of components based on configuration knowledge. We compare this paradigm shift to the introduction of interchangeable parts and automated assembly lines in the automobile industry.

We also illustrate the steps necessary to develop a product line using a simple example of a car product line. We present the feature model of the product line, develop a layered architecture for it, and automate the assembly of the components using a generator. We also discuss some design issues, applicability of the approach, and future development.

Download paper in PDF

A4 and Letter

Download C++ example source code

zip archive

Full Reference

K. Czarnecki and U. Eisenecker. "Components and Generative Programming." Invited talk, in Proceedings of the Joint European Software Engineering Conference and ACM SIGSOFT International Symposium on the Foundations of Software Engineering (ESEC/FSE'99, Toulouse, France, September 1999), O. Nierstrasz and M. Lemoine, (Eds.), Lecture Notes in Computer Science 1687, Springer-Verlag, 1999, pp. 2-19