Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall, Upper Saddle River (1997)
Szyperski, C.: Component Software—Beyond Object-Oriented Programming, 2nd edn. Addison-Wesley / ACM Press, Boston (2002)
Weiss, D.M., Lai, C.T.R.: Software Product-Line Engineering: A Family-Based Software Development Process. Addison-Wesley, Reading (1999)
Clements, P., Northrop, L. (eds.): Software Product Lines: Practices and Patterns. International Series in Computer Science. Addison-Wesley, Reading (2001)
Parnas, D.: On the design and development of program families. IEEE Transactions on Software Engineering SE-2, 1–9 (1976)
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 http://www.bayfronttechnologies.com/thesis.pdf
Cleaveland, J.C.: Building application generators. IEEE Software 9, 25–33 (1988)
Czarnecki, K., Eisenecker, U.W.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Reading (2000)
Cleaveland, C.: Program Generators with XML and Java. Prentice Hall, Englewood Cliffs (2001)
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)
Greenfield, J., Short, K.: Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. Wiley, Indianapolis (2004)
Landin, P.J.: The next 700 programming languages. Commun. ACM 9, 157–166 (1966)
Bentley, J.L.: Little languages. Communications og the ACM 29, 711–721 (1986)
van Deursen, A., Klint, P., Visser, J.: Domain-specific languages: an annotated bibliography. SIGPLAN Not. 35, 26–36 (2000)
Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. Technical Report SEN-E0309, CWI, Amsterdam (2003), Available from http://www.cwi.nl/ftp/CWIreports/SEN/SEN-E0309.pdf
Wile, D.S.: Supporting the dsl spectrum. CIT Journal of Computing and Information Technology 9, 263–287 (2001)
Bosch, J.: Software product lines: Organizational alternatives. In: Proceedings of the 23rd International Conference on Software Engineering, ICSE (2001)
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)
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)
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)
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)
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)
Bosch, J.: Design and Use of Software Architecture: Adopting and evolving a product-line approach. Addison-Wesley, Reading (2000)
Czarnecki, K., O’Donnel, J., Striegnitz, J., Taha, W.: Dsl implementation in metaocaml, template haskell, and c++. In: [48], pp. 50–71 (2004)
Chiba, S.: OpenC++ (2004), Available at http://opencxx.sourceforge.net/index.shtml
Tatsubori, M.: OpenJava: An extensible Java (2004), Available at http://sourceforge.net/projects/openjava/
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)
Grey, J., et al.: OOPSLA 2002, Workshop on Domain-Specific Visual Languages (2002), Online proceedings at http://www.cis.uab.edu/info/OOPSLA-DSVL2/
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)
MetaCase, Jyväskylä, Finland: MetaEdit+ User Manual (2004), Available from http://www.metacase.com
Antkiewicz, M., Czarnecki, K.: FeaturePlugin: Feature modeling plug-in for Eclipse. In: OOPSLA 2004 Eclipse Technology eXchange (ETX) Workshop (2004), Paper, available from http://www.swen.uwaterloo.ca/~kczarnec/etx04.pdf , software available from gp.uwaterloo.ca/fmp
pure-systems GmbH: Variant management with pure:consul. Technical White Paper (2003), Available from http://web.pure-systems.com
Bednasch, T., Endler, C., Lang, M.: CaptainFeature (2002-2004) Tool available on SourceForge at https://sourceforge.net/projects/captainfeature/
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), http://fxvcl.sourceforge.net/
Delta Software Technology GmbH: ANGIE - A New Generator Engine (2004), Available at http://www.delta-software-technology.com/GP/gptop.htm
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)
Visser, E.: Program transformation with stratego/xt: Rules, strategies, tools, and systems. In: [48]
Cordy, J., Dean, T., Malton, A., Schneider, K.: Source transformation in software engineering using the txl transformation system. Information and Software Technology 44 (2002)
Taha, W.: A gentle introduction to multi-stage programming. In: [48]
Jones, N., Gomard, C., Sestoft, P. (eds.): Partial Evaluation and Automatic Program Generation. International Series in Computer Science. Prentice Hall, Englewood Cliffs (1993)
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)
Consel, C.: From a program family to a domain-specific language. In: [48], pp. 19–29
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)
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)
Mezini, M., Ostermann, K.: Variability management with feature-oriented programming and aspects. In: Foundations of Software Engineering (FSE-12), ACM SIGSOFT (2004)
Object Management Group: Model-Driven Architecture (2004), http://www.omg.com/mda
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)
Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, Revised Papers, Springer, Heidelberg (2004)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Czarnecki, K. (2005). Overview of Generative Software Development. In: Banâtre, JP., Fradet, P., Giavitto, JL., Michel, O. (eds) Unconventional Programming Paradigms. UPP 2004. Lecture Notes in Computer Science, vol 3566. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11527800_25
Download citation
DOI: https://doi.org/10.1007/11527800_25
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-27884-9
Online ISBN: 978-3-540-31482-0
eBook Packages: Computer ScienceComputer Science (R0)