Separating Structure from Function in the Specification and Design of Distributed Systems
A distributed system is viewed as a collection of functional components and a unifying structure that defines relationships among the conponents. In the paper, we advocate a particular approach to distributed system specification and design in which the structure of a distributed system is specified separately from the functional components. This permits one to reason about individual functional components in isolation, and encourages one to make explicit not only the input/output behavior of the functional components but also the logical placement of these components within the overall structure of the system. We describe a new software tool for the specification, design, and simulation of distributed systems that supports this separation of structure and function. The tool, called the Spectrum Simulation System, is based on the I/O automation model of Lynch and Tuttle with extensions for shared memory, superposition, and dynamic process creation. Spectrum consists of a programming language for describing functional components of distributed systems, a configuration mechanism for specifying system structures, and software for simulating the executions of the specified systems, Functional components, described as I/O automats, may be parameterized by the configuation defined separately. This separation gives rise to remarkable versatilty in specifications and design.