Deadlock-Free Message Routing in Multiprocessor Interconnection Networks
IEEE Transactions on Computers
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Formal Specification and Design of a Distributed Electronic Funds-Transfer System
IEEE Transactions on Computers
Parallel program design: a foundation
Parallel program design: a foundation
Acta Informatica
An exercise in the formal derivation of parallel programs: maximum flows in graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stepwise refinement of parallel algorithms
Science of Computer Programming
Mixed Programming Metaphors in a Shared Dataspace Model of Concurrency
IEEE Transactions on Software Engineering
A calculational derivation of the CASOP algorithm
Information Processing Letters
A derivation of a serial-parallel multiplier
Science of Computer Programming
The Science of Programming
A Discipline of Programming
A Method of Programming
A UNITY-Style Programming Logic for Shared Dataspace Programs
IEEE Transactions on Parallel and Distributed Systems
Formal Derivation of Rule-Based Programs
IEEE Transactions on Software Engineering
Formal Derivation of Concurrent Programs: An Example from Industry
IEEE Transactions on Software Engineering
Architecture-Directed Refinement
IEEE Transactions on Software Engineering
Reasoning About Synchronic Groups
Research Directions in High-Level Parallel Programming Languages
High-Level Design of an Asynchronous Packet-Routing Chip
Proceedings of the Second IFIP WG10.2/WG10.5 Workshop on Designing Correct Circuits
Modeling deflection networks: design and specification
Proceedings of the 1999 ACM symposium on Applied computing
Refining Interactions in a Distributed System
FAABS '00 Proceedings of the First International Workshop on Formal Approaches to Agent-Based Systems-Revised Papers
Visual Presentation of Software Specifications and Designs
IWSSD '96 Proceedings of the 8th International Workshop on Software Specification and Design
Hi-index | 0.00 |
Formal derivation refers to a family of design techniques that entail the development of programs which are guaranteed to be correct by construction. Only limited industrial use of such techniques (e.g., UNITY-style specification refinement) has been reported in the literature, and there is a great need for methodological developments aimed at facilitating their application to complex problems. This article examines the formal specification and design of a message router in an attempt to identify those methodological elements that are likely to contribute to successful industrial uses of program derivation. Although the message router cannot be characterized as being industrial grade, it is a sophisticated problem that poses significant specification and design challenges—its apparent simplicity is rather deceiving. The main body of the article consists of a complete formal specification of the router and a series of successive refinements that eventually lead to an immediate construction of a correct UNITY program. Each refinement is accompanied by its design rationale and is explained in a manner accessible to a broad audience. We use this example to make the case that program derivation provides a good basis for introducing rigor in the design strategy, regardless of the degrees of formality one is willing to consider.