Model-driven Development of Self-managing Software Systems

The promise of self-management is to increase the dependability of complex software systems and its quality-of-service. However, self-management is a very complex task if implemented manually at code level. It introduces high risks to the system’s maintainability and dependability. Model-driven development of self-management at the architectural level is a promising alternative to manual low-level approaches. This paper outlines a model-driven approach for the model-driven realisation of self-management. The core of the approach are meta-models to specify constraints (based on architectural views), monitoring, and reconfiguration operations. These models can be used to generate selfmanagement consisting of (1.) the monitoring instrumentation, (2.) the runtime model that reflects the current state of the system in causal connection to architectural entities, (3.) the automatic checking of the conformance of the current runtime model to the given constraints, and (4.) the mapping to the reconfiguration operations that are provided by the employed middleware platforms.