Self-Adaptive Distributed Systems
The current explosion of information, technological progress, and distribution of software-intensive systems, leads to large-scale systems with an inherent degree of complexity. Especially the continuous growth and development within the domain of mobile devices demand for innovative approaches for building, running, and managing such software systems. A consequence is the need of a continuous evolution of the respective software. These systems have to become more versatile, flexible, resilient, dependable, robust, energy-efficient, recoverable, customizable, configurable, and self-optimizing. These aspects are achievable by an adaptation to the dynamically changing context, i.e., the environment or the characteristics of a network connection. Therefore, the domain of self-adaptive distributed systems deals with the development of software systems that are able to adjust their behavior in response to an ever changing context.
Self-adaptive distributed systems have to cope with the inherent dynamics of their context. To satisfy certain requirements imposed by a context, such systems have adapt themselves accordingly, whenever the context changes and the requirements are violated. For example, a concert may impose requirements such as 'provide ability to take pictures' on a smartphone, whereas the user has to be able to 'send and receive e-mails' if it is used in the office.
Self-adaptation is an important research topic in several application domains, such as autonomic computing, dependable computing, embedded systems, mobile ad-hoc networks, mobile and autonomous robots, multi-agent systems, peer-to-peer applications, sensor networks, and service-oriented architecture. As a basis to orchestrate an autonomous self-adaptation of a software system, well-established concepts such as the MAPE-K control loop are used. To execute an adaptation, the current state of a system is captured in the monitoring task (M). The subsequent analysis phase (A) derives higher order information based on the monitored information, e.g., bottlenecks or malicious nodes. In the planning phase (P) a plan is derived to adapt the self-adaptive distributed system, e.g., a sequence of important adaptation steps. Finally, the system executes (E) the derived plan and, thereby, adapts the self-adaptive distributed system. The knowledge (K) represents the basis for every adaptation. The knowledge base constitutes of specifications and information how a system is to be adapted, under which contextual conditions, e.g., event-condition-action rules that trigger an adaptation.
For example, the Internet has rapidly evolved into an integral part of our everyday life. Consequently, the necessary communication mechanisms evolve on a constant basis and new mechanisms are introduced continuously. The individual solutions resulting from this rapid evolution are widely considered to be problematic. Currently, as many as three standards exist for Bluetooth, Wi-Fi and now LTE alone. The result: a multitude of services, often based on different technologies. Up to now, devices, which are connected to the Internet, are not able to adapt themselves autonomously from composition of services and technologies to another. Instead, the devices remain static in their configuration and the user has to adapt the device manually.
To tackle the issue of coping with a continuous evolving internet the real-time systems lab focuses on the self-adaptation of distributed software systems. Therefore, techniques and concepts are investigated, which offer the possibility to dynamically adapt a composition of active mechanisms at runtime, e.g., by exchanging the communication infrastructure from Wi-Fi to LTE.