We presented the design and measured the effectiveness of Puppeteer, a system for adapting component-based applications in mobile environments. Puppeteer implements adaptation by using the exposed APIs of component-based applications, enabling application-specific adaptation policies without requiring modifications to the application.
We described the architecture of Puppeteer and its implementation. The architecture allows for the modular addition of new applications, component types, transcoders, and policies. We demonstrated that complex policies, that traditionally require significant application modifications, can be implemented easily and efficiently in Puppeteer.
Puppeteer's reliance on application specific drivers to provide tailored adaptation raises the question of porting new application to the system. In our experience, the most time consuming part of porting an application is building the import driver that builds a PIF of the document by parsing the application specific file format. Once we had the necessary import and export drivers (the export drivers where considerably easier to implement), implementing policies proved surprisingly simple. In fact, most policies required less than a 50 lines of code.
With respect to standard file formats, the current trend towards XML-based formats has good promise. The only requirement is that components and their dependencies be made explicit. While we found the effort required to build export drivers to be modest, we are developing a set of standard APIs suitable for adaptation, including facilities for data manipulation and event registration.
= =