Concurrent software systems often have dangerous weaknesses that are almost impossible to uncover by testing or manual quality assurance procedures. This paper describes a toolkit called the Concurrency Workshop that finds such errors. The Workshop has been used to debug real systems, but it is analogous to what an electrical engineer would call a breadboard--a flexible prototype designed for modification rather than use. The paper shows how the Concurrency Workshop spots a nonobvious mistake in a paradigmatic system-- the Alternating Bit Protocol. The paper also has a summary of the theory (the Calculus of Communicating Systems (CCS)) and the implementation using Standard ML. The authors list alternatives, give performance figures, and state limitations. They indicate improvements that will make the toolkit faster and easier to use.
The paper is easy to read. Its worst feature is merely that it makes you want to try out the Workshop without making it possible. I hope that either the current prototype or an improved version will become available via the Internet.