next up previous
Next: II-B Continuous Adaptation Up: II Software Adaptation at Previous: II Software Adaptation at

II-A Static Adaptation

We found the closest match to the kind of adaptation that we wish to enable for mobile agents presently used in the field of component based software engineering (CBSE) in general [Hei99], and software evolution in particular. One of the benefits of CBSE is the reuse of existing code and components. The goal is to reduce programming to the wiring of components. Since there the transformation steps involved are typically carried out at compile time (not runtime), we refer to this form overall as static adaptation.


 
Figure 1: Static adaptation  

Even if components are available for arbitrary functionality, it is probable that not every component fits together with another component or fits into an application because interfaces change over time (software evolution). The reasons can be syntactical incompatibility or semantic differences of the interfaces. In order to use incompatible components, adaptation can be used to modify the incompatible parts of code in such a way that they fit together (again).

This kind of adaptation used in the field of CBSE can be denoted as static adaptation because it is in general applied before compilation time and not during runtime. This property makes most of the concepts of static adaptation not applicable for the problem of dynamic adaptation, which we wish to address.

The input of static adaptation is a component C and a description of the desired modifications. The output is the modified component C' which fits into the designated application (Fig. 1).

In [Hei99] a collection and evaluation of component adaptation mechanisms is presented. These can all be classified as members of the static adaptation category. Examples for static adaptation are Binary Component Adaptation (BCA) [KH98], Load-Time Adaptation (LTA) [DH99] and a concept called MetaJava [GK97].

Static adaptation concepts in general do not provide support for adaptation during runtime as needed for dynamic adaptation. However, they have as a common element the process of reconfiguration where source or executable code is modified or exchanged, i.e. the adaptation is effected by performing a structural change of code substrates, as opposed to simple tuning of parameters or selection of (simultaneoulsy installed) execution paths.


next up previous
Next: II-B Continuous Adaptation Up: II Software Adaptation at Previous: II Software Adaptation at
Copyright Munich Network Management Team