Artificial intelligence and software engineering

Software Engineering is a knowledge-intensive activity, requiring extensive knowledge of the application domain and of the target software itself. Many Software Engineering costs can be attributed to the ineffectiveness of current techniques for managing this knowledge, and Artificial Intelligence techniques can help alleviate this situation. More than two decades of research have led to many significant theoretical results, but few demonstrations of practical utility. This is due in part to the amount and diversity of knowledge required by Software Engineering activities, and in part to the fact that much of the research has been narrowly focused, missing many issues that are of great practical importance. Important issues that remain to be addressed include the representation and use of domain knowledge and the representation of the design and implementation history of a software system. If solutions to these issues are found, and experiments in practical situations are successful, the implications for the practice of Software Engineering will be profound, and radically different software development paradigms will become possible.

[1]  Kathryn L. Heninger Specifying Software Requirements for Complex Systems: New Techniques and Their Application , 2001, IEEE Transactions on Software Engineering.

[2]  D. Barstow An Experiment in Knowledge-Based Automatic Programming , 1986, Artif. Intell..

[3]  James C. King,et al.  Proving Programs to be Correct , 1971, IEEE Transactions on Computers.

[4]  Thomas E. Cheatham,et al.  A System for Program Refinement , 1979, ICSE.

[5]  Elaine Kant Understanding and Automating Algorithm Design , 1985, IEEE Transactions on Software Engineering.

[6]  Elaine Kant,et al.  The Roles of Execution and Analysis in Algorthm Design , 1985, IEEE Transactions on Software Engineering.

[7]  Howard E. Shrobe,et al.  Initial Report on a Lisp Programmer's Apprentice , 1978, IEEE Transactions on Software Engineering.

[8]  Douglas R. Smith,et al.  Research on Knowledge-Based Software Environments at Kestrel Institute , 1985, IEEE Transactions on Software Engineering.

[9]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[10]  David R. Barstow,et al.  Interactive programming environments , 1984, SOEN.

[11]  Reid G. Smith,et al.  Impulse-86: a substrate for object-oriented interface design , 1986, OOPLSA '86.

[12]  David S. Wile,et al.  Program developments: formal explanations of implementations , 1983, CACM.

[13]  Reid G. Smith STROBE: Support for Structured Object Knowledge Representation , 1983, IJCAI.

[14]  Samuel B. Williams,et al.  ASSOCIATION FOR COMPUTING MACHINERY , 2000 .

[15]  Elaine Kant,et al.  On the Efficient Synthesis of Efficient Programs , 1983, Artif. Intell..

[16]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[17]  Terry Winograd,et al.  Breaking the complexity barrier again , 1973, SIGPLAN '73.

[18]  John Mylopoulos,et al.  Knowledge Representation as the Basis for Requirements Specifications , 1985, Computer.

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

[20]  Elliot Soloway,et al.  PROUST: Knowledge-Based Program Understanding , 1984, IEEE Transactions on Software Engineering.

[21]  Herbert A. Simon,et al.  Whether software engineering needs to be artificially intelligent , 1986, IEEE Transactions on Software Engineering.

[22]  Ralf Steinbrüggen,et al.  Program Transformation Systems , 1983, CSUR.

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

[24]  Robert Balzer,et al.  Transformational Implementation: An Example , 1981, IEEE Transactions on Software Engineering.

[25]  Herbert A. Simon,et al.  Experiments with a Heuristic Compiler , 1963, JACM.

[26]  Richard C. T. Lee,et al.  PROW: A Step Toward Automatic Program Writing , 1969, IJCAI.

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

[28]  Edmond Schonberg,et al.  Programming by Refinement, as Exemplified by the SETL Representation Sublanguage , 1979, TOPL.

[29]  Shmuel Katz,et al.  An Advisory System for Developing Data Representations , 1981, IJCAI.

[30]  William R. Swartout,et al.  XPLAIN: A System for Creating and Explaining Expert Consulting Programs , 1983, Artif. Intell..

[31]  Jerrold M Ginsparg Natural Language Processing in an Automatic Programming Domain , 1978 .

[32]  Alan W. Biermann,et al.  Automatic Program Construction Techniques , 1984 .

[33]  John P. McDermott,et al.  R1: The Formative Years , 1981, AI Mag..

[34]  David R. Barstow,et al.  An automatic programming system to support an experimental science , 1982, ICSE '82.

[35]  Friedrich L. Bauer,et al.  Algorithmic Language and Program Development , 1982, Texts and Monographs in Computer Science.

[36]  David R. Barstow,et al.  On Program Synthesis Knowledge , 1978, Artif. Intell..

[37]  George E. Heidorn Automatic Programming Through Natural Language Dialogue: A Survey , 1976, IBM J. Res. Dev..

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

[39]  Wolfgang Bibel,et al.  Syntax-Directed, Semantics-Supported Program Synthesis , 1979, Artif. Intell..

[40]  Brian T. Smith Position paper to be presented at "Verification workshop III (verkshop III)" to be held in Watsonville, CA. Feb. 18--21, 1985 , 1985, SOEN.

[41]  Dana S. Scott,et al.  First Steps Towards Inferential Programming , 1983, IFIP Congress.

[42]  Charles Rich A Formal Representation For Plans In The Programmer's Apprentice , 1982, On Conceptual Modelling.

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

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

[45]  Friedrich L. Bauer,et al.  Programming in a Wide Spectrum Language: A Collection of Examples , 1981, Sci. Comput. Program..

[46]  Robert Balzer,et al.  On the inevitable intertwining of specification and implementation , 1982, CACM.

[47]  Van E. Kelly,et al.  Inferring Formal Software Specifications from Episodic Descriptions , 1987, AAAI.

[48]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

[49]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[50]  R.M. Baizer Living in the Next-Generation Operating System , 1987, IEEE Software.

[51]  Robert Balzer,et al.  Report on a knowledge-based software assistant , 1986 .

[52]  William R. Swartout,et al.  GIST English Generator , 1982, AAAI.

[53]  C. Cordell Green,et al.  Application of Theorem Proving to Problem Solving , 1969, IJCAI.

[54]  Daniel G. Bobrow,et al.  Beyond the chalkboard: computer support for collaboration and problem solving in meetings , 1988, CACM.

[55]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

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

[57]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[58]  Richard C. Waters,et al.  Readings in artificial intelligence and software engineering , 1986 .

[59]  Reid G. Smith On the Development of Commercial Expert Systems , 1984, AI Mag..

[60]  Richard C. Waters The Programmer's Apprentice: A Session with KBEmacs , 1985, IEEE Transactions on Software Engineering.

[61]  David R. Barstow A Perspective on Automatic Programming , 1984 .

[62]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[63]  Cordell Green Research on Knowledge Based Programming and Algorithm Design. , 1981 .

[64]  Stephen Fickas,et al.  Automating the Transformational Development of Software , 1985, IEEE Transactions on Software Engineering.

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

[66]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[67]  Terry Winograd,et al.  Beyond programming languages , 1979, CACM.

[68]  Douglas R. Smith Top-down synthesis of divide-and-conquer algorithms , 1986 .

[69]  Zohar Manna,et al.  The Origin of the Binary-Search Paradigm , 1985, IJCAI.

[70]  Amir Pnueli,et al.  Use of a Nonprocedural Specification Language and Associated Program Generator in Software Development , 1979, TOPL.