Self-adaptive systems are those that, unlike traditional software systems, are engineered to be adaptable at runtime and, in fact, adapt themselves in various ways to their changing environment, users, user requirements, and related systems. Adaptation can take many forms: adaption to new data sources and remote services; adaption to changing network, hardware or related software systems; adaption in the presence of uncertainty and/or unreliability of other systems; adaption to new users and user needs; adaption of security, privacy, and trust models and implementations; adaption to improve one or more quality of service attributes; and adaption to handle catastrophic environmental events. Engineering software systems that adapt is hard. A fundamental premise for such systems is a software architecture that encapsulates, and is designed for in some way, adaptation. Some architectures support a wide variety of adaptation, while others are more limited. In either circumstance, there will be inherent trade-offs that need to be made by the architects to achieve the necessary kinds of adaption and the supporting software and systems infrastructure required to achieve it. Analyzing and managing these trade-offs is also very hard. A great deal of research and practice interest has been focused on this problem due to its increasing need in a wide variety of contexts. These include cloud-based systems, mobile applications, security- and safety-critical systems, and the emerging Internet of Things. Our goal in this book is to collect chapters on architecting for adaptability and, more specifically, how to manage trade-offs between functional requirements and multiple quality requirements in adaptable software architectures. The intention of this book is to collect state-ofthe- art knowledge on: • what it means to architect a system for adaptability; • software architecture for self-adaptive systems; • what trade-offs are involved and how can one balance these; • general models of self-adaptive systems; • architectural patterns for self-adaptive systems; • how to intertwine business goals and software quality requirements with adaptable software architectures; • how quality attributes are exhibited by the architecture of the system; • how to connect the quality of a software architecture to system architecture or other system considerations; • what are the major challenges of engineering adaptive software architectures; • what techniques are required to achieve quality management in architecting for adaptability; • the best ways to apply adaptation techniques effectively in systems such as cloud, mobile, cyber-physical, and ultra-large-scale/internet-scale systems; • the approaches that can be employed to assess the value of total quality management in a software development process, with an emphasis on adaptable software architecture; and • case studies of successful (or unsuccessful but useful lessons learned) application of trade-offs in designing, developing, and deploying adaptive systems. The book is arranged into four parts. Part I reviews key concepts and models for self-adaptive software architectures. This includes key approaches to architecting systems for adaptation; tackling uncertainty when architecting self-adaptive systems; viewpoint modeling for dynamically modifiable software systems; and adaptive security for software systems. Part II focuses on analysis and trade-offs in selfadaptive software systems. This includes the use of automation in terms of inference techniques to support architecting of adaptable systems; managing trade-offs when dealing with the human element of adaptive systems; elicitation and evaluation of discovered trade-offs when architecting such systems; analysis for self-adaptive software architectures; and adaptive architectures for scalable software-as-a-service based systems. Part III examines the management of trade-offs for self-adaptive software architectures. A systematic mapping study reviews the large body of work in this area to date and formulates key contributions and research gaps. Also in this part is a requirements-driven approach to mediation solutions. Finally, Part IV addresses the issue of quality assurance for self-adaptive software architectures. Quality evaluation mechanisms are reviewed, compared, and contrasted.
|Place of Publication||USA|
|Number of pages||430|
|Publication status||Published - 11 Aug 2016|