The Roles of Execution and Analysis in Algorthm Design

The analysis and execution of partial algorithm descriptions is an important part of the algorithm design process (as is borne out by studying the behavior of human algorithm designers). In this paper, we describe a language for representing partially designed algorithms and a process, developmental evaluation, that can discover useful knowledge to guide design. Using these and other results from our research in artificial intelligence, we are building a system, DESIGNER, that automatically designs algorithms. This paper also compares developmental evaluation to execution and analysis techniques used for testing complete programs and for validation of abstract specifications; concepts similar to those found in developmental evaluation are thus shown to apply to all stages of the software life cycle.

[1]  Elaine Kant,et al.  Efficiency in program synthesis , 1981 .

[2]  Anneliese Amschler Andrews,et al.  SADAT - An Automated Testing Tool , 1980, IEEE Trans. Software Eng..

[3]  Douglas R. Smith,et al.  Top-Down Synthesis of Simple Divide and Conquer Algorithms. , 1982 .

[4]  Lori A. Clarke,et al.  Test data generation and symbolic execution of programs as an aid to program validation. , 1976 .

[5]  Gerald Jay Sussman,et al.  A Computer Model of Skill Acquisition , 1975 .

[6]  David S. Touretzky,et al.  Implicit Ordering of Defaults in Inheritance Systems , 1984, AAAI.

[7]  Robert Balzer,et al.  Meta-Evaluation as a Tool for Program Understanding , 1977, IJCAI.

[8]  Thomas E. Cheatham,et al.  Symbolic Evaluation and the Analysis of Programs , 1979, IEEE Transactions on Software Engineering.

[9]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[10]  Karl N. Levitt,et al.  SELECT—a formal system for testing and debugging programs by symbolic execution , 1975 .

[11]  Robert Balzer,et al.  EXDAMS: extendable debugging and monitoring system , 1969, AFIPS '69 (Spring).

[12]  Jack Mostow,et al.  Toward Better Models of the Design Process , 1985, AI Mag..

[13]  Howard E Shrobe,et al.  Dependency Directed Reasoning for Complex Program Understanding , 1979 .

[14]  Roger B. Dannenberg,et al.  Formal Program Verification Using Symbolic Execution , 1982, IEEE Transactions on Software Engineering.

[15]  Donald Cohen Symbolic Execution of the Gist Specification Language , 1983, IJCAI.

[16]  Charles Rich Inspection methods in programming , 1980 .

[17]  Elliot Soloway,et al.  A model of software design , 1986, Int. J. Intell. Syst..

[18]  Jr . Thomas E. Cheatham,et al.  Symbolic Evaluation andtheAnalysis ofPrograms , 1979 .

[19]  Lori A. Clarke,et al.  A System to Generate Test Data and Symbolically Execute Programs , 1976, IEEE Transactions on Software Engineering.

[20]  E. F. Miller,et al.  Automated generation of testcase datasets , 1975, Reliable Software.

[21]  Ben Wegbreit,et al.  Mechanical program analysis , 1975, CACM.

[22]  James C. King,et al.  Applications of Symbolic Execution to Program Testing , 1978, Computer.

[23]  William E. Howden,et al.  Symbolic Testing and the DISSECT Symbolic Evaluation System , 1977, IEEE Transactions on Software Engineering.

[24]  Lori A. Clarke,et al.  A partition analysis method to increase program reliability , 1981, ICSE '81.

[25]  William R. Swartout The GIST Behavior Explainer , 1983, AAAI.

[26]  Charles L. Forgy,et al.  OPS5 user's manual , 1981 .

[27]  Allen Newell,et al.  Problem solving techniques for the design of algorithms , 1984, Inf. Process. Manag..

[28]  Donald Cohen A Forward Inference Engine to Aid in Understanding Specifications , 1984, AAAI.

[29]  Allen Newell,et al.  Naive Algorithm Design Techniques: A Case Study , 1985, ECAI.

[30]  Barbara Hayes-Roth,et al.  A Cognitive Model of Planning , 1979, Cogn. Sci..

[31]  Allen Newell,et al.  An Automatic Algorithm Designer: An Initial Implementation , 1983, AAAI.

[32]  Brian Cantwell Smith,et al.  Towards a programming apprentice , 1974, IEEE Transactions on Software Engineering.