data types have recently emerged as an important facility for the specification of sequential programs. Originally defined in the language SIMULA,l abstract data types were soon recognized as useful in structured programming. 2 Their recent refinement has taken three directions. First, they have been developed to support top-down design methods. 3 Second, they have been extended so as to provide a basis for formal verification. 4 Finally, they have been used as the basis for a tool to aid program developmentS which admits rigorous, but perhaps incomplete, analysis. 6 The variety of these uses indicates the breadth of the benefits which accrue from facilities for high-level, abstract description. While abstract data types are convenient for the description of a software system's data storage components, they are not convenient for the succinct description of those system components which are more for the processing than the storage of data. This is particularly true when the components operate concurrently. ** The major problem is that abstract data types are oriented towards describing components as structures of data which are operated upon via * This work was supported by a grant from Sycor, Inc. ** By concurrent we mean parallelism which may be actually achieved by executing the system in a multiprocessing environment or which may be only apparent at abstract levels of system description and never achieved during
[1]
C. A. R. HOARE,et al.
An axiomatic basis for computer programming
,
1969,
CACM.
[2]
Jack C. Wileden,et al.
An introduction to the DREAM software design system
,
1977,
SOEN.
[3]
Mary Shaw,et al.
Abstraction and Verification in Alphard: Introduction to Language and Methodology
,
1976
.
[4]
Kristen Nygaard,et al.
SIMULA: an ALGOL-based simulation language
,
1966,
CACM.
[5]
William E. Riddle.
Hierarchical modeling of operating system structure and behavior
,
1972,
ACM '72.
[6]
Stephen N. Zilles,et al.
Specification techniques for data abstractions
,
1975
.
[7]
Tony Hoare,et al.
Notes on Data Structuring
,
1972
.
[8]
Victor R. Lesser,et al.
Parallelism in Artificial Intelligence Problem Solving: A Case Study of Hearsay II
,
1977,
IEEE Transactions on Computers.
[9]
Niklaus Wirth,et al.
Modula: A language for modular multiprogramming
,
1977,
Softw. Pract. Exp..
[10]
Peter Henderson,et al.
Finite state modelling in program development
,
1975,
Reliable Software.
[11]
James C. Browne,et al.
Gypsy: A language for specification and implementation of verifiable programs
,
1977
.