Components and Generative Programming

  • Krzysztof Czarnecki
  • Ulrich W. Eisenecker
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1687)


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 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.


Assembly Line Generative Program Software Reuse Layered Architecture Reusable Component 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Arr94]
    G. Arrango. Domain Analysis Methods. In Software Reusability, Schäfer, R. Prieto-Díaz, and M. Matsumoto (Eds.), Ellis Horwood, New York, New York, 1994, pp. 17–49Google Scholar
  2. [BMR+96]
    F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture. A System of Patterns. Wiley, UK, 1996Google Scholar
  3. [BO92]
    D. Batory and S. O’Malley. The Design and Implementation of Hierarchical Software Systems with Reusable Components. In ACM Transactions on Software Engineering and Methodology, vol. 1, no. 4, October 1992, pp. 355–398CrossRefGoogle Scholar
  4. [CE98]
    K. Czarnecki and U. Eisenecker. Template-Metaprogramming,
  5. [CE99a]
    K. Czarnecki and U. Eisenecker. Synthesizing Objects. In Proceedings of ECOOP’99 — Object-Oriented Programming, LNCS, Springer-Verlag, 1999, see Google Scholar
  6. [CE99b]
    K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Techniques, and Applications. To appear, Addison-Wesley, 1999Google Scholar
  7. [CEG+98]
    K. Czarnecki, U. Eisenecker, R. Glück, D. Vandevoorde, and T. Veldhuizen. Generative Programming and Active Libraries. Submitted for publication, 1998Google Scholar
  8. [CN98]
    S. Cohen and L. M. Northrop. Object-Oriented Technology and Domain Analysis. In J. Poulin, (Eds.). Proceedings of the Fifth International Conference on Software Reuse (Victoria, Canada, June 1998). IEEE Computer Society Press, 1998 [DP98], pp. 86–93Google Scholar
  9. [Cox90]
    B. J. Cox. Planning the Software Industrial Revolution. In IEEE Software, November 1990, see
  10. [Cza98]
    K. Czarnecki. Generative Programming: Principles and Techniques of Software Engineering Based on Automated Configuration and Fragment-Based Component Models. Ph.D. thesis, Technische Universität Ilmenau, Germany, 1998, see
  11. [DP98]
    P. Devanbu and J. Poulin, (Eds.). Proceedings of the Fifth International Conference on Software Reuse (Victoria, Canada, June 1998). IEEE Computer Society Press, 1998Google Scholar
  12. [EC99]
    U. Eisenecker and K. Czarnecki. Generative Programmierung: Teil 1 & 2. To appear in the German edition of the Microsoft System Journal, no. 4 and 5, 1999Google Scholar
  13. [GFA98]
    M. L. Griss, J. Favaro, and M. d’Alessandro. Integrating Feature Modeling with the RSEB. In J. Poulin, (Eds.). Proceedings of the Fifth International Conference on Software Reuse (Victoria, Canada, June 1998). IEEE Computer Society Press, 1998 [DP98], pp. 76–85, see
  14. [GMCL]
    Homepage of the Generative Matrix Computation Library at
  15. [JGJ98]
    I. Jacobson, M. Griss, and P. Jonsson. Software Reuse: Architecture, Process and Organization for Business Success. Addison Wesley Longman, May 1997Google Scholar
  16. [KCH+90]
    K. Kang, S. Cohen, J. Hess, W. Nowak, and S. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report, CMU/SEI-90-TR-21, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pennsylvania, November 1990Google Scholar
  17. [KLL+97]
    G. Kiczales, J. Lamping, C. V. Lopes, C. Maeda, A. Mendhekar, and G. Murphy. Open Implementation Design Guidelines. In Proceedings of the 19th International Conference on Software Engineering (ICSE), 1997, pp. 481–490Google Scholar
  18. [KLM+97]
    G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-Oriented Programming. In Proceedings of 11th European Conference on Object-Oriented Programming (ECOOP’ 97), M. Aksit and S. Matsuoka, (Eds.), Springer-Verlag 1997, pp. 220–242, see
  19. [Kna98]
    J. Knaupp. Algorithm Generators: A First Experience, see
  20. [ML98]
    M. Mezini and K. Lieberherr. Adaptive Plug-and-Play Components for Evolutionary Software Development. In Proceedings of the Conference on Object-Oriented Programming Languages and Applications (OOPSLA’ 98), 1998Google Scholar
  21. [MS96]
    D. R. Musser and A. Saini. STL Tutorial and Reference Guide. Addison-Wesley, Reading, Massachusetts, 1996Google Scholar
  22. [Neu98]
    T. Neubert. Anwendung von generativen Programmiertechniken am Beispiel der Matrixalgebra. Diplomarbeit, Technische Universität Chemnitz, 1998, also see [GMCL]Google Scholar
  23. [OSVA99]
    Objektorientierte Softwarewiederverwendung in verteilten Architekturen. Final report of the OSVA project. Sponsored by the German Federal Ministry of Education, Science, Research and Technology (BMBF), grant no. 01IS605A4, Mai 1999Google Scholar
  24. [Par76]
    D. Parnas. On the design and development of program families. In IEEE Transactions on Software Engineering, vol. SE-2, no. 1, 1976, pp. 1–9CrossRefGoogle Scholar
  25. [Ree96]
    T. Reenskaug with P. Wold and O.A. Lehne. Working with Objects: The OOram Software Engineering Method. Manning, 1996sGoogle Scholar
  26. [SB98]
    Y. Smaragdakis and D. Batory. Implementing Layered Designs with Mixin Layers. In Proceedings of the 12th European Conference Object-Oriented Programming (ECOOP’98), LNCS 1445, Springer-Verlag, pp. 550–570CrossRefGoogle Scholar
  27. [SCK+96]
    M. Simos, D. Creps, C. Klinger, L. Levine, and D. Allemang. Organization Domain Modeling (ODM) Guidebook, Version 2.0. Informal Technical Report for STARS, STARS-VC-A025/001/00, June 14, 1996, see
  28. [Sim96]
    C. Simonyi. Intentional Programming — Innovation in the Legacy Age. Position paper presented at IFIP WG 2.1 meeting, June 4, 1996, see
  29. [Unr94]
    E. Unruh. Prime number computation. ANSI X3J16-94-0075/ISO WG21-462, 1994Google Scholar
  30. [Vel95]
    T. Veldhuizen. Using C++ template metaprograms. In C++ Report, vol. 7, no. 4, May 1995, pp. 36–43, see Google Scholar
  31. [Wil97]
    A. Willey. Technology Transition: An Historical Perspective. June 6, 1997, online article available at

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Krzysztof Czarnecki
    • 1
  • Ulrich W. Eisenecker
    • 2
  1. 1.DaimlerChrysler AG Research and TechnologyUlmGermany
  2. 2.University of Applied Sciences HeidelbergGermany

Personalised recommendations