Design and validation of protocols: a tutorial

https://doi.org/10.1016/0169-7552(93)90095-LGet rights and content

Abstract

It can be remarkably hard to design a good communications protocol, much harder than it is to write a sequential program. Unfortunately, when the design of a new protocol is complete, we usually have little trouble convincing ourselves that it is trivially correct. It can be a unreasonably hard to prove those facts formally and to convince also others. Faced with that dilemma, a designer usually decides to trust his or her instincts and forgo the formal proofs. The subtle logical flaws in a design thus get a chance to hide, and inevitably find the worst possible moment in the lifetime of the protocol to reveal themselves. Though few will admit it, most people design protocols by trial and error. There is a known set of trusted protocol standards, whose descriptions are faithfully copied in most textbooks, but there is little understanding of why some designs are correct and why others are not. To design and to analyze protocols you need tools. Until recently the right tools were simply not generally available. But that has changed. In this tuturial we introduce a state-of-the-art tool called SPIN and the specification language PROMELA. We show how the language and the tool can be used to design reliable protocols. The tool itself is available by anonymous ftp from research.att.com, or by email from the author.

References (16)

  • G.L. Peterson

    Myths about the mutual exclusion problem

  • K.A. Bartlett et al.

    A note on reliable full-duplex transmission over half-duplex lines

    Comm. ACM

    (1969)
  • G. Berthelot et al.

    Petri net theory for the correctness of protocols

    IEEE Trans. Comm.

    (1982)
  • E.W. Dijkstra

    Solution to a problem in concurrent programming control

    Comm. ACM

    (1965)
  • E.W. Dijkstra

    Guarded commands, nondeterminacy and formal derivation of programs

    Comm. ACM

    (1975)
  • B.B. Glade

    A temporal logic to Promela “never clause” converter

  • C.A.R. Hoare

    Communicating sequential processes

    Comm. ACM

    (1978)
  • G.J. Holzmann et al.

    Validating SDL specifications: an experiment

There are more references available in the full text version of this article.

Cited by (53)

View all citing articles on Scopus
View full text