Self-Awareness as a Prerequisite for Self-Adaptivity in Computing Systems

Establishing a better understanding of self-aware and self-adaptive systems is the first step towards specifying, modelling, designing and engineering these systems in the future. Although there might be some intuition behind the notions of awareness and adaptivity, there is a lack of clear definition and differentiation of these terms. In particular, the notion of awareness has been extensively studied in psychology and philosophy; however, a more rigorous understanding of this terminology is necessary for scientific debates in engineering. In this paper, by giving insights into how self-adaptive systems differ from the ordinary systems that are considered as non-adaptive, we set the foundation for understanding and differentiating self-awareness and self-adaptivity as two correlated but still different terms. We identify the system's self-awareness as a prerequisite for self-adaptivity and define two levels of awareness in computing systems.