Trends in Software Engineering for Self-Adaptive Software (Sommersemester 2016)
Lecturer: Prof. Dr. Holger Giese
(Systemanalyse und Modellierung)
- Weekly Hours: 2
- Credits: 3
- Enrolment Deadline: 22.04.2016
- Teaching Form: Seminar
- Enrolment Type: Compulsory Elective Module
Programs & Modules
- IT-Systems Engineering A
- IT-Systems Engineering B
- IT-Systems Engineering C
- IT-Systems Engineering D
- Software Architecture & Modeling Technology
The complexity of current software systems, evolution of their requirements and uncertainty in their environments has led the software engineering community to look for inspiration in diverse related fields (e.g., robotics, artificial intelligence, control theory, and biology) for new ways to design and manage complex systems and their evolution. In this endeavor, the capability of the system to adjust its behavior in response to changes in the system itself, the requirements, or the environment in the form of self-adaptation has become one of the most promising directions (cf. [1,2]).
The landscapes of software engineering domains are constantly evolving. In particular, software has become the bricks and mortar of many complex systems that are composed of interconnected parts. Often the overall system exhibits properties not obvious from the properties of the individual parts. Extreme cases for such complex systems are ultra-large-scale (ULS) systems or system of systems (SoS) where self-adaptation, self-organization, and emergence are unavoidable. In order for the evolution of software engineering techniques to keep up with these ever-changing landscapes, the systems must be built in such a manner that they are able to adapt to their ever-changing surroundings and be flexible, fault-tolerant, robust, resilient, available, configurable, secure, and self-healing. For sufficiently complex systems, these adaptations must necessarily happen autonomously.
Lately, the idea of self-aware systems  that are able to acquire the necessary knowledge for self-management at runtime came up. This leads to self-reflective systems that are aware of its software architecture, execution environment, and/or hardware infrastructure on which it is running as well as of its operational goals (e.g., quality-of-service requirements, cost- and energy-efficiency targets), self-predictive systems that are able to predict the effect of dynamic changes (e.g., changing service workloads) as well as predict the effect of possible adaptation actions (e.g., changing system configuration, adding/removing resources) and finally, also self-adaptive systems if the capabilities are exploited to proactively adapting as the environment evolves in order to ensure that its operational goals are continuously met.
In this seminar we plan to reflect on this new trend and review the latest development, discuss the achievement, current challenges concerning the application, current research challenges, and current limitations.
 B.H.C. Cheng, H. Giese, P. Inverardi, J. Magee, R. de Lemos, eds.: Software Engineering for Self-Adaptive Systems. Volume 5525 of Lecture Notes in Computer Science. Springer (2009) (http://dx.doi.org/10.1007/978-3-642-02161-9)
 R. de Lemos, H. Giese, H.A. Müller, M. Shaw, eds.: Software Engineering for Self-Adaptive Systems II. Volume 7475 of Lecture Notes in Computer Science (LNCS). Springer (2013) (http://dx.doi.org/10.1007/978-3-642-35813-5)
Hints on literature will be given together with the individual topics. Additionally, we expect that you will do some literature research by your own.
Each student will work on a topic in the context of self-aware or self-adaptive systems. The results of this work should be presented in the seminar and elaborated in a seminar paper.
The seminar will feature sessions to generally introduce the topic at the beginning of the semester while the presentations will happen toward the end of the seminar as a block course.
The grade will be determined based on your talk and seminar paper.
The first session will take place on Wednesday, April 20, 15:15 in room A-2.8.