An Architecture-Based Approach to Self-Adaptive Software

An Architecture-Based Approach to Self-Adaptive Software

MAY/JUNE 1999 | Peyman Oreizy, Michael M. Gorlick, Richard N. Taylor, Dennis Heimbigner, Gregory Johnson, Nenad Medvidovic, Alex Quilici, David S. Rosenblum, and Alexander L. Wolf
This article presents an architecture-based approach to self-adaptive software, which dynamically adjusts to changing environments without requiring system restarts or downtime. The key idea is to support both system evolution (consistent application of change over time) and system adaptation (detecting changing circumstances and planning responsive modifications). The article describes an infrastructure that supports these two processes, emphasizing the role of software architecture in planning, coordinating, monitoring, evaluating, and implementing seamless adaptation. Self-adaptive software modifies its behavior in response to changes in its operating environment. It requires high dependability, robustness, adaptability, and availability. The article outlines a comprehensive approach to self-adaptive software that includes a spectrum of self-adaptability, from simple conditional expressions to complex evolutionary programming and machine-learning techniques. It also discusses the importance of separating software adaptation concerns from application-specific functionality. The article describes two architectural styles, C2 and Weaves, which support dynamic changes at the architectural level. C2 is optimized for flexible components, while Weaves focuses on high-performance, flexible connectors. The article also discusses the importance of maintaining consistency and system integrity during adaptation, and the role of an architecture evolution manager (AEM) in ensuring this. The article outlines a comprehensive approach to self-adaptive software that includes a spectrum of self-adaptability, from simple conditional expressions to complex evolutionary programming and machine-learning techniques. It also discusses the importance of separating software adaptation concerns from application-specific functionality. The article describes the role of software agents, explicit representations of software components, and wide-area messaging and event services in supporting a full range of adaptation processes. The article also discusses the importance of managing self-adaptive software, which requires a variety of agents, such as observers, planners, and deployers. Hosting these agents requires infrastructure support in the form of registries. The article also discusses the importance of collecting observations, evaluating and monitoring the system, and planning changes to ensure the system remains consistent and safe. The article concludes by emphasizing the need for a comprehensive approach to self-adaptive software that integrates dynamic architecture technology, event-based monitoring and evaluation technology, and software deployment technology. It also acknowledges the contributions of various researchers and institutions to this work.This article presents an architecture-based approach to self-adaptive software, which dynamically adjusts to changing environments without requiring system restarts or downtime. The key idea is to support both system evolution (consistent application of change over time) and system adaptation (detecting changing circumstances and planning responsive modifications). The article describes an infrastructure that supports these two processes, emphasizing the role of software architecture in planning, coordinating, monitoring, evaluating, and implementing seamless adaptation. Self-adaptive software modifies its behavior in response to changes in its operating environment. It requires high dependability, robustness, adaptability, and availability. The article outlines a comprehensive approach to self-adaptive software that includes a spectrum of self-adaptability, from simple conditional expressions to complex evolutionary programming and machine-learning techniques. It also discusses the importance of separating software adaptation concerns from application-specific functionality. The article describes two architectural styles, C2 and Weaves, which support dynamic changes at the architectural level. C2 is optimized for flexible components, while Weaves focuses on high-performance, flexible connectors. The article also discusses the importance of maintaining consistency and system integrity during adaptation, and the role of an architecture evolution manager (AEM) in ensuring this. The article outlines a comprehensive approach to self-adaptive software that includes a spectrum of self-adaptability, from simple conditional expressions to complex evolutionary programming and machine-learning techniques. It also discusses the importance of separating software adaptation concerns from application-specific functionality. The article describes the role of software agents, explicit representations of software components, and wide-area messaging and event services in supporting a full range of adaptation processes. The article also discusses the importance of managing self-adaptive software, which requires a variety of agents, such as observers, planners, and deployers. Hosting these agents requires infrastructure support in the form of registries. The article also discusses the importance of collecting observations, evaluating and monitoring the system, and planning changes to ensure the system remains consistent and safe. The article concludes by emphasizing the need for a comprehensive approach to self-adaptive software that integrates dynamic architecture technology, event-based monitoring and evaluation technology, and software deployment technology. It also acknowledges the contributions of various researchers and institutions to this work.
Reach us at info@study.space