As section II showed, we need facilities for reconfiguration and context awareness in our generic architecture. In addition there is need for a repository service, to store and supplying environment dependent implementation classes. The core agent uses adaptors for identifying, loading and integrating environment specific methods into the mobile agent. These adaptor includes the context awareness module and the reconfiguration component. Fig. 3 gives an overview of the life-cycle of the agent including reconfiguration and context awareness.
After arriving on a host the core initially finds itself in an environment about which it has only little knowledge. Discrimination at this stage is coarse, and can only be made in broad terms such as operating system platform, etc. (1).
The context awareness component is responsible for further inspecting the environment and refining descriminations to account for more granular circumstances that are relevant to particular applications needs (this stage may e.g. involve running application-specific benchmarks to determine the platform's specific capabilities). It must know which environment-dependent values are important for implementations and how they can be deduced. In section III-C we will see that each environment-specific implementation provides a description of its desired environment, and how these descriptions can be inquired from the implementations.
A new detail in this concept is the repository serving environment dependent implementations and their descriptions. The repository service is used by the context awareness component to retrieve implementation descriptions (2) called profiles. With these profiles the context awareness module is able to determine the execution environment where the core is currently running. This result is delivered to the reconfiguration component (4) which now loads the appropriate implementation for the current environment (5) from the repository, instantiates the implementation and thereby links it into the core (6).