It can be remarkably hard to design a good communications protocol, much harder even than it is to write a normal 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 tutorial we introduce a state-of-the-art tool called SPIN and a specification language called PROMELA, and we show how these can be used to design reliable protocols.
[1]
Gerard J. Holzmann,et al.
Design and validation of computer protocols
,
1991
.
[2]
Gerard J. Holzmann,et al.
Process Sleep and Wakeup on a Shared-memory Multiprocessor
,
1991
.
[3]
Michel Raynal,et al.
Algorithms for mutual exclusion
,
1986
.
[4]
Keith A. Bartlett,et al.
A note on reliable full-duplex transmission over half-duplex links
,
1969,
Commun. ACM.
[5]
Gerard J. Holzmann,et al.
Validating SDL Specifications: an Experiment
,
1989,
PSTV.
[6]
C. A. R. Hoare,et al.
Communicating Sequential Processes (Reprint)
,
1983,
Commun. ACM.
[7]
Gary L. Peterson,et al.
Myths About the Mutual Exclusion Problem
,
1981,
Inf. Process. Lett..
[8]
Edsger W. Dijkstra,et al.
Guarded commands, nondeterminacy and formal derivation of programs
,
1975,
Commun. ACM.
[9]
L. Schwartz.
Feedback for Error Control and Two-Way Communication
,
1963
.
[10]
Z. Manna,et al.
Tools and rules for the practicing verifier
,
1990
.