Design, Implementation and Deployment of State Machines Using a Generative Approach

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.

[1]  Jozef Hooman Verification of Distributed Real-Time and Fault-Tolerant Protocols , 1997, AMAST.

[2]  David S. Munro,et al.  Starting with termination: a methodology for building distributed garbage collection algorithms , 2001, Proceedings 24th Australian Computer Science Conference. ACSC 2001.

[3]  Friedemann Mattern,et al.  Algorithms for distributed termination detection , 1987, Distributed Computing.

[4]  Donald E. Eastlake,et al.  US Secure Hash Algorithm 1 (SHA1) , 2001, RFC.

[5]  Margus Veanes,et al.  Generating finite state machines from abstract state machines , 2002, ISSTA '02.

[6]  Sam Toueg,et al.  Unreliable failure detectors for reliable distributed systems , 1996, JACM.

[7]  Marvin Minsky,et al.  Computation : finite and infinite machines , 2016 .

[8]  Ben Y. Zhao,et al.  Towards a Common API for Structured Peer-to-Peer Overlays , 2003, IPTPS.

[9]  Richard C. H. Connor,et al.  START: A Linguistic Reflection Tool Using Hyper-Program Technology , 1994, POS.

[10]  Kwang-Ting Cheng,et al.  Automatic Functional Test Generation Using The Extended Finite State Machine Model , 1993, 30th ACM/IEEE Design Automation Conference.

[11]  David Garlan,et al.  Exploiting style in architectural design environments , 1994, SIGSOFT '94.

[12]  Robert Morris,et al.  Chord: A scalable peer-to-peer lookup service for internet applications , 2001, SIGCOMM 2001.

[13]  Ronald Morrison,et al.  Linguistic reflection in Java , 1998, Softw. Pract. Exp..

[14]  Nicola Dragoni,et al.  An object based algebra for specifying a fault tolerant software architecture , 2005, J. Log. Algebraic Methods Program..

[15]  David R. Karger,et al.  Chord: A scalable peer-to-peer lookup service for internet applications , 2001, SIGCOMM '01.

[16]  Gerard Tel,et al.  The derivation of distributed termination detection algorithms from garbage collection schemes , 1991, TOPL.

[17]  Daniel Brand,et al.  On Communicating Finite-State Machines , 1983, JACM.

[18]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[19]  Alan Dearle,et al.  Safe Browsing in a Strongly Typed Persistent Environment , 1988, Comput. J..

[20]  Leslie Lamport,et al.  The Byzantine Generals Problem , 1982, TOPL.