Sentient computing [2] uses sensors and other resource data to maintain a model of the real world that can be shared between users and applications. Addlesee et al. use this model to allow applications to make observations of the real world and to adapt their behavior correspondingly. The system developed to harness this approach provides a geometric view
of the world, tracking the location and monitoring the state of physical objects and users with it. The developement of applications is achieved through an API that uses spatial facts derived from the model to trigger changes in application behavior.
2.3.5.1 A Sentient Computing System
The sentient computing system uses a three-tier architecture [2, 65] to maintain a model of the real world. On the top tier are resource monitors and location sensors [165] that feed the system with information on the state of the physical objects. The applications that use the model are also located at this level. In the middle tier are a set of CORBA objects that represent the physical objects within the environment. At this level is also a spatial monitor that determines the spatial relationships between physical objects. On the bottom tier is an Oracle database that is used to provide persistence for the system.
An object-oriented data modelling language - Ouija [149] - is used to generate the CORBA objects on top of the database. These objects are stored in the database as rows of data and associated operations are written in PL/SQL. PL/SQL is a procedural extension to SQL that was developed by Oracle to allow manipulation of their database. The Ouija modelling language provides a CORBA mapping for PL/SQL and a means of persistently storing the state of objects. This allows the sentient computing system to handle failure and to provide a more robust service to applications. The CORBA objects generated with Ouija are used to represent the various physical objects within the environment. The resource monitors and the location service update the state of these objects via the corresponding CORBA objects. Changes in the state of the physical objects, such as location, are then propagated to applications via an event service.
Resource monitors are installed on all networked machines and are use to provide informa- tion on machine activity, resource usage, and network point-to-point bandwidth and latency. They periodically report changes to objects in the database via the CORBA interface gener- ated by Ouija. The location system - BAT [165] - provides the primary source of information on the location of physical objects. It is an extremely accurate location system though it re- quires the preinstallation of base stations into areas where the location of objects is required.
All location information is also feed back into the system.
Conceptually, the architecture provides a centralised system that maintains a model of the real world through the use of sensors and which allows applications to adapt their behav- ior through observations of this model. While the use of a centralised system may ease the implementation there has to be concerns that the chosen architecture will not be able to scale to incorporate larger areas or more detailed models of the real world. However, the high- level abstraction that this approach provides does aid the physical integration of applications into an pervasive computing environment while also allowing them to adapt their behavior to changes in the environment. Though, it should be noted that there is no common coordi- nation mechanism that allows for interoperability between arbitrary application components. Applications can only use the observations from the model to change their behaviour and have no means in this architecture of communicating with other components to coordinate their behavior. There is also no means of securing access to those viewing the model which may lead to concerns of privacy for users.
2.3.5.2 Programming with Space
To develop applications Addlesee et al. use an API that exploits spatial facts between physical objects to trigger changes in application behavior. This is achieved through the use of the spatial monitor located on the middle tier of the architecture. The spatial monitor translates absolute location events generated by the system into relative location events. These events can be used by applications to determine relative spatial facts about physical objects of interest to them, for instance, whether a person is standing in front of a workstation or not. To receive these events applications need to associate a particular containment space around an object and to register a callback to the monitor the space for dierent spatial facts. The spatial monitor can then deliver relevant events to the application which, in turn, allows the application to change its behavior.
Addlesee et al. have used the approach to develop a series of follow-me type applications. For instance, using Virtual Network Computing [51] one of the follow-me applications created a desktop that followed its owner from desktop to desktop. Another follow-me application allows
a person to route telephone calls to the phone beside them. A number of other applications have also been developed such as Lifestreams [52, 2], which keeps track of the stream of documents accessed in a time-line that functions as a users diary of their electronic life, or a browser that allows people to see what is happening in the building. The majority of the applications developed can be classied as location aware systems. The use of other types of information does not appear to inuence the behavior of the system in any signicant way. This would seem to be a drawback as it limits what can be achieved if other forms of information could be used to change the behavior of applications.
2.3.5.3 Summary
Addlesee et al. [2] have developed an approach based on the concept of sentient computing for developing pervasive computing environments. In it sensors and other resource data are used to maintain a model of the real world that can be shared between users and applications. It pays particular attention to the geometric relationships between physical objects and uses a spatially aware API to dene the behavior of applications. While the programming model provides an initiative approach to developing pervasive computing applications the underlying system is limited due to its centralised nature and particular focus on the use of location information.