A Survey and a Categorization Scheme of Automatic Programming Systems

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 AP- and 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]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[2]  E. Schmidt,et al.  Lex—a lexical analyzer generator , 1990 .

[3]  T. Biggerstaff,et al.  Reusability Framework, Assessment, and Directions , 1987, IEEE Software.

[4]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[5]  David R. Barstow,et al.  The Refinement Paradigm: The Interaction of Coding and Efficiency Knowledge in Program Synthesis , 1981, IEEE Transactions on Software Engineering.

[6]  David R. Barstow,et al.  An overview of ΦNIX , 1982, AAAI 1982.

[7]  Richard C. Waters,et al.  Automatic programming: myths and prospects , 1988, Computer.

[8]  T. Church,et al.  An evaluation of object-oriented CASE tools: the Newbridge experience , 1995, Proceedings Seventh International Workshop on Computer-Aided Software Engineering.

[9]  Zohar Manna,et al.  Synthesis: Dreams - Programs , 1979, IEEE Trans. Software Eng..

[10]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[11]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[12]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[13]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[14]  Robert Balzer,et al.  A 15 Year Perspective on Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[15]  Wolfgang Goebl,et al.  A generative approach for building data-oriented information systems , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[16]  Don S. Batory,et al.  Validating component compositions in software system generators , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[17]  Stan Jarzabek Specifying and generating multilanguage software development environments , 1990, Softw. Eng. J..

[18]  Alan W. Biermann,et al.  Approaches to Automatic Programming , 1976, Adv. Comput..

[19]  K. G. Heisler,et al.  A critical look at the relationship between AI and software engineering , 1988, [Proceedings] 1988 IEEE Workshop on Languages for Automation@m_Symbiotic and Intelligent Robotics.

[20]  David R. Barstow Domain-Specific Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[21]  Ali Mili,et al.  Reusing Software: Issues and Research Directions , 1995, IEEE Trans. Software Eng..

[22]  Wolfgang Goebl The Significance of Generative Software Reuse in the Domain of Data-Oriented Information Systems , 1999, Obj. Logiciel Base données Réseaux.

[23]  Paulo César Masiero,et al.  Development and instantiation of a generic application generator , 1993, J. Syst. Softw..

[24]  C. Cordell Green The design of the PSI program synthesis system , 1976, ICSE '76.

[25]  Ellis Horowitz,et al.  A survey of Application Generators , 1985, IEEE Software.

[26]  Xiaoping Jia,et al.  Code synthesis based on object-oriented design models and formal specifications , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[27]  Sanjay Bhansali,et al.  A hybrid approach to software reuse , 1995, SSR '95.

[28]  James Martin,et al.  Application Development Without Programmers , 1981 .

[29]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[30]  Stan Jarzabek,et al.  From reuse library experiences to application generation architectures , 1995, SSR '95.

[31]  Richard C. Waters,et al.  Overview of the Programmer's Apprentice , 1979, IJCAI.

[32]  Nachum Dershowitz,et al.  Synthetic Programming , 1985, Artificial Intelligence.

[33]  Robert Balzer,et al.  Informality in Program Specifications , 1899, IEEE Transactions on Software Engineering.

[34]  Derek J. Paddon,et al.  A software engineering paradigm for program synthesis , 1994, Softw. Eng. J..