  A self-adaptive software system modifies its behavior at runtime in response
to changes within the system or in its execution environment. The fulfillment
of the system requirements needs to be guaranteed even in the presence of
adverse conditions and adaptations. Thus, a key challenge for self-adaptive
software systems is assurance. Traditionally, confidence in the correctness of
a system is gained through a variety of activities and processes performed at
development time, such as design analysis and testing. In the presence of
selfadaptation, however, some of the assurance tasks may need to be performed
at runtime. This need calls for the development of techniques that enable
continuous assurance throughout the software life cycle. Fundamental to the
development of runtime assurance techniques is research into the use of models
at runtime (M@RT). This chapter explores the state of the art for usingM@RT to
address the assurance of self-adaptive software systems. It defines what
information can be captured by M@RT, specifically for the purpose of assurance,
and puts this definition into the context of existing work. We then outline key
research challenges for assurance at runtime and characterize assurance
methods. The chapter concludes with an exploration of selected application
areas where M@RT could provide significant benefits beyond existing assurance
techniques for adaptive systems.
