|Abstract:||Although platforms and execution scenarios are constantly evolving, Web applications today are tightly coupled with the specific platforms and execution scenarios that are envisioned at design time. Consequently, these Web applications do not adapt well to new clients and runtime execution contexts. The goal of this research is to develop methods and software to support Web applications that can be customized for diverse execution environments through adaptable components and reconfigurable distribution. Thinking in terms of software product line engineering, a Web application can be modeled as a product line, each instance of which is for a specific execution platform and context. To achieve such a product line, we identify two crucial requirements: universal accessibility and context-dependent component distribution.
We address both requirements by decomposing Web applications as a collection of active objects or actors and using virtualization on execution platforms. Virtualization provides a uniform programming environment for actors by encapsulating the incompatibilities that exist in different models and platforms. This supports a high-level of abstraction: programmers no longer need to deal with pages, HTTP requests, cookies and sessions, all of which are entities in specific application models and platforms; instead, they can focus on building components and defining their interaction, i.e., on the application logic. Thus, a Web application in our virtual environment represents a product line characterized by its application logic, not a specific implementation which can only be deployed on a specific platform.
Following the principle of separation of concerns, the virtual environment is not only platform independent but also location agnostic: there is no notions about component location and component movement. However, specifications of location and mobility are required for an executable Web application. We design a specification system consisting of two parts: a specification language that enables developers write component distribution schemes, and tools which assist runtime environments to execute these schemes. Combining an application with a specification scheme, a Web application customized to a specific execution context is defined. Inspired by the success of Web Style Sheets, our specification system is based on the idea of using transformations: it converts a composition of actors into a composition of annotated actors. The annotation attributes are given by a specific runtime environment. For example, in a typical Web runtime environment, the location of an actor may be the client or the server. Component distribution can be specified by annotating each actor with the desired attribute value. Sophisticated loading policies can be defined in a similar way with specially devised attributes. We develop an algorithm to perform the transformation and prove the correctness.
One approach to support virtualization over heterogeneous platforms is to define and build a traditional middleware. This approach has the disadvantage of requiring the deployment of new software systems and protocols--something that is impractical given the sheer scale of the Internet and the heterogeneity of existing platforms. Instead, we adopt the paradigm of generative programming for customized application execution: before deployment, the actors defining a Web application undergo a generative process to obey the annotations given by the specification system. To host these generated actors, a light-weight runtime environment is required for each participating platform. In addition, the runtime environments of a Web application have to coordinate with each other to manage distributed actors across the Internet. We implement a generative application framework including runtime environments, coordination services and generators. Our experience suggests that it is feasible to facilitate reconfigurable component distribution using specification schemes to control component allocation and regulate loading patterns.