Self-adaptive systems: A survey of current approaches, research challenges and applications
Expert systems with applications
Self-adaptive software is capable of evaluating and changing its own behavior, whenever the evaluation shows that the software is not accomplishing what it was intended to do, or when better functionality or performance may be possible. The topic of system adaptivity has been widely studied since the mid-60s and, over the past decade, several application areas and technologies relating to self-adaptivity have assumed greater importance. In all these initiatives, software has become the common
... ement that introduces self-adaptability. Thus, the investigation of systematic software engineering approaches is necessary, in order to develop self-adaptive systems that may ideally be applied across multiple domains. The main goal of this study is to review recent progress on self-adaptivity from the standpoint of computer sciences and cybernetics, based on the analysis of state-of-the-art approaches reported in the literature. This review provides an over-arching, integrated view of computer science and software engineering foundations. Moreover, various methods and techniques currently applied in the design of self-adaptive systems are analyzed, as well as some European research initiatives and projects. Finally, the main bottlenecks for the effective application of self-adaptive technology, as well as a set of key research issues on this topic, are precisely identified, in order to overcome current constraints on the effective application of self-adaptivity in its emerging areas of application. j o u r n a l h o m e p a g e : w w w . e l s e v i e r . c o m / l o c a t e / e s w a prevent the immediate inclusion of self-adaptivity software into worldwide technology are also discussed. The rest of this paper is organized as follow. Some definitions of self-adaptativity are discussed in Section 2. Section 3 focuses on the self-adaptive capabilities of complex systems, the main tools, and their methods, which range from traditional to recent approaches. Section 4 explores the main applications or application domains, as well as challenges and research opportunities in selfadaptivity that may take us beyond state-of-the-art applications in the near future. Finally, a few concluding remarks discuss current and future directions for further research. Self-adaptivity: some definitions Biology and nature offer plenty of powerful mechanisms, refined by evolutionary processes over millions of years, to handle emergent and evolving environments (Leitao, 2009 ). These natural self-adaptive systems have attracted the attention of software designers, because of the ease with which they can change their own behavior in response to changes in their environment (Nakagawa, Ohsuga, & Honiden, 2008) . This review of the literature on self-adaptivity has identified numerous definitions, a detailed discussion of which is beyond the scope of this paper. Here, we enumerate only some of the most commonly accepted definitions.