Development methods for (sequential) programs that run in isolation have been studied elsewhere. Programs that run in parallel can interfere with each other, either via shared storage or by sending messages. Extensions to earlier development methods are proposed for the rigorous development of interfering programs. In particular, extensions to the… (More)
Companion papers give examples of the development of concurrent programs using a design notation which employs a number of concepts from object-oriented programming languages. This paper documents the semantics of the design language by providing a mapping to the pi-calculus.
Various forms of rely/guarantee conditions have been used to record and reason about interference in ways that provide compositional development methods for concurrent programs. This paper illustrates such a set of rules and proves their soundness. The underlying concurrent language allows fine-grained interleaving and nested concurrency; it is defined by… (More)
The aim of this paper is to make a contribution to (compositional) development methods for concurrent programs. In particular, it takes a fresh look at a number of familiar ideas including the problem of interference. Some subtle issues of observ-ability –including granularity– are explored. Based on these points, the paper sets out some requirements for an… (More)
Well understood methods exist for developing programs from formal specifications. Not only do such methods offer a precise check that certain sorts of deviations from their specifications are absent from implementations but they can also increase the productivity of the development process by careful use of layers of abstraction and refinement in design.… (More)