The complexity of current software-based systems has led the software engineering community to look for inspiration in diverse related fields (e.g., robotics, artificial intelligence) as well as other areas (e.g., biology) to find new ways of designing and managing systems and services.
2. The complexity of current software-based systems has
led the software engineering community to look for
inspiration in diverse related fields (e.g., robotics,
artificial intelligence) as well as other areas (e.g.,
biology) to find new ways of designing and managing
systems and services.
Self-adaptation
Has become one of the most promising directions.
The capability of the system to adjust its behaviour in
response to its perception of the environment.
3. The development of self-adaptive systems can be
viewed from two perspectives:
top-down when considering an individual system
assess their own behaviour and change it when the
assessment indicates a need to adapt due to evolving
functional or non-functional requirements
bottom-up when considering cooperative systems
The global behaviour of the system emerges from these
local interactions.
4. Requirements
- state of the art
- research challenges
Engineering
- state of the art
- research challenges
5. Requirements engineering for self-adaptive systems,
therefore, must address what adaptations are possible
and what constrains how those adaptations are carried
out.
In short, requirements engineering for self-adaptive
systems must deal with uncertainty because the
expectations on the environment frequently vary over
time.
6. That is, we cannot anticipate requirements for the
entire set of possible environmental conditions and
their respective adaptation specifications.
For example, if a system is to respond to cyber-attacks,
one cannot possibly know all attacks in advance since
malicious actors develop new attack types all the time.
As a result, requirements for self-adaptive systems may
involve degrees of uncertainty or may necessarily be
specified as “incomplete".
7. A New Requirements Language
Mapping to Architecture
Managing Uncertainty
Online Goal Refinement
Traceability from Requirements to
Implementation
8. Preliminary consideration
Any attempt to automate self-adaptive systems necessarily
has to consider feed-back loops. We focus on the feed-back
loop - a concept that is elevated to a first-class entity in
control engineering - when engineering self-adaptive
software systems.
Commonalities of self-adaptive systems
What self-adaptive systems have in common is that design
decisions are moved towards runtime and that the system
reasons about its state and environment. The reasoning
typically involves feedback processes with four key
activities: collect, analyze, decide, and act
9.
10. For example, keeping web services up and running for
a long time requires:
collecting of information that reflects the current state
of the system,
analysis of that information to diagnose performance
problems or to detect failures, deciding how to resolve
the problem (e.g., via dynamic load-balancing or
healing),
and acting to effect the made decision.
11. When engineering a self-adaptive system, questions
about these properties become important.
The feedback cycle starts with the collection of
relevant data from environmental sensors and other
sources that reflect the current state of the system.
Some of the engineering questions that need be
answered are: How reliable is the sensor data?
12. Tight-coupling between application code and
adaptation logic
Significant development effort to explicitly model the
numerous potential states and paths from one state to
a new state.
Trace the self-adaptive requirements to
implementation elements
13. Autonomic computing seeks to improve computing
systems with a similar aim of decreasing human
involvement.
The term “autonomic” comes from biology.
In the human body, the autonomic nervous system takes care
of unconscious reflexes, that is, bodily functions that do not
require our attention
The term autonomic computing was first used by IBM in
2001 to describe computing systems that are said to be self-
managing.
14. Autonomic computing aims at providing systems
with self-management capabilities
self-configuration (automatic configuration according
to a specified policy)
self-optimization (continuous performance
monitoring)
self-healing (detecting defects and failures, and taking
corrective actions)
self-protection (taking preventive measures and
defending against malicious attacks)