A Component-based Software Architecture for Pervasive Computing
In recent years, we have observed an increasing prevalence of small devices equipped with wireless network connection. Computing is no longer a discrete activity bound to the desktop. Current software targeted for these devices however is limited by the devices' computing power and small memory, which in turn restricts the functionality and complexity of the applications that the device can provide. As a result, the current software system is not flexible and adaptive enough to satisfy the high demand due to increased user population and sophistication in pervasive environments. To attack the problem, we propose a component-based software architecture that supports dynamic mobile code binding and loading. An application is made up of several small and mobile code components — called facets. Whenever a specific function is needed during the execution of an application, a facet that implements that function is selected and brought in from the network, executed and then discarded. As a result, small devices are able to run applications of any sophistication. Moreover, the selection of facets depends on the computing resources in the device, network conditions, and various environmental contexts. This makes our system more flexible and adaptive, and capable to enhance user mobility in a pervasive computing environment.