RINGA: Design and verification of finite state machine for self-adaptive software at runtime

Abstract Context In recent years, software environments such as the cloud and Internet of Things (IoT) have become increasingly sophisticated, and as a result, development of adaptable software has become very important. Self-adaptive software is appropriate for today's needs because it changes its behavior or structure in response to a changing environment at runtime. To adapt to changing environments, runtime verification is an important requirement, and research that integrates traditional verification with self-adaptive software is in high demand. Objective Model checking is an effective static verification method for software, but existing problems at runtime remain unresolved. In this paper, we propose a self-adaptive software framework that applies model checking to software to enable verification at runtime. Method The proposed framework consists of two parts: the design of self-adaptive software using a finite state machine and the adaptation of the software during runtime. For the first part, we propose two finite state machines for self-adaptive software called the self-adaptive finite state machine (SA-FSM) and abstracted finite state machine (A-FSM). For the runtime verification part, a self-adaptation process based on a MAPE (monitoring, analyzing, planning, and executing) loop is implemented. Results We performed an empirical evaluation with several model-checking tools (i.e., NuSMV and CadenceSMV), and the results show that the proposed method is more efficient at runtime. We also investigated a simple example application in six scenarios related to the IoT environment. We implemented Android and Arduino applications, and the results show the practical usability of the proposed self-adaptive framework at runtime. Conclusions We proposed a framework for integrating model checking with a self-adaptive software lifecycle. The results of our experiments showed that the proposed framework can achieve verify self-adaptation software at runtime.

[1]  Betty H. C. Cheng,et al.  Towards run-time adaptation of test cases for self-adaptive systems in the face of uncertainty , 2014, SEAMS 2014.

[2]  Fausto Giunchiglia,et al.  NUSMV: A New Symbolic Model Verifier , 1999, CAV.

[3]  David Garlan,et al.  Rainbow: architecture-based self-adaptation with reusable infrastructure , 2004 .

[4]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[5]  Hausi A. Müller,et al.  Autonomic Computing Now You See It, Now You Don't , 2008, ISSSE.

[6]  Bradley R. Schmerl,et al.  Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure , 2004, Computer.

[7]  Christel Baier,et al.  Principles of model checking , 2008 .

[8]  Sebastián Uchitel,et al.  Synthesis of live behaviour models for fallible domains , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[9]  Yuriy Brun,et al.  Traffic routing for evaluating self-adaptation , 2012, 2012 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[10]  Franco Zambonelli,et al.  Model Checking Goal-Oriented Requirements for Self-Adaptive Systems , 2012, 2012 IEEE 19th International Conference and Workshops on Engineering of Computer-Based Systems.

[11]  Nicola Paoletti,et al.  Multiple Levels in Self-adaptive Complex Systems: A State-Based Approach , 2013 .

[12]  Radu Calinescu,et al.  An incremental verification framework for component-based software systems , 2013, CBSE '13.

[13]  Marco Pistore,et al.  NuSMV 2: An OpenSource Tool for Symbolic Model Checking , 2002, CAV.

[14]  Marin Litoiu,et al.  Hogna: A Platform for Self-Adaptive Applications in Cloud Environments , 2015, 2015 IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems.

[15]  John Mylopoulos,et al.  Self-Repair through Reconfiguration: A Requirements Engineering Approach , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[16]  Daniela E. Damian,et al.  ACon: A learning-based approach to deal with uncertainty in contextual requirements at runtime , 2016, Inf. Softw. Technol..

[17]  Carlo Ghezzi,et al.  Supporting Self-Adaptation via Quantitative Verification and Sensitivity Analysis at Run Time , 2016, IEEE Transactions on Software Engineering.

[18]  Vítor Estêvão Silva Souza,et al.  Engineering adaptation with Zanshin: An experience report , 2013, 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[19]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[20]  Sebastián Uchitel,et al.  Synthesis of live behaviour models , 2010, FSE '10.

[21]  Rogério de Lemos,et al.  Evaluation of resilience in self-adaptive systems using probabilistic model-checking , 2012, 2012 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[22]  Martin Leucker,et al.  A brief account of runtime verification , 2009, J. Log. Algebraic Methods Program..

[23]  Giordano Tamburrelli,et al.  Probabilistic Verification at Runtime for Self-Adaptive Systems , 2013, Assurances for Self-Adaptive Systems.

[24]  Carlo Ghezzi,et al.  Self-adaptive software needs quantitative verification at runtime , 2012, CACM.

[25]  Carlo Ghezzi,et al.  Run-time efficient probabilistic model checking , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[26]  Ladan Tahvildari,et al.  Self-adaptive software: Landscape and research challenges , 2009, TAAS.

[27]  Jian Lu,et al.  Verifying self-adaptive applications suffering uncertainty , 2014, ASE.

[28]  Bradley R. Schmerl,et al.  Software Engineering for Self-Adaptive Systems: A Second Research Roadmap , 2010, Software Engineering for Self-Adaptive Systems.

[29]  Danny Weyns,et al.  Tele Assistance: A Self-Adaptive Service-Based System Exemplar , 2015, 2015 IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems.