Increasingly, software are required to be ready to adapt itself to the changing environment caused by a wide range of maintenance, evolution and operation problems. Furthermore, in large complex distributed systems and continuous running systems, the traditional approaches to bringing about change require that the system be taken offline temporarily, which is often undesirable due to requirements for high availability. To address this new kind of capability, dynamic software adaptation, which refers to software changes in both structure and behavior without bring it down, is proposed.In this paper, we explore an architecture-based mobile agent approach to dynamic software adaptation. Our goal is to automate the software adaptation on the fly on the basis of explicating and reasoning about architectural knowledge about the running system. For that, we introduce the dynamic software architecture, which means the architecture itself can also be introspected and altered at runtime, to guide and control the adaptation. We use the architectural reflection to observe and control the system architecture, while use the architectural style to ensure the consistency and correctness of the architecture reconfiguration. To handle the adaptation of the running system, mobile agents, which is well suited for complex management issues, is employed. Mobile agents carry self-contained mobile code and act upon running components.The usage of meta-architecture and the mobile agents not only forms an adaptation feedback loop onto the running system, it also separates the concerns among the architectural model, the target system and the facilities use for adaptation. It will simplify the developing, deploying and maintaining of the system, while pose a good basis for enabling the reuse of the adaptation facilities.
IntroductionIncreasingly, software are required to be ready to adapt itself to the changing environment caused by a wide range of maintenance, evolution and operation problems, such as supporting run-time software composition, adhering to user requirements, recovering from and preventing faults, and fixing bugs. Moreover, in large complex distributed systems and continuous running systems, like telephone switching systems, banking systems, mobile embedded systems, the traditional approaches to bringing about change require that the systems be brought offline temporarily, which is often undesirable due to requirements for high availability. To address this new kind of capability, dynamic software adaptation, which refers to software changes in both structure and behavior, such as adding, removing or substituting components, without bringing the system down, is proposed [1] [2] [3] [4]. It means to use cost-effective techniques and mechanisms to build systems that reliably and adapt their own behavior dynamically.To meet the need of software adaptation, a considerable knowledge of the specification and architecture of the system is needed, which lead to the architecture-based software adaptation [5] [6] [7]. In architecture-b...