• No results found

This chapter systematically reviewed the landscape of SLA-based cloud research with the view of answering research questions which are pertinent to this thesis. From the systematic review, it was found that MAPE-K [100] and its variants are the prominent self- adaptive architecture style in use in SLA-based cloud research. The result also indicated that knowledge representation at the architecture level and decentralised self-adaptive software architecture have received little attention.

Findings from the review provide evidence to support the claim that existing architec- ture styles offer limited primitives for granular knowledge representation and design-time trade-off analysis of self-adaptive architectures. Ergo, we motivate the need for a novel architectural approach that addresses these limitations.

From the foregoing limitations, our research pursues the goal of exploiting principles in self-awareness to arrive at new architectural patterns that caters for fine-grained knowl- edge representation and decentralised control (chapter 3 and 4). Our reputation-aware market-based mechanism complements the novel architecture patterns by providing scal- able and robust coordination of components in decentralised architectures (chapter 5). The novel architectural patterns are used as foundation for architecting an exemplar fed- erated online shopping cloud application (chapter 5) and qualitatively compared to two classic architecture styles to unveil its strengths and weaknesses (chapter 6).

CHAPTER 3

ARCHITECTURE-BASED SELF-ADAPTATION

STYLES

“All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.”

Grady Booch

3.1

Overview of the Chapter

In chapter 2, using a systematic review methodology we have identified limitations of existing self-adaptive architectures for service level management in cloud computing. In this chapter, we conduct a deeper study of architecture styles for designing self-adaptive systems. More formally, “an architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of con- straints on how they can be combined” [79]. A style defines a collection of architectural design decisions that are applicable within a given context (e.g. problem domain), the constraints on a particular system within that context, and elicits the beneficial qualities to be realised in the resulting system [160]. When architecture styles are specialised for a particular problem domain, they are sometimes referred to as reference architectures [79]. Since the focus of this thesis is on self-adaptive architectures, we therefore use the terms

‘architecture style’ and ‘reference architecture’ for self-adaptive systems interchangeably. Architecture styles are a useful way of specifying, designing, building, analysing, and evolving a software system relative to some constraints or trade-offs. By adopting an ar- chitecture style, a software architect can reason about the functional and non-functional requirements of the system-to-be designed and the associated trade-offs. Software archi- tects are not mandated to faithfully implement every aspect of the architecture style upon which their system is built. Rather, architecture styles provide a set of guiding principles and rationale about what is achievable, how trade-off in design decisions can be analysed, and their impact on stakeholders’ quality concerns. In practice, software architects are pragmatic in the selection and instantiation of architecture styles. Key considerations are the constraints imposed by the software system-to-be designed, the characteristics of the users and the deployment environment in which the system will be deployed.

Researchers have conducted surveys of models, methods, and architectures for self- adaptive systems, e.g., [60][89][132][143][42], however, none of these studies reflect on architecture styles from the perspective of their applicability to the cloud computing domain. As an example, the software engineering roadmap on self-adaptive systems [111] motivates the importance of control loops in the engineering of self-adaptive software systems and presents architecture patterns within the context of the MAPE architecture style. This effort complements the work presented in this chapter, since we study, in- depth, the general principles underlying a broader set of architecture styles and compare them in order to assess their adaptive capabilities.

As it was observed in chapter 2, many of the existing work on self-adaptive architec- ture for service level management in cloud are instances of the MAPE architecture style. It is worthwhile to consider the potential benefits or drawbacks of realising alternative architecture styles. Consequently, this chapter takes a broader perspective than previous surveys by studying representative self-adaptive architecture styles, followed by a com- parative analysis based on metrics that define their adaptive capabilities. Following the comparative analysis, we deduced gaps in the state of the art.

Specifically, the contributions and structure of this chapter is as follows.

1. We define a framework, in section 3.2, for classifying the literature on self-adaptive architecture styles.

2. We study prominent architecture styles in self-adaptive software system domain (section 3.3). In each case, we identify the objectives of the style, discuss its pros and cons, and review examples of its application to various problem domains. 3. We compare the studied architecture styles and qualitatively measure their strengths

and weaknesses within the context of our classification framework (section 3.4). 4. Gaps in state of the art self-adaptive architecture styles are identified, and their

implication for service level management in cloud elicited (section 3.5).