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
The article discusses an architecture-based approach to self-adaptive software, focusing on the dynamic insertion of new software components into fielded, heterogeneous systems without requiring system restarts. The authors present a comprehensive methodology for managing adaptation at both the small and large scales, emphasizing the importance of consistency, correctness, and coordination during changes. They introduce the concept of self-adaptive software, which modifies its behavior in response to changes in its operating environment, and outline the challenges and techniques involved in achieving this. The article also explores different approaches to dynamism at the architectural level, such as C2 and Weaves, and discusses the role of software agents, explicit representations of components and their interdependencies, and wide-area messaging in supporting adaptation. Additionally, it highlights the need for mechanisms to guide and verify modifications to ensure safety, reliability, and correctness. The authors propose an architecture evolution manager (AEM) to mediate all change operations and maintain consistency between the architectural model and the implementation. They also discuss the importance of monitoring and evaluating the application's behavior, planning adaptations, and deploying change descriptions to the running application. The article concludes with a discussion on the integration of these aspects into a comprehensive self-adaptive software methodology.The article discusses an architecture-based approach to self-adaptive software, focusing on the dynamic insertion of new software components into fielded, heterogeneous systems without requiring system restarts. The authors present a comprehensive methodology for managing adaptation at both the small and large scales, emphasizing the importance of consistency, correctness, and coordination during changes. They introduce the concept of self-adaptive software, which modifies its behavior in response to changes in its operating environment, and outline the challenges and techniques involved in achieving this. The article also explores different approaches to dynamism at the architectural level, such as C2 and Weaves, and discusses the role of software agents, explicit representations of components and their interdependencies, and wide-area messaging in supporting adaptation. Additionally, it highlights the need for mechanisms to guide and verify modifications to ensure safety, reliability, and correctness. The authors propose an architecture evolution manager (AEM) to mediate all change operations and maintain consistency between the architectural model and the implementation. They also discuss the importance of monitoring and evaluating the application's behavior, planning adaptations, and deploying change descriptions to the running application. The article concludes with a discussion on the integration of these aspects into a comprehensive self-adaptive software methodology.