Skip to main content

Über dieses Buch

This book provides formal and informal definitions and taxonomies for self-aware computing systems, and explains how self-aware computing relates to many existing subfields of computer science, especially software engineering. It describes architectures and algorithms for self-aware systems as well as the benefits and pitfalls of self-awareness, and reviews much of the latest relevant research across a wide array of disciplines, including open research challenges.

The chapters of this book are organized into five parts: Introduction, System Architectures, Methods and Algorithms, Applications and Case Studies, and Outlook. Part I offers an introduction that defines self-aware computing systems from multiple perspectives, and establishes a formal definition, a taxonomy and a set of reference scenarios that help to unify the remaining chapters. Next, Part II explores architectures for self-aware computing systems, such as generic concepts and notations that allow a wide range of self-aware system architectures to be described and compared with both isolated and interacting systems. It also reviews the current state of reference architectures, architectural frameworks, and languages for self-aware systems. Part III focuses on methods and algorithms for self-aware computing systems by addressing issues pertaining to system design, like modeling, synthesis and verification. It also examines topics such as adaptation, benchmarks and metrics. Part IV then presents applications and case studies in various domains including cloud computing, data centers, cyber-physical systems, and the degree to which self-aware computing approaches have been adopted within those domains. Lastly, Part V surveys open challenges and future research directions for self-aware computing systems.

It can be used as a handbook for professionals and researchers working in areas related to self-aware computing, and can also serve as an advanced textbook for lecturers and postgraduate students studying subjects like advanced software engineering, autonomic computing, self-adaptive systems, and data-center resource management. Each chapter is largely self-contained, and offers plenty of references for anyone wishing to pursue the topic more deeply.





Chapter 1. The Notion of Self-aware Computing

We define the notion of “self-aware computing” and the relationship of this term to related terms such as autonomic computing, self-management, and similar. The need for a new definition, driven by trends that are only partially addressed by existing areas of research, is motivated. The semantics of the provided definition are discussed in detail examining the selected wording and explaining its meaning to avoid misleading interpretations. This chapter also provides an overview of the existing usage of the term self-aware computing, respectively self-awareness, in related past projects and initiatives.
Samuel Kounev, Peter Lewis, Kirstie L. Bellman, Nelly Bencomo, Javier Camara, Ada Diaconescu, Lukas Esterle, Kurt Geihs, Holger Giese, Sebastian Götz, Paola Inverardi, Jeffrey O. Kephart, Andrea Zisman

Chapter 2. Self-aware Computing Systems: Related Concepts and Research Areas

Self-aware computing systems exhibit a number of characteristics (e.g., autonomy, social ability, and proactivity) which have already been studied in different research areas, such as artificial intelligence, organic computing, or autonomic and self-adaptive systems. This chapter provides an overview of strongly related concepts and areas of study from the perspective of self-aware computing systems.
Javier Cámara, Kirstie L. Bellman, Jeffrey O. Kephart, Marco Autili, Nelly Bencomo, Ada Diaconescu, Holger Giese, Sebastian Götz, Paola Inverardi, Samuel Kounev, Massimo Tivoli

Chapter 3. Towards a Framework for the Levels and Aspects of Self-aware Computing Systems

Increased self-awareness in computing systems can be beneficial in several respects, including a greater capacity to adapt, to build potential for future adaptation in unknown environments, and to explain their behaviour to humans and other systems. When attempting to endow computing systems with a form of self-awareness, it is important to have a clear understanding of what that form looks like. This chapter therefore first introduces the general concept of self-awareness and its various facets. Second, we provide an overview of the range of efforts to interpret the concept of self-awareness in computing. Third, we provide a structured conceptual framework that organizes this variety of different forms of self-awareness. This provides a broad set of concepts and a language that can be used to describe and reason about self-aware computing systems.
Peter Lewis, Kirstie L. Bellman, Christopher Landauer, Lukas Esterle, Kyrre Glette, Ada Diaconescu, Holger Giese

Chapter 4. Reference Scenarios for Self-aware Computing

This chapter defines three reference scenarios to which other chapters may refer for the purpose of motivating and illustrating architectures, techniques, and methods consistently throughout the book. The reference scenarios cover a broad set of characteristics and issues that one may encounter in self-aware systems and represent a range of domains and a variety of scales and levels of complexity. The first scenario focuses on an adaptive sorting algorithm and exemplifies how a self-aware system may adapt to changes in the data on which it operates, the environment in which it executes, or the requirements or performance criteria to which it manages itself. The second focuses on self-aware multiagent applications running in a data center environment, allowing issues of collective behavior in cooperative and competitive self-aware systems to come to the fore. The third focuses on a cyber-physical system. It allows us to explore many of the same issues of system-level self-awareness that appear in the second scenario, but in a different context and at a potentially even larger (potentially planetary) scale, when there is no one clear global objective.
Jeffrey O. Kephart, Martina Maggio, Ada Diaconescu, Holger Giese, Henry Hoffmann, Samuel Kounev, Anne Koziolek, Peter Lewis, Anders Robertsson, Simon Spinner

System Architectures


Chapter 5. Architectural Concepts for Self-aware Computing Systems

Self-awareness in a computing system is achieved by implementing a model-based learning, reasoning, and acting loop (LRA-M loop). Similar to the feedback loops for self-adaptive software, we argue that the LRA-M loop should be addressed during the architectural design of self-aware computing systems. This allows engineers to explicitly decide and reason about the system’s self-awareness capabilities. This chapter, therefore, introduces the relevant architectural concepts to address and make the LRA-M loop visible in the architectural design. Based on these concepts, we discuss how context-awareness, self-awareness, and meta-self-awareness become manifest in an architecture. Finally, we relate the presented architectural concepts to the definition and framework for self-aware computing systems introduced in the previous chapters.
Holger Giese, Thomas Vogel, Ada Diaconescu, Sebastian Götz, Samuel Kounev

Chapter 6. Generic Architectures for Individual Self-aware Computing Systems

Making computing systems self-aware calls for appropriate architectural designs of such systems that allow developers to explicitly decide and reason about the system’s self-awareness capabilities. In this context, a critical issue is the development of appropriate reflections that enable self-awareness and that impact the architectural design. This chapter, therefore, discusses generic architectures for pre-reflective, reflective, and meta-reflective self-awareness as well as various forms of constructing reflections while focusing on an individual system as opposed to a collective of self-aware computing systems. Finally, we discuss the presented ideas with respect to existing control schemes and architectural styles for self-adaptive software that seem to be promising for the architectural design of self-aware computing systems.
Holger Giese, Thomas Vogel, Ada Diaconescu, Sebastian Götz, Kirstie L. Bellman

Chapter 7. Architectures for Collective Self-aware Computing Systems

This chapter aims to discuss the architectural aspects relevant to collectives of self-aware computing systems. Here, collectives consist of several self-aware computing systems that interact in some way. Their interactions may, potentially, lead to the formation of a self-aware collective of systems. Hence, the chapter defines different types of interactions that can link systems into a collective and then discusses the conditions under which self-awareness can be achieved within such collectives. Furthermore, the chapter identifies some of the most relevant architectural concerns that occur when linking multiple self-aware systems into a (self-aware) collective and defines these in the form of a generic meta-architecture for collectives of self-aware systems. Architectural concerns can represent both static and dynamic aspects of system collectives. Static concerns include the self-awareness levels of systems in a collective; the system interrelations, such as competition and cooperation; and several organisation patterns for systems in a collective, such as hierarchy or peer-to-peer designs. Dynamic concerns address changes that may occur over time, with respect to the above-mentioned aspects, based on the experience and learning of systems within the collective. More advanced topics discuss the manner in which the creation of collectives from interrelated systems can be applied recursively, adopting different architectural choices and combinations at each level, and potentially leading to a wide range of variations in the resulting self-awareness characteristics. The chapter concludes by indicating the main contributions and targeted beneficiaries of this chapter and points to the most important challenges to address in future research.
Ada Diaconescu, Kirstie L. Bellman, Lukas Esterle, Holger Giese, Sebastian Götz, Peter Lewis, Andrea Zisman

Chapter 8. State of the Art in Architectures for Self-aware Computing Systems

In this chapter, we review the state of the art in self-aware computing systems with a particular focus on software architectures. Therefore, we compare existing approaches targeting computing systems with similar characteristics as self-aware systems to the architectural concepts for single and collective self-aware systems discussed in the previous chapters. These approaches are particularly reference architectures and architectural frameworks and languages. Based on this comparison, we discuss open challenges for architectures of self-aware computing systems.
Holger Giese, Thomas Vogel, Ada Diaconescu, Sebastian Götz, Nelly Bencomo, Kurt Geihs, Samuel Kounev, Kirstie L. Bellman

Methods and Algorithms


Chapter 9. Self-modeling and Self-awareness

The purpose of this chapter is to discuss why self-aware systems must pay special attention to self-modeling capabilities, clarify what is meant by both strong and weak self-modeling, and describe some of the defining characteristics of self-modeling. This chapter is also about self-management via run-time model creation by the operational system, explaining why systems need to build models at run time, what phenomena they need to model, and how they can build models effectively. A system that is expected to operate in a dynamic environment needs to be able to update and occasionally dramatically change its models to maintain synchrony with that environment. We describe several example systems, one rather extensively, to show how the notions apply in practice.
Kirstie L. Bellman, Christopher Landauer, Phyllis Nelson, Nelly Bencomo, Sebastian Götz, Peter Lewis, Lukas Esterle

Chapter 10. Transition Strategies for Increasing Self-awareness in Existing Types of Computing Systems

In this chapter, we propose a methodology to analyse the different levels of self-awareness present in distinct types of computing systems and architectures, investigate the level of self-awareness that is already present in those systems and architectures, and describe some transition strategies to increase the level of self-awareness in these systems.
Marco Autili, Kirstie L. Bellman, Ada Diaconescu, Lukas Esterle, Massimo Tivoli, Andrea Zisman

Chapter 11. Synthesis and Verification of Self-aware Computing Systems

Self-aware computing systems are envisaged to exploit the knowledge of their own software architecture, hardware infrastructure and environment in order to follow high-level goals through proactively adapting as their environment evolves. This chapter describes two classes of key enabling techniques for self-adaptive systems: automated synthesis and formal verification. The ability to dynamically synthesize component connectors and compositions underpins the proactive adaptation of the architecture of self-aware systems. Deciding when adaptation is needed and selecting valid new architectures or parameters for self-aware systems often requires formal verification. We present the state of the art in the use of the two techniques for the development of self-aware computing systems and summarize the main research challenges associated with their adoption in practice.
Radu Calinescu, Marco Autili, Javier Cámara, Antinisca Di Marco, Simos Gerasimou, Paola Inverardi, Alexander Perucci, Nils Jansen, Joost-Pieter Katoen, Marta Kwiatkowska, Ole J. Mengshoel, Romina Spalazzese, Massimo Tivoli

Chapter 12. Self-adaptation for Individual Self-aware Computing Systems

This chapter discusses the role of self-awareness for adaptation at the individual level, when one single entity receives inputs both from itself or some of its components and from the external environment and uses the input to adjust to the current conditions. The chapter reviews the most widely used techniques for self-adaptation and identifies the role of self-awareness for each of the techniques and the metrics used to evaluate these techniques. Finally, we pave the way toward the following chapter, which discusses multiple entity adaptation, by introducing the interaction of different self-adaptation techniques at the level of the single individual.
Martina Maggio, Tarek Abdelzaher, Lukas Esterle, Holger Giese, Jeffrey O. Kephart, Ole J. Mengshoel, Alessandro V. Papadopoulos, Anders Robertsson, Katinka Wolter

Chapter 13. Self-adaptation in Collective Self-aware Computing Systems

The goals of this chapter are to identify the challenges involved in self-adaptation (including learning and knowledge sharing) of multiple self-aware systems (or system collectives). We shall discuss the techniques available for dealing with the challenges identified (e.g., algorithms for conflict resolution, collective learning, and negotiation protocols), and which are appropriate given assumptions regarding the collective system architecture. We refer to notions of knowledge, learning, and adaptation; various self-awareness levels; and reference scenarios introduced in Chap. 4.
Jeffrey O. Kephart, Ada Diaconescu, Holger Giese, Anders Robertsson, Tarek Abdelzaher, Peter Lewis, Antonio Filieri, Lukas Esterle, Sylvain Frey

Chapter 14. Metrics and Benchmarks for Self-aware Computing Systems

In this chapter, we propose a list of metrics grouped by the MAPE-K paradigm for quantifying properties of self-aware computing systems. This set of metrics can be seen as a starting point toward benchmarking and comparing self-aware computing systems on a level-playing field. We discuss state-of-the art approaches in the related fields of self-adaptation and self-protection to identify commonalities in metrics for self-aware computing. We illustrate the need for benchmarking self-aware computing systems with the help of an approach that uncovers real-time characteristics of operating systems. Gained insights of this approach can be seen as a way of enhancing self-awareness by a measurement methodology on an ongoing basis. At the end of this chapter, we address new challenges in reference workload definition for benchmarking self-aware computing systems, namely load intensity patterns and burstiness modeling.
Nikolas Herbst, Steffen Becker, Samuel Kounev, Heiko Koziolek, Martina Maggio, Aleksandar Milenkoski, Evgenia Smirni

Chapter 15. Assessing Self-awareness

This chapter discusses the importance of assessing self-awareness of a system and different approaches and aspects on how to enable a human as well as a machine to perform such an assessment. The chapter also elaborates on the different requirements and constraints for an assessment. Furthermore, this chapter outlines how these requirements and constraints limit the accuracy of defining the capabilities of an assessed system and the corresponding degree of self-awareness.
Lukas Esterle, Kirstie L. Bellman, Steffen Becker, Anne Koziolek, Christopher Landauer, Peter Lewis

Applications and Case Studies


Chapter 16. Run-Time Models for Online Performance and Resource Management in Data Centers

In this chapter, we introduce run-time models that a system may use for self-aware performance and resource management during operation. We focus on models that have been successfully used at run-time by a system itself or a system controller to reason about resource allocations and performance management in an online setting. This chapter provides an overview of existing classes of run-time models, including statistical regression models, queueing networks, control-theoretical models, and descriptive models. This chapter contributes to the state of the art, by creating a classification scheme, which we use to compare the different run-time model types. The aim of the scheme is to deepen the knowledge about the purpose, assumptions, and structure of each model class. We describe in detail two modeling case studies chosen because they are considered to be representative for a specific class of models. The description shows how these models can be used in a self-aware system for performance and resource management.
Simon Spinner, Antonio Filieri, Samuel Kounev, Martina Maggio, Anders Robertsson

Chapter 17. Online Learning of Run-Time Models for Performance and Resource Management in Data Centers

In this chapter, we explain how to extract and learn run-time models that a system can use for self-aware performance and resource management in data centers. We abstract from concrete formalisms and identify extraction aspects relevant to performance models. We categorize the learning aspects into: (i) model structure, (ii) model parametrization (estimation and calibration of model parameters), and (iii) model adaptation options (change point detection and run-time reconfiguration). The chapter identifies alternative approaches for the respective model aspects. The type and granularity of each aspect depend on the characteristic of the concrete performance models.
Jürgen Walter, Antinisca Di Marco, Simon Spinner, Paola Inverardi, Samuel Kounev

Chapter 18. Online Workload Forecasting

This chapter gives a summary of the state-of-the-art approaches from different research fields that can be applied to continuously forecast future developments of time series data streams. More specifically, the input time series data contains continuously monitored metrics that quantify the amount of incoming workload units to a self-aware system. It is the goal of this chapter to identify and present approaches for online workload forecasting that are required for a self-aware system to act proactively—in terms of problem prevention and optimization—inferred from likely changes in their usage. The research fields covered are machine learning and time series analysis. We describe explicit limitations and advantages for each forecasting method.
Nikolas Herbst, Ayman Amin, Artur Andrzejak, Lars Grunske, Samuel Kounev, Ole J. Mengshoel, Priya Sundararajan

Chapter 19. State of Practice of Non-self-aware Virtual Machine Management in Cloud Data Centers

Hardware virtualization is the prevalent way to share data centers among different tenants. In this chapter, we present a large-scale characterization study that aims to better understand the state of the practice, i.e., how data centers in the private cloud are used by their customers, how physical resources are shared among different tenants using virtualization, and how virtualization technologies are actually employed. Our study focuses on IBM corporate data centers as a major infrastructure provider and reports on their observed usage across a 19-day period. We aim at answering two key questions in virtual machine management: (i) whether the VM are dynamically adjusted according to the system state given the high flexibility in resizing virtual resources, and (ii) what type of self-learning policy governing the VM migration can be found in real data centers given a plethora of studies on VM migration. Our study illustrates that there is a huge tendency in over-provisioning resources while being conservative to several possibilities opened up by virtualization (e.g., migration and co-location), indicating the lack of autonomic VM management and a great potential for developing self-learning systems.
Lydia Y. Chen, Robert Birke, Evgenia Smirni

Chapter 20. Self-awareness of Cloud Applications

Cloud applications today deliver an increasingly larger portion of the information and communications technology (ICT) services. To address the scale, growth, and reliability of cloud applications, self-aware management and scheduling are becoming commonplace. How are they used in practice? In this chapter, we propose a conceptual framework for analyzing the state-of-the-art self-awareness approaches used in the context of cloud applications. We map important applications corresponding to the popular and emerging application domains to this conceptual framework and compare the practical characteristics, benefits, and drawbacks of self-awareness approaches. Last, we propose a road map for addressing the open challenges in self-aware cloud and datacenter applications.
Alex Iosup, Xiaoyun Zhu, Arif Merchant, Eva Kalyvianaki, Martina Maggio, Simon Spinner, Tarek Abdelzaher, Ole Mengshoel, Sara Bouchenak

Chapter 21. Software Architectures for Self-protection in IaaS Clouds

In this chapter, we focus on software architectures for self-protection in IaaS clouds. IaaS clouds, especially hybrid clouds, are becoming increasingly popular because of the need for developers and enterprises to dynamically increase/decrease their use of computing resources to adapt quickly to market forces and customer demands, reduce costs, and increase fault tolerance. However, the adoption of public IaaS and hybrid clouds by enterprises is slower than expected because the current hybrid cloud infrastructures do not provide scalable and efficient mechanisms to prevent software tampering and configuration errors and ensure the trustworthiness and integrity of the software stack executing a hybrid application workload; or to enforce governmental privacy and audit regulations by ensuring that remote data and computation do not cross specified geographic boundaries. We discuss the recent research on integrating intrusion detection systems in IaaS infrastructures, as well as hardware-rooted integrity verification and geographic fencing to address the concerns outlined above.
K. R. Jayaram, Aleksandar Milenkoski, Samuel Kounev

Chapter 22. Benchmarking Intrusion Detection Systems with Adaptive Provisioning of Virtualized Resources

With the increasing popularity of virtualization, deploying intrusion detection systems (IDSes) in virtualized environments, for example, in virtual machines as virtualized network functions, has become an emerging practice. Modern virtualized environments feature on demand provisioning of virtualized processing and memory resources to virtual machines, dynamically adapting its intensity in order to meet resource demands. Such a provisioning may have a significant impact on many properties of an IDS deployed in a virtual machine, for example, on its attack detection accuracy. However, conventional metrics for quantifying IDS attack detection accuracy do not capture this impact, which may lead to inaccurate assessments of the IDS’s accuracy at detecting attacks. In this chapter, we discuss in detail on the impact of on demand provisioning of virtualized resources on IDS attack detection accuracy. Further, we discuss on relevant issues related to the use of conventional metrics for quantifying IDS attack detection accuracy. Finally, we present a preliminary metric and measurement methodologies, which allow for the accurate assessment of IDS attack detection accuracy taking on-demand resource provisioning into account.
Aleksandar Milenkoski, K. R. Jayaram, Samuel Kounev

Chapter 23. Self-aware Networks: The Cognitive Packet Network and Its Performance

This article is a summary description of the cognitive packet network (CPN) which is an early example of a completely software-defined network (SDN) and of a fully implemented self-aware computer network (SAN). CPN has been completely implemented and is used in numerous experiments. CPN is able to observe its own internal performance as well as the interfaces of the external systems that it interacts with, in order to modify its behaviour so as to adaptively achieve objectives, such as discovering services for its users, improving their quality of service (QoS), reducing its own energy consumption, compensating for components that fail or malfunction, detecting and reacting to intrusions, and defending itself against attacks.
Erol Gelenbe

Chapter 24. Leveraging Design and Runtime Architecture Models to Support Self-awareness

Self-aware computing systems possess knowledge about themselves and their environment in order to trigger the internal and external actions. Such ability is particularly interesting in new domains, such as IoT, where systems are often executed in fluctuating conditions and need frequent adaptations to meet their requirements. In this chapter, we show how such knowledge can be expressed as architectural models and how design and runtime architectures can be linked and remained synchronized. The approach is illustrated on a smart home health application called actimetrics, developed with Orange Labs.
Philippe Lalanda, Stéphanie Chollet, Catherine Hamon

Chapter 25. Spacecraft Autonomous Reaction Capabilities, Control Approaches, and Self-aware Computing

Space exploration missions require very challenging autonomous reaction capabilities, as spacecraft have to react appropriately to the partially unknown environment in time-critical situations. Here, direct human interaction is often impossible due to significant signal propagation delays related to the huge distances. We discuss existing solution strategies for autonomy in space and exemplified by the missions CASSINI–HUYGEN (landing on the Saturnian moon) and ROSETTA (the accompanying and landing on a comet), and the NetSat project (low Earth orbit formations). Based on the state of the art, we outline how self-aware computing may improve autonomy in future space missions.
Klaus Schilling, Jürgen Walter, Samuel Kounev



Chapter 26. Self-aware Computing Systems: Open Challenges and Future Research Directions

In this chapter, we discuss the open challenges in building self-aware computing systems that are still being faced by the research and development community. The challenges can be theoretical, technical, computational, or even sociological. First, we highlight the challenges associated with each of the earlier parts of the book and summarize on respective future research directions. We then offer concluding remarks and an outlook into the future in the last section.
Robert Birke, Javier Cámara, Lydia Y. Chen, Lukas Esterle, Kurt Geihs, Erol Gelenbe, Holger Giese, Anders Robertsson, Xiaoyun Zhu
Weitere Informationen

Premium Partner