L.079.05796 Software Engineering for Self-Adaptive Systems

Lecture, Winter 2021, Master Studies, University of Paderborn

Course in PANDA


The complexity of software systems, the evolution of requirements, and the uncertainty of requirements and environments challenge the management of running systems. One promising solution are self-adaptive systems, that is, systems that are able to adapt their behavior in response to changing and uncertain requirements and environments. In this lecture we will discuss the foundations as well as methods and techniques to engineer and assure self-adaptive systems. The focus will be on the software engineering aspects and how self-adaptation impacts typical software engineering activities. A selection of methods and techniques will be exemplified on research prototypes (so-called exemplars) in the tutorials and project.

The lecture will introduce the foundations, methods, and techniques for developing and assuring self-adaptive systems, which will be exemplified in the tutorials and project to gain practical experience. This exemplification will be based on so-called exemplars originating from the research community of self-adaptive software systems (http://self-adaptive.org/exemplars/).


  • Weyns, Danny (2020). An Introduction to Self-adaptive Systems: A Contemporary Software Engineering Perspective. Wiley
  • de Lemos, R., Garlan, D., Ghezzi, C., Giese, H. (Eds.) (2017). Software Engineering for Self-Adaptive Systems III. Assurances. Springer
  • de Lemos, R., Giese, H., Müller, H., Shaw, M. (Eds.) (2013). Software Engineering for Self-Adaptive Systems II. Springer.
  • Cheng, B.H.C., de Lemos, R., Inverardi, P., Magee, J. (Eds.). (2009) Software Engineering for Self-Adaptive Systems. Springer.