For some applications it is important to dynamically adjust service parameters to availability and performance fluctuations of the underlying resources. For instance, multimedia applications over qualitatively unreliable connections such as wireless links or best-service Internet, may transform data or alter its transmission according to the conditions of the network in order to deliver usable results. Many communication protocols, including TCP, include related mechanisms.
Changes of the resource conditions may occur without following a prescribed pattern or any other synchronous regularity. In particular, there may be a continuous sequence of small adaptive steps necessary during the runtime of a piece of code, whereas for what we call static adaptation transformations are typically rarer (often confined to compile time), discrete, and more substantial in each step.
Here the modification of a running application is primarily done by tuning parameters, reflecting changes in the present state of the execution environment (remaining battery lifetime, location and context of user, etc.). The triggers for the continuous adaptation are continuously changing conditions of resources, but not discrete events as for dynamic adaptation. The property of being able to react to changes in the environment (almost) continuously is what we take notice of for our work.
For continuous adaptation the resources are monitored and the adaptation process is initiated as the resource conditions change. The input for continuous adaptation is a running application relying on frequently and strongly changing resources and classes of resource or Quality of Service (QoS-) parameters. The result of the continuous adaptation is typically the modification of parameters steering the resource usage, data processing or data presentation.
In [STW92] environment dependent parameters are managed by dynamic environment servers. Clients can subscribe at a server, if they are interested in the parameters managed by the server. If a parameter value changes the server notifies all clients which have subscribed to that parameter. The clients are also able to retrieve the current parameter value.
Further scenarios of continuous adaptation can be found in [Nob00,ADOB98] where a small personal digital assistant (PDA) serves as portable, electronic guide through museums or cities by delivering appropriately tailored multimedia information about touristic attractions. Web content transcoding also involves many related use cases. What is typical here is that it is not the application itself that undergoes structural change to alter its behavior (emit different content in these cases), but that parameter adjustment lead to the desired effect. Hence change primarily effects data, not procedural code.
Although we are looking at ways to change and rearrange code, there is common ground between continuous adaptation and dynamic adaptation in the requirement for the recognition of the present and local state of the environment (context awareness), because this is what determines the appropriate form and extent of adaptation. Since information retrieval from the environment is often based on user-related sensors (e.g. active badges) and not on the execution environment of code, we have to refine context awareness for our cause.