Towards self-adaptive software-intensive systems
Hausi A. Müller · 2009
With the rapid growth of web services and socio-technical ecosystems, the management complexity of these modern, decentralized, distributed computing systems presents significant challenges for businesses and often exceeds the capabilities of human operators. The simultaneous explosion of information and integration of technology and the continuous evolution from software intensive systems to systems of systems to ULS systems requires new and innovative approaches for evolving, running, and managing software systems. A consequence of this continuous evolution is that software systems must become more versatile, flexible, resilient, dependable, robust, continuously available, energy-efficient, recoverable, customizable, self-healing, configurable, or self-optimizing by adapting to changing contexts and environments. One of the most promising approaches to achieving such properties is to equip software systems with self-adaptation and self-management mechanisms. Autonomic computing constitutes an effective set of technologies, models, architecture patterns, standards, and processes to cope with and reign in the management complexity of dynamic computing systems using feedback control, adaptation, and self-management. At the core of such systems are control loops which sense their environment, model their behavior in that environment, and take action to change the environment or their own behavior. Computer science researchers often approach the design of such highly dynamic systems from a software architecture perspective whereas engineering researchers start with a feedback control perspective.