• No results found

Architectural approaches for designing self-adaptive systems make use of the fundamen- tal ingredients of a software architecture [134], i.e. components and connectors, to rea- son about the adaptation mechanism (managing system) and the system being adapted (managed system) and the interconnection between them. Components are computa- tional entities endowed with functional and non-functional properties, hence it is possible to assess their suitability for different context of use. Connectors, on the other hand, are conduits that facilitate flow of control, objects, and messages between components. This distinction between the roles of components and connectors in the classic sense makes it possible to reason separately about the computational and communication requirements of a software system.

By viewing a software from an architectural level of abstraction, it is easier to reason about the various compositions of components and connections that are able to realise

reasoning about a software system without bothering about the low-level details, e.g. al- gorithmic or programming language, of how the software system is implemented. The presence of tools for specifying architectures in the form of Architecture Description Lan- guages (ADL) and verifying the correctness of their specification and properties makes the architectural approach the preferred one [42].

Research has been conducted in communities that specialise in designing algorith- mic techniques for implementing self-adaptive capabilities based on inspiration from non- computing domains. Notable examples of such venues are International Conference on Au- tonomous Agents & Multiagent Systems, International Conference on Self-Adaptive and Self-Organizing Systems, and IEEE Transactions on Evolutionary Computation. Inspired by nature (e.g.[119] amongst others), socio-economics (e.g. [27][108] amongst others), and biology (e.g. [51][151] amongst others), researchers in these communities contribute in- telligent algorithms which are adaptive, scalable, and robust in myriad of scenarios. The interested reader is referred to the survey work of [60] to learn more about research in these areas.

It is worth noting that while problems studied in the aforementioned communities have the same overarching objectives and underlying characteristics (e.g. scalability, ro- bustness etc.) as those studied in this thesis, the purpose of this chapter is to study the principles underlying the building blocks of an autonomic system (i.e. its architecture style) regardless of the computational technique in use. Taking an architectural view to self-adaptation has several benefits. According to [45]

“As an abstract model, an architecture can provide a global perspective of the system and expose important system-level behaviours and properties. As a locus of high-level system design decisions, an architectural model can make a system’s topological and behavioural constraints explicit, establishing an envelope of allowed changes and helping to ensure the validity of a change.”

In order to classify contribution in the space of architectural styles for self-adaptation we characterise their adaptability properties. Characterising adaptability is important in order to: i) understand the impact of adaptability on system’s goals, ii) analyse the trade-

off between system’s adaptiveness and other QoS (e.g. availability, performance), and iii) engineer appropriate level of adaptability for system to self-manage itself at run-time. Architecture metrics for characterising adaptability can be divided into two categories: quantitative and qualitative metrics.

It is infeasible to quantitatively assess an autonomic system at the architecture style level of abstraction, since there is no implemented system in place. Consequently we aim to understand the underlying principles underpinning self-adaptive architecture styles using qualitative measures. Even in implemented self-adaptive systems, it may be hard and expensive to compare quantitative metrics, for example those proposed by [133] [58] [94] and [136], when such systems differ in their adaptation goals. Whereas, qualitative metrics such as level of separation of concern and in-built support for learning are easier to infer and characterise.

We propose a classification framework as shown in figure 3.1 for characterising adapt- ability properties of self-adaptive architecture styles qualitatively.

Framework Level of separation of concern Transparency to user Degree of autonomy Architecture patterns Knowledge representation and trade-off analysis Notion of time Support for learning Emergence

Figure 3.1: Classification Framework for Self-adaptive Architecture Styles

The qualitative metrics shown in figure 3.1 are defined as follows.

1. Level of separation of concern: The self-adaptive system typically consists of an adaptation engine and a managed element [100]. However, in some cases, the adaptation logic could be dispersed in the functional logic of the system, thereby blurring the distinction between the adaptive and non-adaptive parts of the system

[168]. This criterion specifies the level of separation between the adaptive and

n-level(s) of separation, where n is 1,2,3, etc.

2. Transparency to users: This measures the extent to which the architecture per- mits human interference in the adaptation loop, either by allowing them specify the goal of the system or adaptation logic. Also, the ability of the autonomic system to self-report the rationale for its actions to users is also a dimension of trans- parency. Transparency is measured using values: fixed goals, changeable goals, and self-reporting.

3. Degree of autonomy: This criterion determines to what extent the architecture style supports varying level of autonomous behaviour, ranging from zero autonomy to fully autonomous behaviour. Organic computing distinguishes itself by clearly discouraging the idea of fully autonomous behaviour [146]. In contrast controlled self-organisation is promoted in order to provide the external agent (human or auto- mated) specifying the goals of the organic system to switch the autonomic behaviour on or off as desired.

4. Architecture Patterns: The self-adaptive architecture instantiated from an ar- chitecture style can often be organised in a variety of patterns [23] such as cen- tralised, decentralised, hierarchical, and master/slave [168]. This criterion specifies the ability of the style to realise different architecture patterns. We rely on empirical evidence of implementation of the styles, no speculative claims, to determine the value for this criterion.

5. Knowledge representation and trade-off analysis: This criterion determines how the architecture style stores knowledge about the managed system and the adaptation process, and how this knowledge is used to perform run-time trade- off analysis between conflicting adaptation concerns. Permissible values for this criterion are implicit and explicit knowledge representation.

responsibility to manage the timing of its action. For example, monitoring may have to take place at fixed intervals or intervals that have to be learnt by the monitoring mechanism. In the case of hierarchical architecture patterns, adaptation actions at lower levels usually proceed quicker than adaptation actions at upper levels. This criterion specifies the provision of the architecture style to manage timing elements of self-adaptive system’s subcomponents.

7. Support for learning: To adapt correctly in an ever changing, unpredictable envi- ronment, learning is imperative. This criterion specifies the support the architecture style provides for learning i.e. if there is in-built support for learning or none. 8. Emergent self-adaptation: Determines to what extent the architecture style sup-

port bottom-up architecture of self-organising systems that exhibit emergent auto- nomic behaviour. That is, adaptability is realised by the aggregation of simple, local actions of decentralised subcomponents, rather than through a centralised orches- tral. Emergent self-adaptation can be seen in nature [99], a notable example is ant colony’s foraging activity. Where present, we indicate the existence of emergence as a form of self-adaptation.

We reiterate that while other approaches to self-adaptation are useful, this thesis ad- heres to an architectural perspective to self-adaptation given the transparency of reasoning about the adaptation process.