Model-driven and aspect-oriented engineering of configurations
There are many challenges of complexity connected to adaptation. To manage this complexity, DiVA uses a model-driven approach. A common acknowledgment within the software engineering field is the value of abstraction through modelling. The software development methodologies used by industry today all use models in some way or another. The Rational Unified Process (RUP) defines a model as a simplification of reality that completely describes a system from a particular viewpoint or perspective. The Model Driven Architecture (MDA) separates the application design into three stages. The Platform Independent Model (PIM) captures the high-level concepts of an application. A Platform Specific Model (PSM) is derived from the PIM by a transformation. The PSM describes the design of the application that is targeted for a special platform. At the third stage the source code required to implement the application is generated. The generation of source code can be automated to a large extend.
A model helps us master a large, complex system that cannot be comprehended easily in its entirety. A model-driven approach in DiVA implies:
-
The use of models as first-class entities throughout the system lifecycle, both at analysis, design, and runtime.
-
Different levels of model abstractions and transformations between these levels.
A key benefit is that models can be used to provide a richer semantic base for runtime decision-making related to system adaptation and other runtime concerns.
In DiVA, variability dimensions are crosscutting concerns (for example QoS concerns), modelled as aspects. By separating the functional and adaptation concerns in models, DiVA reduces the complexity of developing adaptive systems. At runtime, different aspects are woven into the Base model to create system variants using state-of-the-art MDE and aspect-oriented model composition techniques.
The adaptation model can be seen as a reflection on what is going on at the execution level (running system), with an introspection capability, which gets its information through the adaptation sensors, as well as an intersession part, which can act on the running system through adaptation actuators. Both the adaptation layer and the interface to the system are modelled in an operational way at design time. In the MDE spirit, these models can then be used to carry out both validation and code generation activities.
A first prototype combining Aspect-Oriented Modeling and Model-Driven Engineering techniques for managing dynamic variability has been demonstrated at the Models@Run.time'08 workshop (See MoDELS'08 and Models@Run.time'08 papers below).
Model transformation in the DiVA context is:
-
Transformation from the requirements and dependability specifications to the adaptation layer, which boils down to breathing life into the adaptation layer model so that it exists at runtime (e.g., it is interpreted by an embedded model interpreter).
-
Generation of adaptation wrappers around the running system, whose goal is to link the adaptation sensors and actuators as seen by the adaptation layer to concrete, platform dependant feature of the base application.
In addition, validation and verification of a system adaptation is done at the model level. This allows for easy prototyping and testing, making sure that the system maintains its dependability constraints while adapting in an environment of co-existing and co-dependent configurations.