Designing Self-adaptive System using Control Loops

Self-adaptive System consists of Adaptation Engine and Adaptable Software.
Adaptable Software is implemented by a set of control loops.
We define a process of elaboration for the goal model that extracts a set of
control loops from the requirements descriptions as components that constitute
extensible systems [1]. A control loop is a cyclic activity flow based on
the process control model, which is a model for defining system behaviors. A
controller in the model forms a (control) loop consisting of four key
activities: collect, analyze, decide, and act. This cycle starts with a
collection of relevant data that reflects the current state of the system. The
system analyzes the collected data and adjusts its behavior to achieve its
goals. After that, the system acts in a way that reflects decisions.
We regard such control loops to be independent components that prevent the
impact of a change from spreading outside them. When additional requirements
appear, new control loops are easy to embed into a system constructed with
multiple control loops. Even if the requirements change, the idea of
compositional control loops can easily accommodate these changes simply by
updating the relevant control loops. We devised a goal model compiler [2]
to enable partial design models to be extracted for each evolution and built a
programming framework [3] that enables execution of multiple control
loops. The goal model compiler identifies multiple control loops from
goal-oriented requirements descriptions.