Model-based Reconfiguration Engine (MoRE)

Autonomic Computing through the Reuse of Variability Models at Run-Time. With more and more devices being added to our surroundings, simplicity becomes highly appreciated by users. Autonomic Computing plays a key role in simplifying the use of systems by reducing the need for maintenance. A system with autonomic capabilities is in charge of installing, configuring, tuning, and maintaining itself.
Our research shows that Smart Homes can also achieve Autonomic Capabilities. Our research also demonstrates that this Autonomic Behaviour can be achieved through the Reuse of Variability Models at Run-Time. Applying our approach, we have achieved the following autonomic capabilities in Smart Homes:

Self-configuring: New kinds of devices can be incorporated to the system. For example, when a new presence sensor is added to a home location, the different smart home services such as security or lighting control should automatically make use of it without requiring configuration actions from the user.
Self-healing: When a device is removed or fails, the system should adapt itself in order to offer its services in an alternative way to reduce the impact of the device loss. For example, if an alarm fails, the Smart Home can make the lights blink as a replacement for the failed alarm.
Self-adapting: User needs are different for each user at any given moment. The system should adjust its services in order to fulfill user preferences. For example, when a user leaves home, services in the home should be reorganized to give priority to security.

To meet the challenge of Autonomic Homes our approach is based on Variability Modelling and Dynamic Product Line Architectures. Our work is strongly influence by the ideas of Model Driven Engineering and Software Product Lines. The above figure depicts the main building blocks of our approach.
         To enable Autonomic Capabilities, the system must evolve from one configuration to another. Since the reconfiguration in our approach is performed in terms of features, a Model-based Reconfiguration Engine (MoRE) is provided to translate context changes into changes in the activation/deactivation of features. Then, these changes are translated into the reconfiguration actions that modify the system components accordingly.

The overall reconfiguration steps are outlined in the left Figure. The Context Monitor uses the run-time state as input to check context conditions (step 1). If any of these conditions are fulfilled (e.g., home becomes empty), then MoRE uses model operations to query the run-time models about the necessary modifications to the architecture (step 2). The response of the models is used by the engine to elaborate a Reconfiguration Plan (step 3). This plan contains a set of Reconfiguration Actions, which modify the system architecture and maintain the consistency between the models and the architecture (step 4). The execution of this plan modifies the architecture in order to activate/deactivate the features specified in the resolution (step 5).

The reconfiguration of the system is performed by executing reconfiguration actions that deal with the activation/deactivation of components, the creation and destruction of channels among components and the update of models accordingly to keep them in sync with the system state. MoRE makes use of the OSGi framework for implementing the reconfiguration actions. This Framework implements a complete components model that extends the dynamic capabilities of Java.

End-user participation.
In our experimentation, we use RFID cards to set the context of the Autonomic Home.
Varibility Modelling.
Our reconfiguration Engine is driven by Variability Models. So far, MoRE supports both Feature Models and CVL.
Smart Homes Technologies.
We have successfully validated the approach by means of different technologies such as KNX-European Instabus devices.
Ontology for context modelling.
We use an ontology-based context model that leverages Semantic Web technology and OWL (Web Ontology Language).
High-Quality Flash   Low-Quality YouTube    High-Quality Flash    Low-Quality YouTube    High-Quality Flash    Low-Quality YouTube    High-Quality Flash   Low-Quality YouTube