Foreword xiAcknowledgments xvAcronyms xviiIntroduction xix1 Basic Principles of Self-Adaptation and Conceptual Model 11.1 Principles of Self-Adaptation 21.2 Other Adaptation Approaches 41.3 Scope of Self-Adaptation 51.4 Conceptual Model of a Self-Adaptive System 51.4.1 Environment 51.4.2 Managed System 71.4.3 Adaptation Goals 81.4.4 Feedback Loop 81.4.5 Conceptual Model Applied 101.5 A Note on Model Abstractions 111.6 Summary 111.7 Exercises 121.8 Bibliographic Notes 142 Engineering Self-Adaptive Systems: A Short Tour in Seven Waves 172.1 Overview of the Waves 182.2 Contributions Enabled by the Waves 202.3 Waves Over Time with Selected Work 202.4 Summary 222.5 Bibliographic Notes 233 Internet-of-Things Application 253.1 Technical Description 253.2 Uncertainties 283.3 Quality Requirements and Adaptation Problem 293.4 Summary 293.5 Exercises 303.6 Bibliographic Notes 314 Wave I: Automating Tasks 334.1 Autonomic Computing 344.2 Utility Functions 354.3 Essential Maintenance Tasks for Automation 374.3.1 Self-Optimization 374.3.2 Self-Healing 384.3.3 Self-Protection 404.3.4 Self-Configuration 424.4 Primary Functions of Self-Adaptation 434.4.1 Knowledge 444.4.2 Monitor 464.4.3 Analyzer 474.4.4 Planner 494.4.5 Executor 514.5 Software Evolution and Self-Adaptation 524.5.1 Software Evolution Management 534.5.2 Self-Adaptation Management 544.5.3 Integrating Software Evolution and Self-Adaptation 554.6 Summary 564.7 Exercises 594.8 Bibliographic Notes 605 Wave II: Architecture-based Adaptation 635.1 Rationale for an Architectural Perspective 645.2 Three-Layer Model for Self-Adaptive Systems 665.2.1 Component Control 675.2.2 Change Management 675.2.3 Goal Management 685.2.4 Three-Layer Model Applied to DeltaIoT 685.2.5 Mapping Between the Three-Layer Model and the Conceptual Model for Self-Adaptation 705.3 Reasoning about Adaptation using an Architectural Model 705.3.1 Runtime Architecture of Architecture-based Adaptation 715.3.2 Architecture-based Adaptation of the Web-based Client-Server System 735.4 Comprehensive Reference Model for Self-Adaptation 755.4.1 Reflection Perspective on Self-Adaptation 765.4.2 MAPE-K Perspective on Self-Adaptation 785.4.3 Distribution Perspective on Self-Adaptation 795.5 Summary 835.6 Exercises 845.7 Bibliographic Notes 876 Wave III: Runtime Models 896.1 What is a Runtime Model? 906.2 Causality and Weak Causality 906.3 Motivations for Runtime Models 916.4 Dimensions of Runtime Models 926.4.1 Structural versus Behavioral 936.4.2 Declarative versus Procedural 946.4.3 Functional versus Qualitative 956.4.3.1 Functional Models 956.4.3.2 Quality Models 956.4.4 Formal versus Informal 986.5 Principal Strategies for Using Runtime Models 1016.5.1 MAPE Components Share K Models 1016.5.2 MAPE Components Exchange K Models 1036.5.2.1 Runtime Models 1036.5.2.2 Components of the Managing System 1046.5.3 MAPE Models Share K Models 1056.6 Summary 1086.7 Exercises 1096.8 Bibliographic Notes 1147 Wave IV: Requirements-driven Adaptation 1157.1 Relaxing Requirements for Self-Adaptation 1167.1.1 Specification Language to Relax Requirements 1167.1.1.1 Language Operators for Handling Uncertainty 1167.1.1.2 Semantics of Language Primitives 1187.1.2 Operationalization of Relaxed Requirements 1187.1.2.1 Handing Uncertainty 1187.1.2.2 Requirements Reflection and Mitigation Mechanisms 1197.1.2.3 A Note on the Realization of Requirements Reflection 1217.2 Meta-Requirements for Self-Adaptation 1227.2.1 Awareness Requirements 1237.2.2 Evolution Requirements 1247.2.3 Operationalization of Meta-requirements 1267.3 Functional Requirements of Feedback Loops 1277.3.1 Design and Verify Feedback Loop Model 1287.3.2 Deploy and Execute Verified Feedback Loop Model 1307.4 Summary 1317.5 Exercises 1327.6 Bibliographic Notes 1348 Wave V: Guarantees Under Uncertainties 1378.1 Uncertainties in Self-Adaptive Systems 1398.2 Taming Uncertainty with Formal Techniques 1418.2.1 Analysis of Adaptation Options 1418.2.2 Selection of Best Adaptation Option 1438.3 Exhaustive Verification to Provide Guarantees for Adaptation Goals 1448.4 Statistical Verification to Provide Guarantees for Adaptation Goals 1498.5 Proactive Decision-Making using Probabilistic Model Checking 1548.6 A Note on Verification and Validation 1608.7 Integrated Process to Tame Uncertainty 1608.7.1 Stage I: Implement and Verify the Managing System 1618.7.2 Stage II: Deploy the Managing System 1628.7.3 Stage III: Verify Adaptation Options, Decide, and Adapt 1638.7.4 Stage IV: Evolve Adaptation Goals and Managing System 1638.8 Summary 1648.9 Exercises 1658.10 Bibliographic Notes 1689 Wave VI: Control-based Software Adaptation 1719.1 A Brief Introduction to Control Theory 1739.1.1 Controller Design 1749.1.2 Control Properties 1759.1.3 SISO and MIMO Control Systems 1769.1.4 Adaptive Control 1779.2 Automatic Construction of SISO Controllers 1779.2.1 Phases of Controller Construction and Operation 1789.2.2 Model Updates 1799.2.3 Formal Guarantees 1819.2.4 Example: Geo-Localization Service 1839.3 Automatic Construction of MIMO Controllers 1849.3.1 Phases of Controller Construction and Operation 1849.3.2 Formal Guarantees 1869.3.3 Example: Unmanned Underwater Vehicle 1869.4 Model Predictive Control 1899.4.1 Controller Construction and Operation 1899.4.2 Formal Assessment 1919.4.3 Example: Video Compression 1929.5 A Note on Control Guarantees 1949.6 Summary 1949.7 Exercises 1969.8 Bibliographic Notes 19910 Wave VII: Learning from Experience 20110.1 Keeping Runtime Models Up-to-Date Using Learning 20310.1.1 Runtime Quality Model 20410.1.2 Overview of Bayesian Approach 20510.2 Reducing Large Adaptation Spaces Using Learning 20810.2.1 Illustration of the Problem 20810.2.2 Overview of the Learning Approach 21010.3 Learning and Improving Scaling Rules of a Cloud Infrastructure 21310.3.1 Overview of the Fuzzy Learning Approach 21410.3.1.1 Fuzzy Logic Controller 21410.3.1.2 Fuzzy Q-learning 21710.3.1.3 Experiments 22110.4 Summary 22310.5 Exercises 22510.6 Bibliographic Notes 22611 Maturity of the Field and Open Challenges 22711.1 Analysis of the Maturity of the Field 22711.1.1 Basic Research 22711.1.2 Concept Formulation 22811.1.3 Development and Extension 22911.1.4 Internal Enhancement and Exploration 22911.1.5 External Enhancement and Exploration 23011.1.6 Popularization 23011.1.7 Conclusion 23111.2 Open Challenges 23111.2.1 Challenges Within the Current Waves 23111.2.1.1 Evidence for the Value of Self-Adaptation 23111.2.1.2 Decentralized Settings 23211.2.1.3 Domain-Specific Modeling Languages 23211.2.1.4 Changing Goals at Runtime 23311.2.1.5 Complex Types of Uncertainties 23311.2.1.6 Control Properties versus Quality Properties 23411.2.1.7 Search-based Techniques 23411.2.2 Challenges Beyond the Current Waves 23511.2.2.1 Exploiting Artificial Intelligence 23511.2.2.2 Dealing with Unanticipated Change 23611.2.2.3 Trust and Humans in the Loop 23611.2.2.4 Ethics for Self-Adaptive Systems 23711.3 Epilogue 239Bibliography 241Index 263
DANNY WEYNS, PHD, is a Professor at Katholieke Universiteit (KU) Leuven, Department of Computer Science, Leuven, Belgium. He obtained his doctorate from KU Leuven. He focuses on software engineering of trustworthy self-adaptive systems, exploiting design models and verification techniques at runtime.