Increased self-awareness in computing systems can be beneficial in several respects, including a greater capacity to adapt, to build potential for future adaptation in unknown environments, and to explain their behaviour to humans and other systems. When attempting to endow computing systems with a form of selfawareness, it is important to have a clear understanding of what that form looks like. This chapter therefore first introduces the general concept of self-awareness and its various facets. Second, we provide an overview of the range of efforts to interpret the concept of self-awareness in computing. Third, we provide a structured conceptual framework that organizes this variety of different forms of self-awareness. This provides a broad set of concepts and a language that can be used to describe and reason about self-aware computing systems.