Skip to main content

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

  • Chapter
Architecting Dependable Systems V

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5135))

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Minsky, L.M.: Computation: Finite and Infinite Machines. Prentice Hall, Englewood Cliffs (1967)

    MATH  Google Scholar 

  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. 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)

    Article  Google Scholar 

  4. Kirby, G.N.C., Dearle, A., Norcross, S.J., Tauber, M., Morrison, R.: Secure Location-Independent Storage Architectures (ASA) (2004), http://asa.cs.standrews.ac.uk/

  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)

    Chapter  Google Scholar 

  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. Lamport, L., Shostak, R., Pease, M.: The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems 4(3), 382–401 (1982)

    Article  MATH  Google Scholar 

  8. Eastlake, D., Jones, P.: RFC 3174 - US Secure Hash Algorithm 1 (SHA1) (2001), http://www.faqs.org/rfcs/rfc3174.html

  9. Borland: Borland Together (2007), http://www.borland.com/us/products/together/

  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. Dearle, A., Brown, A.L.: Safe Browsing in a Strongly Typed Persistent Environment. Computer Journal 31(6), 540–544 (1988)

    Article  Google Scholar 

  12. Kirby, G.N.C., Morrison, R., Stemple, D.W.: Linguistic Reflection in Java. Software - Practice & Experience 28(10), 1045–1077 (1998)

    Article  Google Scholar 

  13. Kirby, G.N.C.: Dynamic Java Compiler (2005), http://www-systems.cs.st-andrews.ac.uk/wiki/Dynamic_Java_Compiler

  14. Sun Microsystems: JavaCompiler Interface (2007), http://java.sun.com/javase/6/docs/api/javax/tools/JavaCompiler.html

  15. Chandra, T., Toueg, S.: Unreliable Failure Detectors for Reliable Distributed Systems. Journal of the ACM 43(1), 225–267 (1996)

    Article  MathSciNet  MATH  Google Scholar 

  16. Mattern, F.: Algorithms for Distributed Termination Detection. Distributed Computing 2(3), 161–175 (1987)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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. Brand, D., Zafiropulo, P.: On Communicating Finite-State Machines. Journal of the ACM 30(2), 323–342 (1983)

    Article  MathSciNet  MATH  Google Scholar 

  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. 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)

    Article  Google Scholar 

  22. Hooman, J.: Verification of Distributed Real-Time and Fault-Tolerant Protocols. In: Johnson, M. (ed.) AMAST 1997. LNCS, vol. 1349. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  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)

    Article  MathSciNet  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Rogério de Lemos Felicita Di Giandomenico Cristina Gacek Henry Muccini Marlon Vieira

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Kirby, G.N.C., Dearle, A., Norcross, S.J. (2008). Design, Implementation and Deployment of State Machines Using a Generative Approach. In: de Lemos, R., Di Giandomenico, F., Gacek, C., Muccini, H., Vieira, M. (eds) Architecting Dependable Systems V. Lecture Notes in Computer Science, vol 5135. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-85571-2_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-85571-2_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-85570-5

  • Online ISBN: 978-3-540-85571-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics