On the Composition of Well-Structured Programs
ACM Computing Surveys (CSUR)
An Introduction to Proving the Correctness of Programs
ACM Computing Surveys (CSUR)
Communications of the ACM
A technique for software module specification with examples
Communications of the ACM
A Discipline of Programming
Automatic programming: Automating the software system development process
ACM '77 Proceedings of the 1977 annual conference
A methodology for LISP program construction from examples
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
The logic of computer programming
The logic of computer programming
C2: a "super-compiler" approach to automatic programming.
C2: a "super-compiler" approach to automatic programming.
Hi-index | 0.00 |
One of the outstanding problems of software engineering is the development of a program specification system which is rigorous, unambiguous, and powerful; yet one which is flexible, easy to use, and natural. This paper takes a step in that direction by introducing a new specification paradigm with much of the naturalness and flexibility of informal, natural language specifications yet with sufficient formality and rigor to allow machine processing of the specifications. This paper explains and analyzes the program specification method used by a working, automatic program synthesis system (the “C2,” Design Directed Program Synthesis System). This specification paradigm has a number of unique features: • The specifications consist of a number of independently stated, yet complementary elements or factors which clearly separate the “what” and “how” aspects of specification. • Each factored specification element is decoupled from the others and is meaningful by itself. • There is a well-defined (i.e., implemented) procedure for synthesizing programs using this specification paradigm. • One of the fundamental factored elements of this specification paradigm is an abstracted design. Each design is highly general and can be used to synthesize an infinity of target programs exhibiting a wide range of detailed control structures and functions. • The specification paradigm is intuitively appropriate in that each factored specification element contributes to the synthesis of the intuitively appropriate portions of the target program. This paper explains each factored specification element required by the C2 paradigm, what portions of the target program are developed from a specific element, and to a limited extent, how those target program portions are derived from the specification element. In addition, we will compare this specification methodology to other methods such as algebraic specification methods, specification languages, design languages, formal methods, and informal methods. Finally, we will discuss how this paradigm might be applied to a real-world system such as a business system.