Factored Specifications In The Synthesis Of LISP Functions

  • Authors:
  • Ted J. Biggerstaff

  • Affiliations:
  • -

  • Venue:
  • ACM '78 Proceedings of the 1978 annual conference
  • Year:
  • 1978

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.