system development. It aims to (i) increase reliability by
designing systems to be self-protecting and self-healing;
and (ii) increase autonomy and performance by
enabling systems to adapt to changing circumstances,
using self-configuring and self-optimizing mechanisms.
This paper discusses the type of system architecture
needed to support such objectives.
1. Introduction
Computing systems are expected to be effective. This
means that they serve a useful purpose when they are
first introduced and continue to be useful as conditions
change. Autonomic Computing, launched by IBM in
2001 [1], is emerging as a valuable new approach to the
design of effective computing systems.
The autonomic concept is inspired by the human
body’s autonomic nervous system. By analogy, humans
have good mechanisms for adapting to changing
environments and repairing minor physical damage. It is
hoped that computing systems can be developed with
similar properties.
It is likely that many branches of computer science
research and development will contribute to progress in
autonomic computing. In particular, it brings together
work in software engineering and artificial intelligence
[2]. Research on dependable systems should be
especially influential, as dependability covers many
relevant system properties such as reliability,
availability, safety, security, survivability and
maintainability [3]-[5].
This paper discusses the general architecture of an
autonomic system. It first clarifies the basic
requirements and activities of such systems and then
considers possible supporting elements. These ideas
combine existing suggestions for autonomic system
structure with work in other research areas.
2 Autonomic System Architecture
Figure 1 summarizes the general properties of
autonomic systems [5]. Essentially, the objectives
represent broad system requirements while the attributes
identify basic implementation mechanisms.
Figure 1 Autonomic Computing Tree
An autonomic system is self-managing, meaning that
it is self-protecting, self-configuring, self-healing and
self-optimizing.
Self-healing is concerned with ensuring effective
recovery when a fault occurs. This means successfully
identifying the fault and then, where possible, repairing
it. Also, there should be minimal disruption to users,
avoiding loss of data and significant delays in
processing.
Self-optimization means that a system is aware of its
ideal performance, can measure its current performance
against that ideal and has strategies for attempting
improvements.