An introduction to self-adaptive systems : a contemporary software engineering perspective /
Danny Weyns.
- 1 PDF.
Includes bibliographical references and index.
Foreword xi -- Acknowledgments xv -- Acronyms xvii -- Introduction xix -- 1 Basic Principles of Self-Adaptation and Conceptual Model 1 -- 1.1 Principles of Self-Adaptation 2 -- 1.2 Other Adaptation Approaches 4 -- 1.3 Scope of Self-Adaptation 5 -- 1.4 Conceptual Model of a Self-Adaptive System 5 -- 1.4.1 Environment 5 -- 1.4.2 Managed System 7 -- 1.4.3 Adaptation Goals 8 -- 1.4.4 Feedback Loop 8 -- 1.4.5 Conceptual Model Applied 10 -- 1.5 A Note on Model Abstractions 11 -- 1.6 Summary 11 -- 1.7 Exercises 12 -- 1.8 Bibliographic Notes 14 -- 2 Engineering Self-Adaptive Systems: A Short Tour in Seven Waves 17 -- 2.1 Overview of the Waves 18 -- 2.2 Contributions Enabled by the Waves 20 -- 2.3 Waves Over Time with Selected Work 20 -- 2.4 Summary 22 -- 2.5 Bibliographic Notes 23 -- 3 Internet-of-Things Application 25 -- 3.1 Technical Description 25 -- 3.2 Uncertainties 28 -- 3.3 Quality Requirements and Adaptation Problem 29 -- 3.4 Summary 29 -- 3.5 Exercises 30 -- 3.6 Bibliographic Notes 31 -- 4 Wave I: Automating Tasks 33 -- 4.1 Autonomic Computing 34 -- 4.2 Utility Functions 35 -- 4.3 Essential Maintenance Tasks for Automation 37 -- 4.3.1 Self-Optimization 37 -- 4.3.2 Self-Healing 38 -- 4.3.3 Self-Protection 40 -- 4.3.4 Self-Configuration 42 -- 4.4 Primary Functions of Self-Adaptation 43 -- 4.4.1 Knowledge 44 -- 4.4.2 Monitor 46 -- 4.4.3 Analyzer 47 -- 4.4.4 Planner 49 -- 4.4.5 Executor 51 -- 4.5 Software Evolution and Self-Adaptation 52 -- 4.5.1 Software Evolution Management 53 -- 4.5.2 Self-Adaptation Management 54 -- 4.5.3 Integrating Software Evolution and Self-Adaptation 55 -- 4.6 Summary 56 -- 4.7 Exercises 59 -- 4.8 Bibliographic Notes 60 -- 5 Wave II: Architecture-based Adaptation 63 -- 5.1 Rationale for an Architectural Perspective 64 -- 5.2 Three-Layer Model for Self-Adaptive Systems 66 -- 5.2.1 Component Control 67 -- 5.2.2 Change Management 67 -- 5.2.3 Goal Management 68 -- 5.2.4 Three-Layer Model Applied to DeltaIoT 68 -- 5.2.5 Mapping Between the Three-Layer Model and the Conceptual Model for Self-Adaptation 70. 5.3 Reasoning about Adaptation using an Architectural Model 70 -- 5.3.1 Runtime Architecture of Architecture-based Adaptation 71 -- 5.3.2 Architecture-based Adaptation of the Web-based Client-Server System 73 -- 5.4 Comprehensive Reference Model for Self-Adaptation 75 -- 5.4.1 Reflection Perspective on Self-Adaptation 76 -- 5.4.2 MAPE-K Perspective on Self-Adaptation 78 -- 5.4.3 Distribution Perspective on Self-Adaptation 79 -- 5.5 Summary 83 -- 5.6 Exercises 84 -- 5.7 Bibliographic Notes 87 -- 6 Wave III: Runtime Models 89 -- 6.1 What is a Runtime Model? 90 -- 6.2 Causality and Weak Causality 90 -- 6.3 Motivations for Runtime Models 91 -- 6.4 Dimensions of Runtime Models 92 -- 6.4.1 Structural versus Behavioral 93 -- 6.4.2 Declarative versus Procedural 94 -- 6.4.3 Functional versus Qualitative 95 -- 6.4.3.1 Functional Models 95 -- 6.4.3.2 Quality Models 95 -- 6.4.4 Formal versus Informal 98 -- 6.5 Principal Strategies for Using Runtime Models 101 -- 6.5.1 MAPE Components Share K Models 101 -- 6.5.2 MAPE Components Exchange K Models 103 -- 6.5.2.1 Runtime Models 103 -- 6.5.2.2 Components of the Managing System 104 -- 6.5.3 MAPE Models Share K Models 105 -- 6.6 Summary 108 -- 6.7 Exercises 109 -- 6.8 Bibliographic Notes 114 -- 7 Wave IV: Requirements-driven Adaptation 115 -- 7.1 Relaxing Requirements for Self-Adaptation 116 -- 7.1.1 Specification Language to Relax Requirements 116 -- 7.1.1.1 Language Operators for Handling Uncertainty 116 -- 7.1.1.2 Semantics of Language Primitives 118 -- 7.1.2 Operationalization of Relaxed Requirements 118 -- 7.1.2.1 Handing Uncertainty 118 -- 7.1.2.2 Requirements Reflection and Mitigation Mechanisms 119 -- 7.1.2.3 A Note on the Realization of Requirements Reflection 121 -- 7.2 Meta-Requirements for Self-Adaptation 122 -- 7.2.1 Awareness Requirements 123 -- 7.2.2 Evolution Requirements 124 -- 7.2.3 Operationalization of Meta-requirements 126 -- 7.3 Functional Requirements of Feedback Loops 127 -- 7.3.1 Design and Verify Feedback Loop Model 128. 7.3.2 Deploy and Execute Verified Feedback Loop Model 130 -- 7.4 Summary 131 -- 7.5 Exercises 132 -- 7.6 Bibliographic Notes 134 -- 8 Wave V: Guarantees Under Uncertainties 137 -- 8.1 Uncertainties in Self-Adaptive Systems 139 -- 8.2 Taming Uncertainty with Formal Techniques 141 -- 8.2.1 Analysis of Adaptation Options 141 -- 8.2.2 Selection of Best Adaptation Option 143 -- 8.3 Exhaustive Verification to Provide Guarantees for Adaptation Goals 144 -- 8.4 Statistical Verification to Provide Guarantees for Adaptation Goals 149 -- 8.5 Proactive Decision-Making using Probabilistic Model Checking 154 -- 8.6 A Note on Verification and Validation 160 -- 8.7 Integrated Process to Tame Uncertainty 160 -- 8.7.1 Stage I: Implement and Verify the Managing System 161 -- 8.7.2 Stage II: Deploy the Managing System 162 -- 8.7.3 Stage III: Verify Adaptation Options, Decide, and Adapt 163 -- 8.7.4 Stage IV: Evolve Adaptation Goals and Managing System 163 -- 8.8 Summary 164 -- 8.9 Exercises 165 -- 8.10 Bibliographic Notes 168 -- 9 Wave VI: Control-based Software Adaptation 171 -- 9.1 A Brief Introduction to Control Theory 173 -- 9.1.1 Controller Design 174 -- 9.1.2 Control Properties 175 -- 9.1.3 SISO and MIMO Control Systems 176 -- 9.1.4 Adaptive Control 177 -- 9.2 Automatic Construction of SISO Controllers 177 -- 9.2.1 Phases of Controller Construction and Operation 178 -- 9.2.2 Model Updates 179 -- 9.2.3 Formal Guarantees 181 -- 9.2.4 Example: Geo-Localization Service 183 -- 9.3 Automatic Construction of MIMO Controllers 184 -- 9.3.1 Phases of Controller Construction and Operation 184 -- 9.3.2 Formal Guarantees 186 -- 9.3.3 Example: Unmanned Underwater Vehicle 186 -- 9.4 Model Predictive Control 189 -- 9.4.1 Controller Construction and Operation 189 -- 9.4.2 Formal Assessment 191 -- 9.4.3 Example: Video Compression 192 -- 9.5 A Note on Control Guarantees 194 -- 9.6 Summary 194 -- 9.7 Exercises 196 -- 9.8 Bibliographic Notes 199 -- 10 Wave VII: Learning from Experience 201 -- 10.1 Keeping Runtime Models Up-to-Date Using Learning 203. 10.1.1 Runtime Quality Model 204 -- 10.1.2 Overview of Bayesian Approach 205 -- 10.2 Reducing Large Adaptation Spaces Using Learning 208 -- 10.2.1 Illustration of the Problem 208 -- 10.2.2 Overview of the Learning Approach 210 -- 10.3 Learning and Improving Scaling Rules of a Cloud Infrastructure 213 -- 10.3.1 Overview of the Fuzzy Learning Approach 214 -- 10.3.1.1 Fuzzy Logic Controller 214 -- 10.3.1.2 Fuzzy Q-learning 217 -- 10.3.1.3 Experiments 221 -- 10.4 Summary 223 -- 10.5 Exercises 225 -- 10.6 Bibliographic Notes 226 -- 11 Maturity of the Field and Open Challenges 227 -- 11.1 Analysis of the Maturity of the Field 227 -- 11.1.1 Basic Research 227 -- 11.1.2 Concept Formulation 228 -- 11.1.3 Development and Extension 229 -- 11.1.4 Internal Enhancement and Exploration 229 -- 11.1.5 External Enhancement and Exploration 230 -- 11.1.6 Popularization 230 -- 11.1.7 Conclusion 231 -- 11.2 Open Challenges 231 -- 11.2.1 Challenges Within the Current Waves 231 -- 11.2.1.1 Evidence for the Value of Self-Adaptation 231 -- 11.2.1.2 Decentralized Settings 232 -- 11.2.1.3 Domain-Specific Modeling Languages 232 -- 11.2.1.4 Changing Goals at Runtime 233 -- 11.2.1.5 Complex Types of Uncertainties 233 -- 11.2.1.6 Control Properties versus Quality Properties 234 -- 11.2.1.7 Search-based Techniques 234 -- 11.2.2 Challenges Beyond the Current Waves 235 -- 11.2.2.1 Exploiting Artificial Intelligence 235 -- 11.2.2.2 Dealing with Unanticipated Change 236 -- 11.2.2.3 Trust and Humans in the Loop 236 -- 11.2.2.4 Ethics for Self-Adaptive Systems 237 -- 11.3 Epilogue 239 -- Bibliography 241 -- Index 263.
Restricted to subscribers or individual electronic text purchasers.
A concise and practical introduction to the foundations and engineering principles of self-adaptation Though it has recently gained significant momentum, the topic of self-adaptation remains largely under-addressed in academic and technical literature. This book changes that. Using a systematic and holistic approach, An Introduction to Self-adaptive Systems: A Contemporary Software Engineering Perspective provides readers with an accessible set of basic principles, engineering foundations, and applications of self-adaptation in software-intensive systems. It places self-adaptation in the context of techniques like uncertainty management, feedback control, online reasoning, and machine learning while acknowledging the growing consensus in the software engineering community that self-adaptation will be a crucial enabling feature in tackling the challenges of new, emerging, and future systems. The author combines cutting-edge technical research with basic principles and real-world insights to create a practical and strategically effective guide to self-adaptation. He includes features such as: . An analysis of the foundational engineering principles and applications of self-adaptation in different domains, including the Internet-of-Things, cloud computing, and cyber-physical systems. End-of-chapter exercises at four different levels of complexity and difficulty. An accompanying author-hosted website with slides, selected exercises and solutions, models, and code Perfect for researchers, students, teachers, industry leaders, and practitioners in fields that directly or peripherally involve software engineering, as well as those in academia involved in a class on self-adaptivity, this book belongs on the shelves of anyone with an interest in the future of software and its engineering.