Generative and Component-Based Software Engineering

Automatic Programming (AP) systems have been used in a great variety of ways since the early days of software engineering. They have been used in AI related research approaches with the aim to generate computer programs from informal, incomplete, natural language-like specifications as well as in more pragmatic approaches related to 4th level languages. Terms such as “application generator”, “transformational system”, “code synthesizer”, “generative software development” were used for naming various approaches to AP. This paper presents a categorization scheme for AP systems. In this categorization scheme, a clear distinction is made between the AI related, hard APand soft AP systems. After that, a broad range of AP systems as well as their position in the categorization scheme is presented. Finally we discuss the relation between AP and software reuse.

[1]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[2]  Robert Giegerich,et al.  Attribute coupled grammars , 1984, SIGPLAN '84.

[3]  João Saraiva,et al.  Lrc - A Generator for Incremental Language-Oriented Tools , 1998, International Conference on Compiler Construction.

[4]  Uwe Kastens,et al.  GAG: A Practical Compiler Generator , 1982, Lecture Notes in Computer Science.

[5]  S. D. Swierstra,et al.  Using attribute grammars to derive efficient functional programs , 1986 .

[6]  William M. Waite,et al.  Modularity and reusability in attribute grammars , 1994, Acta Informatica.

[7]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[8]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[9]  Richard S. Bird A Formal Development of an Efficient Subercombinator Compiler , 1987, Sci. Comput. Program..

[10]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

[11]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .

[12]  Didier Rémy,et al.  Typing record concatenation for free , 1992, POPL '92.

[13]  Don S. Batory,et al.  The GenVoca model of software-system generators , 1994, IEEE Software.

[14]  Benedict R. Gaster,et al.  A Polymorphic Type System for Extensible Records and Variants , 1996 .

[15]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[16]  Didier Parigot,et al.  Design, implementation and evaluation of the FNC-2 attribute grammar system , 1990, PLDI '90.

[17]  Stephen R. Adams Modular grammars for programming language prototyping , 1991 .

[18]  Uwe Kastens Attribute Grammars in a Compiler Construction Environment , 1991, Attribute Grammars, Applications and Systems.

[19]  João Saraiva,et al.  Designing and Implementing Combinator Languages , 1998, Advanced Functional Programming.

[20]  Atsushi Ohori,et al.  A polymorphic record calculus and its compilation , 1995, TOPL.

[21]  Thomas Johnsson,et al.  Attribute grammars as a functional programming paradigm , 1987, FPCA.

[22]  Anthony M. Sloane,et al.  Eli: a complete, flexible compiler construction system , 1992, CACM.

[23]  S. Doaitse Swierstra,et al.  First-class Attribute Grammars , 2000, Informatica.

[24]  Pierre Deransart,et al.  Attribute Grammars: Definitions, Systems and Bibliography , 1988 .

[25]  Martin Jourdan Strongly non-circular attribute grammars and their recursive evaluation , 1984, SIGPLAN '84.

[26]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[27]  David A. Rushall An Attribute Grammar Evaluator in Haskell , 1992 .

[28]  Charles Simonyi,et al.  Intentional Programming - Innovation in the Legacy Age , 1996 .