January 13 – 18 , 2008, Dagstuhl Seminar 08031

Software Engineering for Self-Adaptive Systems


Betty H. C. Cheng (Michigan State University – East Lansing, US)
Rogerio de Lemos (University of Kent, GB)
Holger Giese (Hasso-Plattner-Institut – Potsdam, DE)
Paola Inverardi (University of L'Aquila, IT)
Jeff Magee (Imperial College London, GB)

For support, please contact

Dagstuhl Service Team


Dagstuhl Seminar Proceedings DROPS
List of Participants
Dagstuhl's Impact: Documents available

Press Room


The simultaneous explosion of information, the integration of technology, and the continuous evolution from software- intensive systems to ultra-large-scale (ULS) systems requires new and innovative approaches for building, running and managing software systems [18]. A consequence of this continuous evolution is that software systems must become more versatile, flexible, resilient, dependable, robust, energy-efficient, recoverable, customizable, configurable, or self-optimizing by adapting to changing operational contexts and environments. The complexity of current software-based systems has led the software engineering community to look for inspiration in diverse related fields (e.g., robotics, artificial intelligence) as well as other areas (e.g., biology) to find new ways of designing and managing systems and services. In this endeavour, the capability of the system to adjust its behaviour in response to its perception of the environment and the system itself in form of self-adaptation has become one of the most promising directions.

The topic of self-adaptive systems has been studied within the different research areas of software engineering, including, requirements engineering, software architectures, middleware, component-based development, and programming languages, however most of these initiatives have been isolated and until recently without a formal forum for discussing its diverse facets. Other research communities that have also investigated this topic from their own perspective are even more diverse: fault-tolerant computing, distributed systems, biologically inspired computing, distributed artificial intelligence, integrated management, robotics, knowledge-based systems, machine learning, control theory, etc. In addition, research in several application areas and technologies has grown in importance, for example, adaptable user interfaces, autonomic computing, dependable computing, embedded systems, mobile ad hoc networks, mobile and autonomous robots, multi-agent systems, peer-to-peer applications, sensor networks, service-oriented architectures, and ubiquitous computing.

It is important to emphasise that in all the above initiatives the common element that enables the provision of self-adaptability is software because of its flexible nature. However, the proper realization of the self-adaptation functionality still remains a significant intellectual challenge, and only recently have the first attempts in building self-adaptive systems emerged within specific application domains. Moreover, little endeavour has been made to establish suitable software engineering approaches for the provision of self- adaptation. In the long run, we need to establish the foundations that enable the systematic development of future generations of self-adaptive systems. Therefore it is worthwhile to identify the commonalities and differences of the results achieved so far in the different fields and look for ways to integrate them.

The development of self-adaptive systems can be viewed from two perspectives, either top-down when considering an individual system, or bottom-up when considering cooperative systems. Top-down self-adaptive systems assess their own behaviour and change it when the assessment indicates a need to adapt due to evolving functional or non-functional requirements. Such systems typically operate with an explicit internal representation of themselves and their global goals. In contrast, bottom-up self-adaptive systems (self- organizing systems) are composed of a large number of components that interact locally according to simple rules. The global behaviour of the system emerges from these local interactions. The global behaviour of the system emerges from these local interactions, and it is di±cult to deduce properties of the global system by studying only the local properties of its parts. Such systems do not necessarily use internal representations of global properties or goals; they are often inspired by biological or sociological phenomena. The two cases of self-adaptive behaviour in the form of individual and cooperative self-adaptation are two extreme poles. In practice, the line between both is rather blurred, and compromises will often lead to an engineering approach incorporating representatives from these two extreme poles. For example, ultra large-scale systems need both top-down self-adaptive and bottom-up self-adaptive characteristics (e.g., the Web is basically decentralized as a global system but local sub-webs are highly centralized). However, from the perspective of software development the major challenge is how to accommodate in a systematic engineering approach traditional top-down approaches with bottom-up approaches.

The goal of this road map paper is to summarize and point out the current state-of-the-art, its limitations, and identify critical challenges for the software engineering of self-adaptive systems. Specifically, we intend to focus on development methods, techniques, and tools that seem to be required to support the systematic development of complex software systems with dynamic self-adaptive behaviour. In contrast to merely speculative and conjectural visions and ad hoc approaches for systems supporting self-adaptability, the objective of this paper is to establish a road map for research and identify the main research challenges for the systematic software engineering of self-adaptive systems.

To present and motivate these challenges, the paper is structured using the four views which have been identified as essential. Each of these views are roughly presented in terms of the state of the art and the challenges ahead. We first review the state of the art and needs concerning requirements (Section 2). Then, the relevant modelling dimensions are discussed in Section 3 before we discuss the engineering of self-adaptive systems in Section 4. The considerations are completed by looking into the current achievements and needs for assurance in the context of self-adaptive systems in Section 5. Finally, the findings are summarized in Section 6 in terms of lessons learned and future challenges.

Dagstuhl Seminar Series


  • Modelling / Simulation
  • Sw-engineering
  • Semantics / Specification / Formal Methods


  • Software engineering
  • Self-adaptability
  • Requirements engineering
  • Software architectures
  • Formal models
  • Programming languages
  • Software components
  • Software deployment
  • Evolution
  • Self-organization
  • Self-management


In the series Dagstuhl Reports each Dagstuhl Seminar and Dagstuhl Perspectives Workshop is documented. The seminar organizers, in cooperation with the collector, prepare a report that includes contributions from the participants' talks together with a summary of the seminar.


Download overview leaflet (PDF).

Dagstuhl's Impact

Please inform us when a publication was published as a result from your seminar. These publications are listed in the category Dagstuhl's Impact and are presented on a special shelf on the ground floor of the library.


Furthermore, a comprehensive peer-reviewed collection of research papers can be published in the series Dagstuhl Follow-Ups.