Abstract
Processes are building blocks for the modeling of environments in which parallel and distributed processing occurs. In parallel programming they play the role of standard units (as do subroutines or procedures in sequential programming). Process communication and synchronization can be achieved either through shared variables (common address space) or by message transmission. It has been shown that the message transmission mechanism leads to a more general computational structure. In this paper we develop the beginnings of a methodology to deal with what we call message oriented programming. We note in passing that the methodology for programming with shared variables is well developed and shows a development leading from operational (automata oriented) constructs (semaphores) to high level programming constructs (critical regions and then monitors). Recent mathematical theories of message oriented programming deal with the subject from an operational point of view. However, the models are too far removed from the control and data structures of programs to guide the designer in constructing a process. To be able to bridge this gap between program specification and program implementation (expressed in the high level language that we use), we resort to a definitional specification technique based on the concept of abstract data type. The specification technique is used in conjunction with some useful design principles to illustrate our ideas via solutions to well-known problems. The two main principles we discuss are: differences (and needs) for definitions of process and message structures in a given application and the concepts of module strength and module coupling as put forward by Myers. Finally, we illustrate how the high level definitional technique leads us to a straightforward method for studying some properties of message oriented programs. We give an example of proving the deadlock freeness of a solution to the consumer and producer problem.
Similar content being viewed by others
References
F. Baskett, J. H. Howard, and J. T. Montague, “Task communication in DEMOS,”Proceedings of the 6th ACM Symposium on O. S. Principles (1977).
P. Brinch Hansen, “The nucleus of an operating system,”Comm. ACM 13:238–241, 250 (April 1970).
P. Brinch Hansen, “A comparison for two synchronizing concepts,”Acta Informatica 1:190–199 (1972).
P. Brinch Hansen, “Structured Multi-Programming,”Comm. ACM 15:574–578 (July 1972).
P. Brinch Hansen,Operating System Principles (Prentice-Hall, Englewood Cliffs, New Jersey, 1973).
R. H. Campbell and A. N. Habermann, “The Specification of Process Synchronization by Path Expression,”Lecture Notes in Computer Science, Vol. 16 (Springer-Verlag, 1974).
T. E. Cheatham, “The recent evolution of programming languages,”IFIP 71, Vol. 1 C. Freiman, Ed., pp. 289–313.
D. R. Cheriton, “Multi-Process Structuring and the Thoth Operating System,” Ph.D. Thesis, University of Waterloo (August 1978).
D. R. Cheriton, M. A. Malcolm, L. S. Melen, and G. R. Sager, “Thoth, A portable real-time operating system,”Comm. ACM 22 (February 1979).
P. J. Courtois, F. Heymans, and D. L. Parnas, “Concurrent control with ‘Readers’ and ‘Writers,’ ”Comm. ACM 14:667–668 (October 1971).
P. R. F. Cunha and T. S. E. Maibaum, “A communications data type for message oriented programming,” presented at the 4ième Colloque International sur la Programmation, Paris (April 1980).
O. J. Dahl, “Hierarchical program structures,” inStructured Programming, by O. J. Dahl, E. W. Dijkstra, C. A. R. Hoare (Academic Press, New York, 1972).
J. B. Dennis, “Modularity,” inAdvanced Course on Software Engineering, F. Bauer, Ed. (Springer-Verlag, 1973).
E. W. Dijkstra, “Cooperating sequential processes,”in Programming Languages, F. Genuys, Ed. (Academic Press, New York, 1968), pp. 43–112.
E. W. Dijkstra, “Notes on structured programming,”in Structured Programming, by O. J. Dahl, E. W. Dijkstra, C. A. R. Hoare (Academic Press, London, 1972).
J. A. Goguen, J. W. Thatcher, E. G. Wagner, and J. F. Wright, “An Initial Algebra Approach to the Specification, Correctness and Implementation of Abstract Data Types,” IBM Research Report RC 6487 (1976).
J. Guttag, “The Specification and Application to Programming of Abstract Data Types,” Ph.D. Thesis, CSRG TR 59, University of Toronto (September 1975).
A. N. Habermann, “On the concurrency of parallel processes,”in Perspectives on Computer Science, A. Jones, Ed. (Academic Press, London, 1977), pp. 77–90.
C. A. R. Hoare, “Towards a theory of parallel programming,” International Seminar on O. S. Techniques, Belfast, Northern Ireland (August–September 1971).
C. A. R. Hoare, “Proof of correctness of data representation,”Acta Informatica 1: 271–281 (1972).
C. A. R. Hoare, “Monitors, an operating system structuring concept,”Comm. ACM 17:549–557 (1974).
C. A. R. Hoare, ”Communicating sequential processes,”Comm. ACM 21:666–677 (August 1978).
A. J. Jammel and H. G. Stiegler, “Managers versus monitors,”Proceedings of the IFIP77, pp. 827–830.
R. M. Keller, “Formal verification of parallel programs,”Comm. ACM 19:371–385 (July 1976).
P. J. Landin, “The mechanical evaluation of expressions,”Computer J. 6 (4):308–320 (1964).
B. H. Liskov and S. Zilles, “Programming with abstract data types,”Proceedings Conference on Very High Level Languages, SIGPLAN, Vol. 9 (April 1974).
B. H. Liskov and S. Zilles, “Specification for data abstractions,”IEEE Transactions on Software Engineering, SE-1 (March 1975).
D. B. MacQueen, ”Models for distributed computing,”Proceedings EEC/IRIA Course on the Design of Distributed Processing, Nice, France (July 1978).
E. G. Manning and R. W. Peebles, “A homogeneous network for data-sharing communications,”Computer Networks 1:211–224 (1977).
G. Milne, “A Mathematical Model of Concurrent Computation,” Ph.D. Thesis, University of Edinburgh, CST-4-78 (March 1978).
G. Milne, “Scheduling within a process model of computation,” 1st European Conference on Parallel and Distributed Processing, Toulouse, France (1979).
G. Milne and R. Milner, “Concurrent processes and their syntax,”J. ACM 26 (2) (April 1979).
G. J. Myers,Composite/Structured Design (Van Nostrand Reinhold Co., 1978).
D. L. Parnas, “Some conclusions from an experiment in software engineering,”Proceedings of the 1972 FJCC.
D. J. Parnas, “A technique for software module specification with examples,”Comm. ACM 15:330–336 (May 1972).
D. J. Parnas, “On the criteria to be used in decomposing systems into modules,”Comm. ACM 15:1053–1058 (December 1972).
H. Vantilborgh and A. van Lawsweerde, “On an extension of Dijkstra's semophore primitives,”Inform. Proc. Letters 1:181–186 (1972).
P. Zave, “On the formal definition of processes,” Conference on Parallel Processing, Wayne State University, IEEE Computer Society (1976).
P. Zave, “A design tool for real-time processes,” Conference on Information Sciences and Systems, Johns Hopkins University (1977).
S. N. Zilles, “Algebraic Specification of Data Types,” Proj. MAC Report 11, Massachusetts Institute of Technology, Cambridge, Massachusetts (1974), pp. 25–28.
Author information
Authors and Affiliations
Additional information
This work was supported by a research grant (to C. J. Lucena) from the J. S. Guggenheim Memorial Foundation and also by the Natural Sciences and Engineering Research Council of Canada.
Rights and permissions
About this article
Cite this article
Cunha, P.R.F., Lucena, C.J. & Maibaum, T.S.E. On the design and specification of message oriented programs. International Journal of Computer and Information Sciences 9, 161–191 (1980). https://doi.org/10.1007/BF00977783
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00977783