Adaptation Consistency via Code Analysis (Savasana*)

Savasana is the first white-box approach that uses code analysis for reasoning about consistency of adaptation.

Approach Overview

Savasana consists of two parts: Static Code Analysis runs on the system's code and Run-time Control manages the corresponding running system.

Source Code

We realized Savasana's code analysis capabilities on top of Soot. Soot is a Java optimization framework, which can also be used for static analysis. We used Soot for the implementation of Dependency Extractor and Model Analyzer. 

We implemented Savasana's runtime control capabilities on top of the Spring framework. For implementing
the Monitor component, we used Spring's extensive support for aspect-oriented programming, and for the Adapter component, we relied on Spring's dynamic (re)con.figuration facilities.

Savasana project source code is available here


We examine Savasana's behavior by measuring two properties:

  1. Reachability: the amount of time it takes for fulfilling the adaptation request.
  2. Disruption: the amount of time that application threads are suspended for adaptation.

There are two factors that impact these properties:

  1. The internal structure of root transactions (i.e., scenarios).
  2. The level of concurrency in the system.

The experiments are conducted on a software system called Emergency Deployment System (EDS), which is intended for the deployment and management of personnel in emergency response scenarios.

We applied Savasana in three scenarios, each one is adopted from one of EDS's main tasks, namely: Strategy Analysis, Deployment Advising, and Resource Estimation. Inter-component dependency of these scenarios are depicted in the following figure.


 Strategy Analysis Sample Scenario
Deployment Advising Sample Scenario  Resource Estimation Sample Scenario

The evaluation results are available here.

* A yoga pose in which the body is completely relaxed.