An experience report on the verification of autonomic protocols in the cloud

Cloud applications are often complex distributed applications composed of multiple software components running on separate virtual machines. Setting up, (re)configuring, and monitoring these applications are complicated tasks because a software application may depend on several remote software and virtual machine configurations. These management tasks involve many complex protocols, which fully automate these tasks while preserving application consistency as well as some key properties. In this article, we present two experiences we had in formally specifying and verifying such protocols. The first one aims at designing a reconfiguration protocol of a component-based platform, intended as the foundation for building robust dynamic systems. The second aims at automating the configuration task of a set of virtual machines running a set of interconnected software components. Both applications are specified using the LNT process algebra and verified using the CADP verification toolbox. The use of formal specification languages and tools was a success. We conclude with a number of lessons we have learned while working on this topic in the last 3 years.

[1]  César Viho,et al.  System design of a CC-NUMA multiprocessor architecture using formal specification, model-checking, co-simulation, and test generation , 2001, International Journal on Software Tools for Technology Transfer.

[2]  Aaron J. Quigley,et al.  Model Checking for Autonomic Systems Specified with ASSL , 2009, NASA Formal Methods.

[3]  David Garlan,et al.  Specifying and Analyzing Dynamic Software Architectures , 1998, FASE.

[4]  Fabienne Boyer,et al.  Verification of a self-configuration protocol for distributed applications in the cloud , 2012, SAC '12.

[5]  Noel De Palma,et al.  Specification and Verification of a Dynamic Reconfiguration Protocol for Agent-Based Applications , 2001, DAIS.

[6]  Iso Iec Enhancements to LOTOS (E-LOTOS) , 2001 .

[7]  Javier Cubo,et al.  A Formal Framework for Structural Reconfiguration of Components under Behavioural Adaptation , 2010, Electron. Notes Theor. Comput. Sci..

[8]  Borko Furht,et al.  Handbook of Cloud Computing , 2010 .

[9]  Michael Norrish,et al.  seL4: formal verification of an OS kernel , 2009, SOSP '09.

[10]  Radu Mateescu,et al.  CADP 2006: A Toolbox for the Construction and Analysis of Distributed Processes , 2007, CAV.

[11]  Joost-Pieter Katoen,et al.  A Model Checker for AADL , 2010, CAV.

[12]  Dimitra Giannakopoulou,et al.  Behaviour Analysis of Software Architectures , 1999, WICSA.

[13]  Radu Mateescu,et al.  BISIMULATOR: A Modular Tool for On-the-Fly Equivalence Checking , 2005, TACAS.

[14]  Frédéric Lang,et al.  Smart Reduction , 2011, FASE.

[15]  Radu Mateescu,et al.  CADP 2010: A Toolbox for the Construction and Analysis of Distributed Processes , 2011, TACAS.

[16]  Fabienne Boyer,et al.  Specifying and Verifying the SYNERGY Reconfiguration Protocol with LOTOS NT and CADP , 2011, FM.

[17]  Radu Mateescu,et al.  A Model Checking Language for Concurrent Value-Passing Systems , 2008, FM.

[18]  J. Mirkovic,et al.  DADL : Distributed Application Description Language , 2010 .

[19]  Farhad Arbab,et al.  Modeling dynamic reconfigurations in Reo using high-level replacement systems , 2011, Sci. Comput. Program..

[20]  Marie-Claude Gaudel,et al.  Software testing based on formal specifications: a theory and a tool , 1991, Softw. Eng. J..

[21]  Erik P. de Vink,et al.  Formalizing Adaptation On-the-Fly , 2009, FOCLASA.

[22]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[23]  Fabienne Boyer,et al.  Verification of a Self-configuration Protocol for Distributed Applications in the Cloud , 2013, Assurances for Self-Adaptive Systems.

[24]  Ludovic Henrio,et al.  Behavioural models for distributed Fractal components , 2009, Ann. des Télécommunications.

[25]  Fermín Galán Márquez,et al.  Software architecture definition for on-demand cloud provisioning , 2010, HPDC '10.

[26]  Jeff Magee,et al.  Analysing dynamic change in distributed software architectures , 1998, IEE Proc. Softw..

[27]  Michel Wermelinger,et al.  A graph based architectural (Re)configuration language , 2001, ESEC/FSE-9.

[28]  Luc Bellissard,et al.  An agent platform for reliable asynchronous distributed programming , 1999, Proceedings of the 18th IEEE Symposium on Reliable Distributed Systems.

[29]  Mihaela Sighireanu,et al.  A Graphical Parallel Composition Operator for Process Algebras , 1999, FORTE.

[30]  Alistair N. Coles,et al.  The SmartFrog configuration management framework , 2009, OPSR.

[31]  Wendelin Serwe,et al.  Model Checking and Co-simulation of a Dynamic Task Dispatcher Circuit Using CADP , 2011, FMICS.

[32]  Fabienne Boyer,et al.  Self-Configuration of Distributed Applications in the Cloud , 2011, 2011 IEEE 4th International Conference on Cloud Computing.

[33]  Radu Mateescu,et al.  Large-scale Distributed Verification Using CADP: Beyond Clusters to Grids , 2013, Electron. Notes Theor. Comput. Sci..

[34]  Ken Schwaber,et al.  Agile Project Management with Scrum , 1980 .

[35]  Farhad Arbab,et al.  Reo: A Channel-based Coordination Model for Component Composition , 2005 .