PROSE: Automated Software Adaptation for Pervasive Computing
by Gustavo Alonso
Adaptation is one of the biggest challenges for software engineering. This is particularly the case since mobile and pervasive computing have turned adaptation from the slow process of software evolution into a highly dynamic run-time procedure that needs to occur as devices and applications move from network to network. To face this challenge, researchers at ETH Zürich have developed PROSE, an infrastructure that supports automated software adaptation by extending applications at run time.
Mobile and pervasive computing poses a significant challenge in terms of software development. Applications running on devices that are mobile and continuously moving from one computing environment to another need to be able to adapt to these changes. For instance, as a device moves from one building to another, it might have to face different access policies from the available services. Perhaps in one building, communications can be sent in plain text and in another they need to be encrypted. The question is whether the ability to change from one mode of operation to another needs to be a dynamically acquired trait or something that is pre-programmed into the application. This is not an idle or insignificant question, since the ability to adapt is critical to that particular application remaining functional. If the adaptation is built into the original code of the application, that adaptation will necessarily be limited in scope and flexibility. First, the adaptation will only apply to situations foreseen by developers: as soon as new networks or new conditions appear, the application ceases to be operational. Second, the adaptation will have to be triggered by the application itself, thereby requiring valuable resources (CPU, memory, battery) to be devoted to it. These problems suggest that the adaptation process needs to be external to the application.
As part of ongoing work in a variety of new applications involving wireless networks and mobile computing settings (robots, flexible production environments, simultaneous utilisation of different network interfaces, etc), we have developed PROSE, a platform for dynamic adaptation.
PROSE is a versatile infrastructure designed to implement adaptation externally to the application. In this way, an application can be extended in a wide variety of ways. For instance, an application can be extended by a base station as soon as the corresponding device enters the domain of that base station. Two devices that meet spontaneously can exchange software extensions to ensure that their applications can interact properly. As another example, software residing in a complex sensor network can be upgraded and debugged remotely through extensions that are dynamically distributed from a central location or from some of the sensors themselves.
|A robot with a PDA and wireless card running PROSE for dynamic adaptation
The process of adaptation can even take place automatically. For instance, a robot moving through a building can be adapted to different situations as it encounters different networks. These adaptations can be made during run time, without stopping the application. Thus, PROSE provides an excellent middleware platform offering a great deal of versatility in pervasive computing environments.
PROSE uses dynamic Aspect-Oriented Programming techniques to implement the code of the application and make it amenable to adaptation. Currently several versions of PROSE are available (see links below) using a variety of mechanisms. One is based on the debugger interface of the Java Virtual Machine (JVM). Another is based on the Just-in-Time compiler of the JVM. More recently, versions of PROSE have been developed using dynamic-class loading and recompiling. There is also a version for the .NET platform. Overall, the overhead involved is small (7% slowdown in selected benchmarks) compared with the gains in flexibility and the reduction of core code necessary for a working application.
ETH Zürich/SARIT, Switzerland
Tel: +41 1 632 7306