MIDAS is a model based framework that enables autonomic behavior in Dynamic Adaptive Systems (DAS). This framework is built upon a system reconfiguration engine based that applies the control loop strategy to monitorize the system state and context, and it allows to take proactive decisions to adapt and reconfigure itself. A DAS can be adapted at run time by reconfiguring the system functionality due to changes in the context. By using MIDAS, this adaptation can be achieved autonomously, allowing the system to ‘evolve’ from one configuration to another by itself.
MIDAS applies the Models at Run-Time techniques to achieve the adaptation. Those techniques allow using the same models that are built on the analysis and design phases of system development. Those models are used at run-time for reasoning and applying, among others, adaptation strategies. The MIDAS Engine takes as input Dynamic Software Product Line descriptions as models to describe the variants (and so the possible adaptation). This engine is responsible for translating context changes into changes in the activation/deactivation of modules, software components or services that are represented as features in an abstract way. Then, those changes are translated into several actions that modify the system components accordingly.
The MIDAS Engine is made up of 4 main components:
– The Context Monitor. It detects the relevant context changes and invokes the Adaptation Analyzer.
– The Adaptation Analyzer. Takes as input context changes, feature models and resolution models. This component is responsible for deciding which adaptation is required according to the context change, and the current system configuration. As a result, this component obtain new versions of the feature and resolution models. Those models fulfill the new requirements arised by the context changes. This component is also responsible of deciding which is the best adaptation among all of the possible, to satisfy the new requirements.
– The Adaptation Planner. This component takes as input the new versions of the models built by the adaptation analyzer, and it compare those models with its previous versions. As a result, it define a set of system architectural modifications by activating/deactivating a set of characteristics (from the feature model).
– The Adaptation Executor. This component takes as input the architectural modifications report, and it convert those modifications into a set of concrete technological operations in which the system is implemented. The main goal of this component is to materialize the adaptation, and to setup the system in a new configuration that satisfies the current context where the system is running.
Both the framework and the adaptation engine have been implemented using Java/OSGi, and they use the Eclipse/MDT (Modelling Development Tools), such as EMF, ATL and XPAND2 to manipulate and transform the models.