Runtime adaptability is often a crucial requirement for today's complex software systems. Several approaches use an architectural model as a runtime representation of a managed system for monitoring, reasoning and performing adaptation. To ease the causal connection between a system and a model, these models are often closely related to the implementation and at a rather low level of abstraction. This makes them as complex as the implementation and it impedes reusability and extensibility of autonomic managers. Moreover, the models often do not cover different concerns, like security or performance, and therefore they do not support several self-management capabilities at once. In this paper we propose a model-driven approach that provides multiple architectural runtime models at different levels of abstraction as a basis for adaptation. Each runtime model abstracts from the underlying system and platform leveraging reusability and extensibility of managers that work on these models. Moreover, each model focuses on a specific concern which simplifies the work of autonomic managers. The different models are maintained automatically at runtime using model-driven engineering techniques that also reduce development efforts. Our approach has been implemented for the broadly adopted Enterprise Java Beans component standard and its application is presented in a self-healing scenario requiring structural adaptation.
The model of @cite_27 is as complex as the managed system since it is a one-to-one mapping between model elements and implementation classes. More abstract models are not provided though they theoretically consider hierarchies of models in @cite_8 . Thus, their model can be compared to our complex source model. Using the framework of @cite_15 , it might be possible to simultaneously employ several runtime models at different levels of abstraction or for different concerns, which mainly depends on how the user tailors the framework. However, both case studies presented by use one model to cover one or more concerns. Likewise, @cite_20 apply model-based adaptation using one architectural model, but they focus on performance management such that their model does not describe any other concern in addition to performance. All these approaches @cite_20 @cite_15 @cite_27 use some form of architecture description languages and do not apply MDE techniques that can yield to benefits for runtime adaptation @cite_19 .
@cite_8 @cite_19 @cite_27 @cite_15 @cite_20
2144244174 2134716336 2482678392 2078015604
Our ICSE 1998 paper showed how an application can be adapted at runtime by manipulating its architectural model. In particular, our paper demonstrated the beneficial role of (1) software connectors in aiding runtime change, (2) an explicit architectural model fielded with the system and used as the basis for runtime change, and (3) architectural style in providing both structural and behavioral constraints over runtime change. This paper examines runtime evolution in the decade hence. A broad framework for studying and describing evolution is introduced that serves to unify the wide range of work now found in the field of dynamic software adaptation. This paper also looks to the future, identifying what we believe to be highly promising directions. Continuous availability is a critical requirement for an important class of software systems. For these systems, runtime system evolution can mitigate the costs and risks associated with shutting down and restarting the system for an update. We present an architecture-based approach to runtime software evolution and highlight the role of software connectors in supporting runtime change. An initial implementation of a tool suite for supporting the runtime modification of software architectures, called ArchStudio, is presented. While attractive in principle, architecture-based self-adaptation raises a number of research and engineering challenges. First, the ability to handle a wide variety of systems must be addressed. Second, the need to reduce costs in adding external control to a system must be addressed. Our rainbow framework attempts to address both problems. By adopting an architecture-based approach, it provides reusable infrastructure together with mechanisms for specializing that infrastructure to the needs of specific systems. The specialization mechanisms let the developer of self-adaptation capabilities choose what aspects of the system to model and monitor, what conditions should trigger adaptation, and how to adapt the system. Recently, growing attention focused on run-time management of Quality of Service (QoS) of complex software systems. In this context, system reconfiguration is considered a useful technique to manage QoS. Several reconfiguration approaches to performance management exist that help systems to maintain performance requirements at run time. However, many of them use prefixed strategies that are in general coded in the application or in the reconfiguration framework.In this work we propose a framework to manage performance of software systems at run time based on monitoring and model-based performance evaluation. The approach makes use of software architectures as abstractions of the managed system to avoid unnecessary details that can heavily affect the model evaluation in terms of complexity and resolution time.