Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Managing Trade-offs in Adaptable Software Architectures
Managing Trade-offs in Adaptable Software Architectures
Managing Trade-offs in Adaptable Software Architectures
Ebook935 pages9 hours

Managing Trade-offs in Adaptable Software Architectures

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Managing Trade-Offs in Adaptable Software Architectures explores the latest research on adapting large complex systems to changing requirements. To be able to adapt a system, engineers must evaluate different quality attributes, including trade-offs to balance functional and quality requirements to maintain a well-functioning system throughout the lifetime of the system.

This comprehensive resource brings together research focusing on how to manage trade-offs and architect adaptive systems in different business contexts. It presents state-of-the-art techniques, methodologies, tools, best practices, and guidelines for developing adaptive systems, and offers guidance for future software engineering research and practice.

Each contributed chapter considers the practical application of the topic through case studies, experiments, empirical validation, or systematic comparisons with other approaches already in practice. Topics of interest include, but are not limited to, how to architect a system for adaptability, software architecture for self-adaptive systems, understanding and balancing the trade-offs involved, architectural patterns for self-adaptive systems, 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, and more.

  • Explains software architectural processes and metrics supporting highly adaptive and complex engineering
  • Covers validation, verification, security, and quality assurance in system design
  • Discusses domain-specific software engineering issues for cloud-based, mobile, context-sensitive, cyber-physical, ultra-large-scale/internet-scale systems, mash-up, and autonomic systems
  • Includes practical case studies of complex, adaptive, and context-critical systems
LanguageEnglish
Release dateAug 12, 2016
ISBN9780128028919
Managing Trade-offs in Adaptable Software Architectures

Related to Managing Trade-offs in Adaptable Software Architectures

Related ebooks

Programming For You

View More

Related articles

Reviews for Managing Trade-offs in Adaptable Software Architectures

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Managing Trade-offs in Adaptable Software Architectures - Ivan Mistrik

    2016

    Preface

    J. Grundy; I. Mistrik; B. Schmerl; R. Kazman; N. Ali

    Introduction

    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-of-the-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 self-adaptive 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.

    Part I: Concepts and Models for Self-Adaptive Software Architectures

    Chapter 1 is by the editors and provides a review of the concepts of self-adaptive software architectures, their history, key features, some of the key challenges in managing trade-offs, and what we see as some of the major outstanding areas for research and practice in this domain. We first review some of the key prior work in architecting self-adaptive systems that has been published to date. We then discuss the body of work that has looked at the issue of managing trade-offs when designing such self-adaptive software systems. Trade-off management at run time in particular is then discussed including many outstanding challenges that exist in this domain. We then outline a set of research challenges that should lead us as a community to a better vision for managing trade-offs in self-adaptive systems.

    Chapter 2, by Villegas, Tamura, and Muller, provides an overview of architecting software systems for runtime self-adaptation: concepts, models, instrumentation and challenges. In this chapter the authors introduce practitioners, researchers, and students to foundational concepts and reference models associated with the architecture of self-adaptive software. It also presents challenges related to the design of software architectures that enable self-adaptation of software systems at execution time. They first introduce a running example to illustrate the studied concepts. They then explore the meanings of adaptation and self-adaptation as well as the differences between these two concepts. They explain fundamental concepts for architecting self-adaptive software systems and then present a set of reference models and architectures relevant to the engineering of self-adaptive software. Finally they discuss major challenges regarding the architecting of complex software systems for self-adaptation.

    Chapter 3, by Hezavehi, Avgeriou, and Weyns, provides a classification of current architecture-based approaches. In this chapter the authors review the state-of-the-art of architecture-based approaches tackling uncertainty in self-adaptive systems with multiple quality requirements, propose a classification framework for this domain, and classify the current approaches according to their new framework. To do this they conducted a systematic literature review by performing an automatic search on 27 selected venues and books in the domain of self-adaptive systems. From detailed analysis of this review they propose a novel classification framework for uncertainty and its sources in the domain of architecture-based self-adaptive systems with multiple quality requirements. They map their identified primary studies into their new framework and present the classified results. Results from this review will help researchers to understand the current state of research regarding uncertainty in architecture-based self-adaptive systems with multiple concerns, and identity areas for improvement in the future.

    Chapter 4, adaptability viewpoint for modeling dynamically configurable software architectures, is authored by Tekinerdogan and Sozer. In this chapter the authors introduce an adaptability viewpoint that can be used for modeling dynamically configurable software architectures. They then illustrate the use of the viewpoint for a demand-driven supply chain management system. To represent runtime adaptability concerns more explicitly, the authors argue that an explicit dedicated architectural view is required to model the decomposition of the architecture based on the runtime adaptability concern. To this end they introduce a new runtime adaptability viewpoint that can be used for modeling dynamically configurable software architectures. This viewpoint has been defined via domain analysis of dynamic configurability and software architecture viewpoint modeling. The viewpoint is based on a meta-model that defines the underlying semantics. The authors first provide a background about architecture viewpoints and then introduce their supply chain system case study as a motivating example where runtime adaptability becomes a critical concern. They describe key related concepts and a meta-model for their runtime adaptability viewpoint and then introduces a concrete notation and a method for applying this viewpoint. The case study is then described by application of the viewpoint.

    Chapter 5 is authored by Almorsy, Grundy, and Ibrahim, and describes a new framework for supporting adaptive security for software systems. In this chapter the authors discuss the needs for adaptive software security, and key efforts that have been made to date in this area. They then introduce a novel runtime adaptive security engineering approach that enables adapting software security capabilities at runtime based on new security objectives, risks/threats, and requirements, as well as newly reported vulnerabilities. The authors then categorize the source of adaptation in terms of manual adaptation (managed by end users), and automated adaption (automatically triggered by the supporting platform). They describe the application of their approach to a large case study and discuss its strengths, limitations, and areas for further enhancement.

    Part II: Analyzing and Evaluating Trade-offs in Self-Adaptive Software Architectures

    Chapter 6, by Malek, Canavera, and Esfahani, describes the use of automated inference techniques to assist with construction of adaptable software architectures. The authors state that state-of-the-art in engineering self-adaptive software systems involves manual construction of numerous models, which are then used at runtime for making and effecting adaptation decisions. They show that the construction of such models is unwieldy and impractical for use by practitioners and describe an alternative approach for engineering adaptive software that aims to alleviate the challenges of manually developing such models using inference techniques to automatically derive the models necessary for building an adaptive architecture. A machine-learning approach is used to automatically derive the models predicting the impact of architectural change on the system’s quality objectives. These types of models are used to make adaptation decisions to fix problems that may arise at runtime. A data-mining approach is then used to derive automatically the models expressing the probabilistic dependencies between the architectural elements of the system. These types of models are used to ensure changes in the running software do not create inconsistency, and jeopardize its functionality. The chapter discusses some remaining research challenges and areas of future research in employing automated inference techniques in the construction of adaptive architectures.

    Chapter 7 focuses on evaluating trade-offs of human involvement in self-adaptive systems, and is authored by Cámara, Moreno, Garlan, Moreno, and Schmerl. In this chapter the authors we identify various roles that can perform in cooperating with self-adaptive systems. They focus on humans as effectors—doing tasks which are difficult or infeasible to automate—and describe how they modified their own self-adaptive framework to involve human operators in this way. This involved choosing suitable human models and integrating them into the existing utility trade-off decision models of their tool. They used probabilistic modeling and quantitative verification to analyze the trade-offs of involving humans in adaptation. They then complement their study with experiments to show how different business preferences and modalities of human involvement may result in different outcomes.

    Chapter 8, principled eliciting and evaluation of trade-offs when designing self-adaptive systems architectures, is by Andrade and Macêdo. The authors present a systematic approach for design and analysis of self-adaptive systems architectures. This approach enables the representation of refined knowledge as structured design spaces and relies on the use of multiobjective optimization mechanisms to elicit and evaluate the involved quality attributes trade-offs. The authors present the key requirements for an automated approach for software architecture design and analysis and detail the underlying mechanisms and technologies adopted. They describe in detail how they have used their infrastructure to automate the design of self-adaptive systems. The authors validate their approach for effectiveness by using particular optimization performance indicators, as well as in functional prototypes of self-adaptive web servers and elastic platforms for distributed MapReduce

    Enjoying the preview?
    Page 1 of 1