Adaptation Execution

From an architectural view, adaptation can be seen as the reconfiguration of the system architecture with respect to environment changes. Dynamic reconfiguration is used in AwareWare as the basis of the adaptation. AwareWare controls applications which are configurations of components where the configuration adapts at runtime. Therefore an application consists of multiple reconfigurable components interacting with each other through connections.

An Architecture Description Language (ADL) contains the specification of required and provided interfaces for each component, and the interaction protocol between components. Several tools are also proposed to analyze the specification for correctness and automatically generate the configuration infrastructure. The configuration infrastructure manages instantiation and connection of components and enforces the specified configuration behavior at runtime.

A large number of distributed applications use Dynamic Linked Libraries (DLLs) to implement particular services and reuse them extensively as the construct of an application. In AwareWare, we use "DLL component" to describe a service that is implemented in a DLL. Please note that strictly speaking, DLL is not considered as a component model.
AwareWare supports the dynamic reconfiguration for DLL component based application.

1) The packaging for each DLL has three major functions. First it provides the name of the DLL component and its version information, so that the DLL component can be identified by the component manager. Second, it provides several standard interfaces besides the component service implementation, e.g. input interfaces, output interfaces, set parameter interfaces, and start and stop interfaces, so that the DLL component can process data and intercommunicate with other DLL components in the same process space. Third, it provides a standard function GetThisComponent to instantiate the DLL component and returns the component reference to component manager.

2) A component manager is provided to load, create, maintain, identify the DLL components, and communicate to the system reconfigurator. The manager first loads all necessary DLLs as components described in the XML, and creates the instances of these DLL classes by calling GetThisComponent. The manager then creates a default parameter list associated with each component. Parameters are used to set the component initial status before they are called by different actuators.

3) DLL-based component reconfigurator is a DLL component pointer list, which points the required components that are created in the component manager, in sequence. The reconfigurator also has a parameter list under user rules associated with each component. Application set the input of the first component in the component list, and the output of the previous component is connected to the input of the next component by a connecter. The output of the last component is then returned to the application.

4) Actuator Exchange: Because all the actuator just keeps a pointer list that point to the components of the manager, all actuators share the same component instance if they use the same component. When the system architecture is changed to accommodate the new requirements under event notifications, the architecture would load a different actuator. To load a new actuator, the architecture first waits for the completion of existing data processing in current active actuator. Next, the reconfigurator restore the components status to its parameter list. After that, the reconfigurator loads the parameter list of the new actuator to set the required component status. Finally, the reconfigurator changes the actuator pointer to set the new actuator active to process application data.

 

 

[Introduction][AwareWare][MassWare][Publications][Download][Members][Resources][Contact]

Copyright(c) 2007 Lehigh University. All rights reserved.
Web master: Shengpu Liu (shl204@lehigh.edu)