Making Self-Adaptation an Engineering Reality [chapter]

Shang-Wen Cheng, David Garlan, Bradley Schmerl
2005 Lecture Notes in Computer Science  
In this paper, we envision a world where a software engineer could take an existing software system, specify, for a set of properties of interest, an objective, conditions for change, and strategies for their adaptation and, within a few man weeks, make that system self-adaptive where it was not before. We describe how our approach generalizes to different classes of systems and holds promise for cost-effective, dynamic system self-adaptation to become an engineering reality. 2 Shang-Wen Cheng,
more » ... David Garlan, Bradley Schmerl highly mobile users operate in heterogeneous environments under resource constraints, also motivates the need for self-adaptive systems. Finally, leading software companies like IBM [11] are pursuing ways to develop "self-managing and self-provisioning" infrastructure to help businesses streamline IT operations [10] . Over the past decade, engineers and researchers alike have responded to and met this self-adaptation need in somewhat limited forms through programming language features such as exceptions and in algorithms such as fault-tolerant protocols. But these mechanisms are often highly specific to the application and tightly bound to the code. As a result, self-adaptation in today's systems is costly to build, often taking many man-months to retrofit systems with the capabilities. Moreover, once added, the capabilities are difficult to modify and usually provide only localized treatment of system errors [14, 27] . How might we achieve the kind of envisioned capabilities for self-adaptation? Clearly there are many lines of research that must contribute, including (a) new mechanisms for monitoring the behavior of systems in order to detect when problems occur; (b) new techniques for diagnosing and correcting problems once they are detected; and (c) new capabilities for run-time reconfiguration that will support online adaptation. However, even if these capabilities were somehow magically available, there would still remain the important problem of making it possible for engineers to use them in cost-effective and principled ways. In particular, we would like to be sure that engineers can augment existing systems to be self-adaptive without having to rewrite them from scratch, that self-adaptation policies and strategies can be used across similar systems, that multiple sources of adaptation expertise can be synergistically combined, and that all of this can be done in ways that support maintainability, evolution, and analysis. In previous work, we have developed a framework incorporating some of the mechanisms mentioned above and demonstrated end-to-end self-adaptation support through two case studies [4, 12, 13] . We have also described the use of software architectural style to support analysis and guide decisions for system monitoring, diagnosis, and changes [3] . In this work, we show how our approach generalizes across different classes of systems, and re-examine in this context our existing case studies as well as a new case study on security concern. Gross and colleagues at Columbia University have contributed substantial work on monitoring-probing and gauging-and effecting technologies [ 19, 30] . The DASADA project has defined the probe and gauge infrastructures [1, 15] . Event systems like SIENA [2] and MEET [18] provide the communication infrastructure
doi:10.1007/11428589_11 fatcat:jt6xgrmcxnfhnpynwztc7ghbrm