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

  • Graham N. C. Kirby
  • Alan Dearle
  • Stuart J. Norcross
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5135)


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.


State Machine Abstract Model Replication Factor Faulty Node Abstract State Machine 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Minsky, L.M.: Computation: Finite and Infinite Machines. Prentice Hall, Englewood Cliffs (1967)zbMATHGoogle Scholar
  2. 2.
    Cheng, K.T., Krishnakumar, A.S.: Automatic Functional Test Generation using the Extended Finite State Machine Model. In: 30th Design Automation Conference, Dallas, Texas, pp. 86–91. ACM, New York (1993)Google Scholar
  3. 3.
    Grieskamp, W., Gurevich, Y., Schulte, W., Veanes, M.: Generating Finite State Machines from Abstract State Machines. ACM SIGSOFT Software Engineering Notes 27(4), 112–122 (2002)CrossRefGoogle Scholar
  4. 4.
    Kirby, G.N.C., Dearle, A., Norcross, S.J., Tauber, M., Morrison, R.: Secure Location-Independent Storage Architectures (ASA) (2004),
  5. 5.
    Dabek, F., Zhao, B.Y., Druschel, P., Kubiatowicz, J., Stoica, I.: Towards a Common API for Structured Peer-to-Peer Overlays. In: Kaashoek, M.F., Stoica, I. (eds.) IPTPS 2003. LNCS, vol. 2735. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  6. 6.
    Stoica, I., Morris, R., Karger, D., Kaashoek, F., Balakrishnan, H.: Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications. In: ACM SIGCOMM 2001, San Diego, CA, USA, pp. 149–160 (2001)Google Scholar
  7. 7.
    Lamport, L., Shostak, R., Pease, M.: The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems 4(3), 382–401 (1982)CrossRefzbMATHGoogle Scholar
  8. 8.
    Eastlake, D., Jones, P.: RFC 3174 - US Secure Hash Algorithm 1 (SHA1) (2001),
  9. 9.
    Borland: Borland Together (2007),
  10. 10.
    Kirby, G.N.C., Connor, R.C.H., Morrison, R.: START: A Linguistic Reflection Tool using Hyper-Program Technology. In: Persistent Object Systems: 6th International Workshop on Persistent Object Systems (POS6), Tarascon, France. Workshops in Computing, pp. 355–373. Springer, Heidelberg (1994)Google Scholar
  11. 11.
    Dearle, A., Brown, A.L.: Safe Browsing in a Strongly Typed Persistent Environment. Computer Journal 31(6), 540–544 (1988)CrossRefGoogle Scholar
  12. 12.
    Kirby, G.N.C., Morrison, R., Stemple, D.W.: Linguistic Reflection in Java. Software - Practice & Experience 28(10), 1045–1077 (1998)CrossRefGoogle Scholar
  13. 13.
    Kirby, G.N.C.: Dynamic Java Compiler (2005),
  14. 14.
    Sun Microsystems: JavaCompiler Interface (2007),
  15. 15.
    Chandra, T., Toueg, S.: Unreliable Failure Detectors for Reliable Distributed Systems. Journal of the ACM 43(1), 225–267 (1996)MathSciNetCrossRefzbMATHGoogle Scholar
  16. 16.
    Mattern, F.: Algorithms for Distributed Termination Detection. Distributed Computing 2(3), 161–175 (1987)CrossRefGoogle Scholar
  17. 17.
    Tel, G., Mattern, F.: The Derivation of Distributed Termination Detection Algorithms from Garbage Collection Schemes. ACM Transactions on Programming Languages and Systems 15(1), 1–35 (1993)CrossRefGoogle Scholar
  18. 18.
    Blackburn, S.M., Hudson, R.L., Morrison, R., Moss, J.E.B., Munro, D.S., Zigman, J.N.: Starting with Termination: A Methodology for Building Distributed Garbage Collection Algorithms. In: 24th Australasian Computer Science Conference (ACSC 2001), Gold Coast, Queensland, pp. 20–28 (2001)Google Scholar
  19. 19.
    Brand, D., Zafiropulo, P.: On Communicating Finite-State Machines. Journal of the ACM 30(2), 323–342 (1983)MathSciNetCrossRefzbMATHGoogle Scholar
  20. 20.
    Garlan, D., Allen, R.J., Ockerbloom, J.: Exploiting Style in Architectural Design Environments. In: 2nd ACM SIGSOFT Symposium on Foundations of Software Engineering, New Orleans, Louisiana, USA, pp. 175–188 (1994)Google Scholar
  21. 21.
    Medvidovic, N., Taylor, R.N.: A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Transactions on Software Engineering 26(1), 70–93 (2000)CrossRefGoogle Scholar
  22. 22.
    Hooman, J.: Verification of Distributed Real-Time and Fault-Tolerant Protocols. In: Johnson, M. (ed.) AMAST 1997. LNCS, vol. 1349. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  23. 23.
    Dragoni, N., Gaspari, M.: An Object Based Algebra for Specifying a Fault Tolerant Software Architecture. Journal of Logic and Algebraic Programming 63, 271–297 (2005)MathSciNetCrossRefzbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Graham N. C. Kirby
    • 1
  • Alan Dearle
    • 1
  • Stuart J. Norcross
    • 1
  1. 1.School of Computer ScienceUniversity of St AndrewsNorth HaughScotland

Personalised recommendations