Completely unanticipated dynamic adaptation of software - KEENEY, JOHN (Trinity College Dublin, 2004)
Dynamic adaptation of software behaviour refers to the act of changing the behaviour of some part of a software system as it executes, without stopping or restarting it. It is difficult to dynamically adapt software if the need for adaptation arises while the software is executing, and especially so if the program is compiled and the source code is unavailable. Ideally, it would be possible for adaptations to be applied to a running application without any anticipation of the adaptation itself, preparation of the location for that adaptation, or even anticipation of the need for some adaptation. Even with the best planning and foresight it is virtually impossible to anticipate at design and production stages all of the dynamic behaviour adaptations that may be required for a piece software, especially if the need for adaptation is triggered by unpredictable and erratic changes in the operating context, the application's resources and demands, and the users? requirements.

The need for dynamic adaptation arises in various circumstances, from the very simple desire to dynamically customise a piece of software to suit current needs, through to a necessity to continually evolve a long-running program as its requirements and operating context change. These adaptations may simply involve pre- or post-processing of operations, for example, to support consistency checking, through to dynamically adapting the core behaviours of an application as its operating context or requirements change, for example to support dynamic upgrading or repair of the system. While it may be necessary to adapt the core functional behaviours of an application, it may also be necessary to change or insert new non-functional behaviours that do not change what the software does, but rather how it does it. Examples here include dynamically inserting debugging or tracing statements, through to making some object in an application persistent or remotely accessible. To perform these changes it should not be necessary to restart the application, or indeed have access to the source code of the application since the core problem domain being modelled by the application has not changed.

If dynamic adaptation is to be completely unanticipated, the management and control of the adaptation process must also be dynamically adaptable. It is unrealistic to expect an adaptation framework using a hard-coded, static, or inflexible approach to adaptation management, to perform adequately in a generalised manner. Only by decoupling the adaptation mechanism from the adaptation control, and dynamically specifying and adapting the adaptation control strategies, can completely unforeseen dynamic adaptation of running software become a realistic goal. This thesis provides an in depth discussion of unanticipated dynamic adaptation, introduces the term ?completely unanticipated dynamic adaptation? to refer to adaptations where all properties of the adaptation can remain unanticipated until during runtime, and identifies the set of requirements that must be met to achieve this. This thesis presents the Chisel adaptation framework, and demonstrates that a generalpurpose, context-aware dynamic adaptation framework is achievable. This system can be used to perform almost any unforeseen behavioural adaptation without stopping the application, and without changing the application itself. In this system a human-readable, dynamically updatable policy script was chosen as the favoured approach to drive the adaptation mechanism in a responsive manner by monitoring changes in the user, application, and environmental context. The Chisel framework also demonstrates that behavioural reflection, using the managed but unforeseen dynamic selection of Iguana/J metatypes, is a valid and powerful technique for completely unanticipated dynamic software adaptation. In addition, the Chisel framework provides a structured mechanism to allow a user to inspect and probe the internal operation of compiled software without access to the software's source code to allow that software to be adapted or extended as appropriate.

To evaluate Chisel and validate our claims, a number of examples and case studies are used, including the use of the Chisel framework to dynamically adapt an off the shelf network application, as it ran, to use ALICE, a middleware for mobile computing environments, and how, using an Iguana/J metatype to implement a snap-on non-functional behaviour to implement a naming mechanism for individual objects, those named objects can be individually adapted or queried as context sources.
PUBLISHED
Keywords: Computer Science