Overview of Generative Software Development

  • Krzysztof Czarnecki
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3566)


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 one or more textual or graphical domain-specific languages. This paper gives an overview of the basic concepts and ideas of generative software development including DSLs, domain and application engineering, generative domain models, networks of domains, and technology projections. The paper also discusses the relationship of generative software development to other emerging areas such as Model Driven Development and Aspect-Oriented Software Development.


Solution Space System Family Problem Space Software Product Line Domain Engineering 
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. 1.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River (1997)zbMATHGoogle Scholar
  2. 2.
    Szyperski, C.: Component Software—Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley / ACM Press, Boston (2002)Google Scholar
  3. 3.
    Weiss, D.M., Lai, C.T.R.: Software Product-Line Engineering: A Family-Based Software Development Process. Addison-Wesley, Reading (1999)Google Scholar
  4. 4.
    Clements, P., Northrop, L. (eds.): Software Product Lines: Practices and Patterns. International Series in Computer Science. Addison-Wesley, Reading (2001)Google Scholar
  5. 5.
    Parnas, D.: On the design and development of program families. IEEE Transactions on Software Engineering SE-2, 1–9 (1976)CrossRefGoogle Scholar
  6. 6.
    Neighbors, J.M.: Software Construction using Components. PhD thesis, Department of Information and Computer Science, University of California, Irvine (1980), Technical Report UCI-ICS-TR160., Available from
  7. 7.
    Cleaveland, J.C.: Building application generators. IEEE Software 9, 25–33 (1988)CrossRefGoogle Scholar
  8. 8.
    Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)Google Scholar
  9. 9.
    Cleaveland, C.: Program Generators with XML and Java. Prentice Hall, Englewood Cliffs (2001)Google Scholar
  10. 10.
    Batory, D., Johnson, C., MacDonald, B., von Heeder, D.: Achieving extensibility through product-lines and domain-specific languages: A case study. ACM Transactions on Software Engineering and Methodology (TOSEM) 11, 191–214 (2002)CrossRefGoogle Scholar
  11. 11.
    Greenfield, J., Short, K.: Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. Wiley, Indianapolis (2004)Google Scholar
  12. 12.
    Landin, P.J.: The next 700 programming languages. Commun. ACM 9, 157–166 (1966)zbMATHCrossRefGoogle Scholar
  13. 13.
    Bentley, J.L.: Little languages. Communications og the ACM 29, 711–721 (1986)CrossRefMathSciNetGoogle Scholar
  14. 14.
    van Deursen, A., Klint, P., Visser, J.: Domain-specific languages: an annotated bibliography. SIGPLAN Not. 35, 26–36 (2000)CrossRefGoogle Scholar
  15. 15.
    Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. Technical Report SEN-E0309, CWI, Amsterdam (2003), Available from
  16. 16.
    Wile, D.S.: Supporting the dsl spectrum. CIT Journal of Computing and Information Technology 9, 263–287 (2001)zbMATHCrossRefGoogle Scholar
  17. 17.
    Bosch, J.: Software product lines: Organizational alternatives. In: Proceedings of the 23rd International Conference on Software Engineering, ICSE (2001)Google Scholar
  18. 18.
    Batory, D., O’Malley, S.: The design and implementation of hierarchical software systems with reusable components. ACM Transactions on Software Engineering and Methodology 1, 355–398 (1992)CrossRefGoogle Scholar
  19. 19.
    Kang, K., Cohen, S., Hess, J., Nowak, W., Peterson, S.: Feature-oriented domain analysis (FODA) feasibility study. Technical Report CMU/SEI-90TR -21, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA (1990)Google Scholar
  20. 20.
    Czarnecki, K., Helsen, S., Eisenecker, U.: Staged configuration using feature models. In: Nord, R.L. (ed.) SPLC 2004. LNCS, vol. 3154, pp. 266–283. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  21. 21.
    DeBaud, J.-M., Schmid, K.: A systematic approach to derive the scope of software product lines. In: Proceedings of the 21st International Conference on Software Engineering (ICSE), pp. 34–43. IEEE Computer Society Press, Los Alamitos (1999)CrossRefGoogle Scholar
  22. 22.
    Buschmann, F., Jkel, C., Meunier, R., Rohnert, H., Stahl, M. (eds.): Pattern-Oriented Software Architecture – A System of Patterns. International Series in Computer Science. John Wiley & Sons, Chichester (1996)Google Scholar
  23. 23.
    Bosch, J.: Design and Use of Software Architecture: Adopting and evolving a product-line approach. Addison-Wesley, Reading (2000)Google Scholar
  24. 24.
    Czarnecki, K., O’Donnel, J., Striegnitz, J., Taha, W.: Dsl implementation in metaocaml, template haskell, and c++. In: [48], pp. 50–71 (2004)Google Scholar
  25. 25.
    Chiba, S.: OpenC++ (2004), Available at
  26. 26.
    Tatsubori, M.: OpenJava: An extensible Java (2004), Available at
  27. 27.
    Bravenboer, M., Visser, E.: Concrete syntax for objects. domain-specific language embedding and assimilation without restrictions. In: Schmidt, D.C. (eds.) Proceedings of the 19th ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications (OOPSLA 2004), Vancouver, Canada, October 2004. ACM SIGPLAN (2004)Google Scholar
  28. 28.
    Grey, J., et al.: OOPSLA 2002, Workshop on Domain-Specific Visual Languages (2002), Online proceedings at
  29. 29.
    Lédeczi, Á., Bakay, Á., Maróti, M., Völgyesi, P., Nordstrom, G., Sprinkle, J., Karsai, G.: Composing domain-specific design environments. IEEE Computer 34, 44–51 (2001)Google Scholar
  30. 30.
    MetaCase, Jyväskylä, Finland: MetaEdit+ User Manual (2004), Available from
  31. 31.
    Antkiewicz, M., Czarnecki, K.: FeaturePlugin: Feature modeling plug-in for Eclipse. In: OOPSLA 2004 Eclipse Technology eXchange (ETX) Workshop (2004), Paper, available from, software available from
  32. 32.
    pure-systems GmbH: Variant management with pure:consul. Technical White Paper (2003), Available from
  33. 33.
    Bednasch, T., Endler, C., Lang, M.: CaptainFeature (2002-2004) Tool available on SourceForge at
  34. 34.
    Wong, T., Jarzabek, S., Swe, S.M., Shen, R., Zhang, H.: Xml implementation of frame processor. In: Proceedings of the ACM Symposium on Software Reusability (SSR 2001), Toronto, Canada, May 2001, pp. 164–172 (2001),
  35. 35.
    Delta Software Technology GmbH: ANGIE - A New Generator Engine (2004), Available at
  36. 36.
    Baxter, I., Pidgeon, P., Mehlich, M.: Dms: Program transformations for practical scalable software evolution. In: Proceedings of the International Conference on Software Engineering (ICSE 2004). IEEE Press, Los Alamitos (2004)Google Scholar
  37. 37.
    Visser, E.: Program transformation with stratego/xt: Rules, strategies, tools, and systems. In: [48] Google Scholar
  38. 38.
    Cordy, J., Dean, T., Malton, A., Schneider, K.: Source transformation in software engineering using the txl transformation system. Information and Software Technology 44 (2002)Google Scholar
  39. 39.
    Taha, W.: A gentle introduction to multi-stage programming. In: [48] Google Scholar
  40. 40.
    Jones, N., Gomard, C., Sestoft, P. (eds.): Partial Evaluation and Automatic Program Generation. International Series in Computer Science. Prentice Hall, Englewood Cliffs (1993)zbMATHGoogle Scholar
  41. 41.
    Consel, C., Danvy, O.: Tutorial notes on partial evaluation. In: Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles Of Programming Languages, Charleston, SC, USA, pp. 493–501. ACM Press, New York (1993)Google Scholar
  42. 42.
    Consel, C.: From a program family to a domain-specific language. In: [48], pp. 19–29Google Scholar
  43. 43.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of aspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 327. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  44. 44.
    Tarr, P., Ossher, H., Harrison, W., Sutton, S.M.: N degrees of separation: Multi-dimensional separation of concerns. In: Proceedings International Conference on Software Engineering (ICSE 1999), pp. 107–119. ACM Press, New York (1999)CrossRefGoogle Scholar
  45. 45.
    Mezini, M., Ostermann, K.: Variability management with feature-oriented programming and aspects. In: Foundations of Software Engineering (FSE-12), ACM SIGSOFT (2004)Google Scholar
  46. 46.
    Object Management Group: Model-Driven Architecture (2004),
  47. 47.
    Barth, B., Butler, G., Czarnecki, K., Eisenecker, U.: Report on the ecoop’2001 workshop on generative programming. In: Frohner, A. (ed.) ECOOP-WS 2001. LNCS, vol. 2323. Springer, Heidelberg (2001)Google Scholar
  48. 48.
    Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, Revised Papers, Springer, Heidelberg (2004)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Krzysztof Czarnecki
    • 1
  1. 1.University of WaterlooCanada

Personalised recommendations