  Self adaptation has been proposed to overcome the complexity of today's
software systems which results from the uncertainty issue. Aspects of
uncertainty include changing systems goals, changing resource availability and
dynamic operating conditions. Feedback control loops have been recognized as
vital elements for engineering self-adaptive systems. However, despite their
importance, there is still a lack of systematic way of the design of the
interactions between the different components comprising one particular
feedback control loop as well as the interactions between components from
different control loops . Most existing approaches are either domain specific
or too abstract to be useful. In addition, the issue of multiple control loops
is often neglected and consequently self adaptive systems are often designed
around a single loop. In this paper we propose a set of design patterns for
modeling and designing self adaptive software systems based on MAPE-K Control
loop of IBM architecture blueprint which takes into account the multiple
control loops issue. A case study is presented to illustrate the applicability
of the proposed design patterns.
