Skip to main content
Log in

Specifications of distributed programs

  • Published:
Distributed Computing Aims and scope Submit manuscript

Abstract

This paper discusses informal specifications of distributed programs, that is, programs that reside at nodes connected by a network. Such programs often have performance requirements, such as high availability and concurrency, that make it difficult to specify their behavior. These requirements often have an effect on the functional behavior of a program, forcing designers to change their initial expectations. In this paper we show how to give user-oriented specifications of the functional behavior of programs with such requirements. We propose a structure for specifications that distinguishes expected and desirable effects from undesirable ones. We believe that this distinction is an important one for both users and implementers of a system, and that it makes the specifications easier to understand. We illustrate our approach by giving example specifications of several distributed programs that have been described in the literature.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Bernstein PA, Goodman N (1981) Concurrency control in distributed database systems. ACM Computing Surveys 13:185–221

    Google Scholar 

  • Birrell AD et al. (1982) Grapevine: an exercise in distributed computing. CACM 25:260–274

    Google Scholar 

  • Dijkstra EW (1976) A Discipline of Programming. Prentice-Hall, Englewood Cliffs, NJ

    Google Scholar 

  • Eswaran KP, Gray JN, Lorie RA, Traiger IL (1976) The notions of consistency and predicate locks in a database system. Communications of the ACM 19:624–633

    Google Scholar 

  • Fischer MJ, Michael A (1982) Sacrificing serializability to attain high availability of data in an unreliable network. Proceedings of the Symposium on Principles of Database Systems. ACM, March, 1982

  • Garcia-Molina H (1983) Using semantic knowledge for transaction processing in a distributed database. ACM Transactions on Database Systems 8:186–213

    Google Scholar 

  • Gifford DK (1979) Weighted Voting for Replicated Data. Proceedings of the Seventh Symposium on Operating Systems Principles, ACM SIGOPS, Pacific Grove, CA, December 1979, pp 150–162

  • Guttag J, Horowitz E, Musser D (1978) Abstract data types and software validation. Communications of the ACM 21:1048–1064

    Google Scholar 

  • Herlihy MP (1984) Replication methods for abstract data types. PhD thesis, MIT available as MIT/LCS/TR-319

  • Lamport L (1976) Towards a theory of correctness for multiuser data base systems. Technical Report CA-7610-0712, Massachusetts Computer Associates, October, 1976.

  • Lampson B (1981) Atomic transactions. In: Goos and Hartmanis (eds) Lecture Notes in Computer Science. Vol 105. Distributed Systems: Architecture and Implementation. Springer Berlin Heidelberg New York, pp 246–265

    Google Scholar 

  • Liskov B et al. (1977) Abstraction mechanisms in CLU. CACM 20:564–576

    Google Scholar 

  • Liskov B (1984) Overview of the Argus language and system. Programming Methodology Group Memo 40, MIT Laboratory for Computer Science

  • Liskov B, Berzins V (1976) An appraisal of program specifications. Computation Structures Group Memo 141, MIT Laboratory for Computer Science

  • Liskov B, Scheifler R (1983) Guardians and actions: linguistic support for robust, distributed programs. ACM Transactions on Programming Languages and Systems 5:381–404

    Google Scholar 

  • Liskov B, Zilles SN (1974) Programming with abstract data types. Sigplan Notices Vol 9. Proceedings of the ACM SIG-PLAN Conference on Very High Level Languages, pp 50–59

  • Moss JEB (1981) Nested transactions: an approach to reliable distributed computing. PhD thesis, Massachusetts Institute of Technology Available as Technical Report MIT/LCS/TR-260

  • Owicki S, Lamport L (1982) Proving liveness properties of concurrent programs. ACM Transactions on Programming Languages and Systems 4:455–495

    Google Scholar 

  • Reed DP (1978) Naming and synchronization in a decentralized computer system. PhD thesis, Massachusetts Institute of Technology Available as Technical Report MIT/LCS/TR-205

  • Schwarz P, Spector A (1984) Synchronizing shared abstract types. ACM Transactions on Computer Systems 2:223–250

    Google Scholar 

  • Weihl WE (1984) Specification and implementation of atomic data types. PhD thesis, Massachusetts Institute of Technology Available as Technical Report MIT/LCS/TR-314

  • Weihl W, Liskov B (1985) Implementation of resilient, atomic data types. ACM Transactions on Programming Languages and Systems 7:244–269

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Additional information

Barbara Liskov received the B.A. degree in mathematics from the University of California, Berkeley, and the M.S. and the Ph.D. degrees in computer science from Stanford University, Stanford, California.

From 1968 to 1972, she was associated with the Mitre Corporation, Bedford, MA., where she participated in the design and implementation of the Venus Machine and the Venus Operating System. In 1972, she joined the faculty at Massachusetts Institute of Technology, where she is currently Professor of Computer Science and Engineering. Her research and teaching interests include programming languages, programming methodology and distributed computing. Her work on data abstraction led to the development of the CLU programming language. At present, her research is concerned with distributed computing. She is developing a new programming language called Argus that supports the execution of robust distributed programs that survive hardware failures.

William Weihl received the S.B. degree in mathematics in 1979. the S.B. and S.M. degrees in computer science in 1980, and the Ph.D. degree in computer science in 1984, all from the Massachusetts Institute of Technology, Cambridge.

He is presently Assistant Professor of Computer Science and Engineering at the Massachusetts Institute of Technology. His research interests include distributed systems, programming methodology, programming languages, formal specifications, concurrency control, and faulttolerance.

This research was supported in part by the Advanced Research Projects Agency of the Department of Defense, monitored by the Office of Naval Research under contract N00014-83-K-1025, and in part by the National Science Foundation under grant DCR-8203486

Rights and permissions

Reprints and permissions

About this article

Cite this article

Liskov, B., Weihl, W. Specifications of distributed programs. Distrib Comput 1, 102–118 (1986). https://doi.org/10.1007/BF01786229

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01786229

Key words

Navigation