Safe browsing in a strongly typed persistent environment
The Computer Journal
The derivation of distributed termination detection algorithms from garbage collection schemes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic functional test generation using the extended finite state machine model
DAC '93 Proceedings of the 30th international Design Automation Conference
Exploiting style in architectural design environments
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Unreliable failure detectors for reliable distributed systems
Journal of the ACM (JACM)
Software—Practice & Experience
On Communicating Finite-State Machines
Journal of the ACM (JACM)
A Classification and Comparison Framework for Software Architecture Description Languages
IEEE Transactions on Software Engineering
The Byzantine Generals Problem
ACM Transactions on Programming Languages and Systems (TOPLAS)
Chord: A scalable peer-to-peer lookup service for internet applications
Proceedings of the 2001 conference on Applications, technologies, architectures, and protocols for computer communications
Starting with termination: a methodology for building distributed garbage collection algorithms
ACSC '01 Proceedings of the 24th Australasian conference on Computer science
Generating finite state machines from abstract state machines
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Verification of Distributed Real-Time and Fault-Tolerant Protocols
AMAST '97 Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology
START: A Linguistic Reflection Tool Using Hyper-Program Technology
Proceedings of the Sixth International Workshop on Persistent Object Systems
Computation: finite and infinite machines
Computation: finite and infinite machines
Hi-index | 0.00 |
We describe an approach to designing and implementing a distributed system as a family of related finite state machines, generated from a single abstract model. Various artefacts are generated from each state machine, including diagrams, source-level protocol implementations and documentation. The state machine family formalises the interactions between the components of the distributed system, allowing increased confidence in correctness. Our methodology facilitates the application of state machines to problems for which they would not otherwise be suitable.We illustrate the technique with the example of a Byzantine-fault-tolerant commit protocol used in a distributed storage system, showing how an abstract model can be defined in terms of an abstract state space and various categories of state transitions. We describe how such an abstract model can be deployed in a concrete system, and propose a general methodology for developing systems in this style.