This design model separates application logic from control logic to help designers of distributed and concurrent programs exploit such concepts as stepwise refinement and data abstraction. A commonly held view is that designs for concurrent or distributed systems are best modeled on message passing systems in which each node is a module (that is, a package of programs and data objects*) and each message corresponds to the parameters of a procedure call. In such systems, nodes may be located in different memories for distributed processing , and all nodes that have received messages may process them concurrently. With that view, many of the simplifying concepts used in the design of sequential programs, such as stepwise refinement, data abstraction, and modular design, can be exploited in the design of concurrent and distributed systems. This article examines the consequences of such an approach but has an objective and perspective that differ from those of similar articles on the same subject in several important respects. Problem domain Many researchers are concerned with resolving issues that either arise in very general models of concurrency, such as Petri nets or electrical circuits, *Modules are similar to Ada packages, in that they encapsulate procedures and common data. They can also be viewed as instances of abstract data types. or in models that are insensitive to the evolutionary process of design. Following Mills,2 we are concerned with a different, but quite large, set of applications: those that can be modeled on mathematical functions (having an input and an output but no need for a memory of prior executions) or state machines (which have memory as well as input and output). Most forms of real-time interactive systems, such as those in air traffic control, satellite tracking, airline reservations, and library checkout, precisely fit this model.
[1]
Andrew Birrell,et al.
Implementing Remote procedure calls
,
1983,
SOSP '83.
[2]
Glenford J. Myers,et al.
Composite/structured design
,
1978
.
[3]
D. L. Parnas,et al.
On the criteria to be used in decomposing systems into modules
,
1972,
Software Pioneers.
[4]
Edsger W. Dijkstra,et al.
The structure of the “THE”-multiprogramming system
,
1968,
CACM.
[5]
Stephen N. Zilles,et al.
Programming with abstract data types
,
1974,
SIGPLAN Symposium on Very High Level Languages.
[6]
Harlan D. Mills,et al.
Trace: Tennessee Research and CreativeExchange
,
2022
.
[7]
B. I. Witt.
The Functional Structure of OS/360 Part II: Job and Task Management
,
1966,
IBM Syst. J..
[8]
Stephen N. Zilles,et al.
Programming with abstract data types
,
1974
.
[9]
K. S. Shankar,et al.
A Functional Approach to Module Verification
,
1982,
IEEE Transactions on Software Engineering.
[10]
William A. Clark,et al.
The functional structure of os/360
,
1966
.