An example of stepwise refinement of distributed programs: quiescence detection
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Specification statements and refinements
IBM Journal of Research and Development
The Formal Specification and Design of a Distributed Electronic Funds-Transfer System
IEEE Transactions on Computers
Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
Parallel program design: a foundation
Parallel program design: a foundation
Communications of the ACM
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
Stepwise refinement and concurrency: the finite-state case
Science of Computer Programming
Mixed Programming Metaphors in a Shared Dataspace Model of Concurrency
IEEE Transactions on Software Engineering
Program development by stepwise refinement
Communications of the ACM
A Discipline 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
Reasoning About Synchronic Groups
Research Directions in High-Level Parallel Programming Languages
An Old-Fashioned Recipe for Real Time
Proceedings of the Real-Time: Theory in Practice, REX Workshop
Formal specification and design of a message router
ACM Transactions on Software Engineering and Methodology (TOSEM)
Formal Specification and Design of Mobile Systems
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Visual Presentation of Software Specifications and Designs
IWSSD '96 Proceedings of the 8th International Workshop on Software Specification and Design
Hi-index | 0.00 |
As critical computer systems continue to grow in complexity, the task of showing that they execute correctly becomes more difficult. For this reason, research in software engineering has turned to formal methods, i.e., rigorous approaches to demonstrating the correctness of software systems. Unfortunately, the formal methods currently used in the design of concurrent systems do not provide any mechanisms for specifying and reasoning about the mapping of software to hardware. As a result, architectural constraints, even though they play an important role in the design process, are left out of the formal framework. We show how to state architectural constraints in a formal notation, how to prove that programs are allocated correctly to the underlying architecture, and how to factor architectural considerations into a program derivation process which uses a mixture of specification and program refinements. The approach is illustrated by the derivation of two related programs that solve the same problem but are designed to work on distinct architectures.