Self-adaptation is an important field of research and engineering that aims to address the challenging problem of how to engineer software systems that have to deal with uncertainties that can only be resolved at run time. We will use an Internet-of-Things (IoT) application as a running example throughout the course. Ensuring reliability and energy efficiency in IoT systems that have to operate under uncertainties, such as interferences in the wireless network or continuously changing load of the network, is an example problem that can be tackled using self-adaptation. The course will consist of three parts. The first part focuses on quality models, including automata (e.g. to model robustness), Markov models (e.g. for energy consumption), and queuing models (e.g. for latency). In the second part, we discuss how quality models can be used to estimate quality properties at design time. Part three presents the basic principles of self-adaptation and introduces a conceptual feedback loop model of a self-adaptive system. We then zoom in on how quality models are exploited at runtime by a self-adaptive system to provide guarantees for the quality goals, regardless of uncertainties. We discuss different techniques, including simulation and verification at runtime. The course will combine lectures with assignments and hands-on exercises.
Further information available at Faculty of Informatics.