Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Infrastructure for Pervasive Computing: Challenges

2002

Infrastructure for Pervasive Computing: Challenges1 Karen Henricksen†‡, Jadwiga Indulska†‡ and Andry Rakotonirainy‡ † School of Computer Science and Electrical Engineering, The University of Queensland ‡ Distributed Systems Technology Centre Email: {karen, jaga}@csee.uq.edu.au, andry@dstc.edu.au Abstract: As mobile and embedded computing devices become more pervasive, it is becoming obvious that the nature of interactions between users and computers must evolve. Applications need to become increasingly autonomous and invisible, by placing greater reliance on knowledge of context and reducing interactions with users. Moreover, applications must cope with highly dynamic environments in which resources, such as network connectivity and software services, frequently vary over time. This paper presents our vision of pervasive computing and enumerates the software engineering challenges involved in realizing this vision. It also evaluates the current state of research and presents an agenda for future investigations in pervasive computing. 1. Vision In the future, the computing landscape will evolve into an environment in which computers are autonomous devices that provide largely invisible support for tasks performed by users. Networked computing devices will proliferate in this landscape, being embedded in objects ranging from home appliances to clothing, and users will no longer be tethered to a single computing device. The nature of devices will change to form augmented environments in which the physical world is sensed and controlled in such a way that it becomes merged with the virtual world. Norman suggests that computing devices will also become more specialized in purpose, with each device being designed to solve a narrow set of well defined and interrelated tasks [1]. Applications will have greater awareness of context, and thus will be able to provide more intelligent services that reduce the burden on users to direct and interact with applications. The context of an application may include “any information that can be used to characterize the 1 situation of an entity”, where an entity is “a person, place, or object that is considered relevant to the interaction between a user and an application, including the user and applications themselves” [2]. Many applications will resemble agents that carry out tasks on behalf of users by exploiting the rich sets of services available within computing environments. This paper addresses the research issues associated with this vision of the future computing landscape. The structure of the paper is as follows. Section 2 presents our assumptions about the pervasive computing environment. Next, Section 3 describes the requirements and challenges associated with our vision, while Section 4 presents a survey of existing approaches and evaluates them with respect to the requirements identified in Section 3. Section 5 describes an agenda for research towards pervasive computing and Section 6 presents some concluding remarks. 2. Assumptions Our requirements for the pervasive computing infrastructure are centered on a high-level conceptual model consisting of devices, users, software components and user interfaces. The distinction between software components and user interfaces is an important one. While software components are programming units that are dynamically composed to form complete applications, user interfaces are conceptual entities that are responsible for interaction with the user, and which may be distributed over multiple software components and devices. In the remainder of this paper, we outline software engineering issues associated with the four components of our model. Other important concerns in pervasive computing, such as security and privacy, communication infrastructure, network protocols for PANs, sensor networks and energy efficiency, fall outside the scope of The work reported in this paper has been funded in part by the Co-operative Research Centre Program through the Department of Industry, Science & Tourism of the Commonwealth Government of Australia. the paper. For a discussion of communication issues in pervasive computing, see Esler et al. [3], who advocate an approach based on data-centric networking, and Arnold et al. [4], who describe an alternative approach using undirected, content-based routing. The pervasive computing landscape will involve vast numbers of the four component types. A scalable supporting infrastructure will be required, in order to enable the dynamic discovery of software components and information; the dynamic interconnection of components; the sensing, interpretation and dissemination of context; the mobility and adaptation of components; and the rapid development and deployment of large numbers of software components and user interfaces. 3. Challenges The four component types that make up our conceptual model of pervasive computing each present challenges, which place requirements on both the supporting infrastructure and the manner in which software components and user interfaces are constructed. These challenges are characterized in this section. 3.1 Devices Two device-related challenges must be addressed by the pervasive computing infrastructure; these are the wide differences between heterogeneous device types and the problems caused by device mobility. 3.1.1 Device heterogeneity. We believe that heterogeneity in computing systems will not disappear in the future, but instead will increase as the range of computing devices widens. Devices in a pervasive computing environment will include sensors and actuators that mediate between physical and virtual environments; embedded devices in objects such as watches and shoes; home and office appliances such as videos, toasters and telephones; mobile devices, such as handheld organizers and notebooks; and traditional desktop machines. Heterogeneous devices will be required to interact seamlessly, despite wide differences in hardware and software capabilities. This will require an infrastructure that maintains knowledge of device characteristics and manages the integration of devices into a coherent system that enables arbitrary device interactions (for example, between a mobile phone and a desktop workstation). 3.1.2 Device mobility. Mobility introduces problems such as the maintenance of connections as devices move between areas of differing network connectivity, and the handling of network disconnections. While protocols for wireless networking handle some of the problems of mobility, such as routing and handovers, some problems cannot be solved at the network level, as they require knowledge of application semantics. It should be the role of the computing infrastructure to cooperate with applications in order to perform tasks related to device mobility, such as management of replicated data in cases of disconnection. 3.2 Software components The responsibility of the pervasive computing infrastructure with respect to applications includes supporting application requirements such as context awareness, adaptation, mobility, distribution and interoperability; facilitating the rapid development and deployment of software components; providing component discovery services; and providing scalability. This section addresses the challenges involved in meeting these requirements. 3.2.1 Mobility and distribution. As users can be mobile and able to exploit the capabilities of several devices simultaneously, mechanisms will be required to enable the mobility and distribution of software. These mechanisms should be largely transparent to component developers, who should not be concerned with program and data migration or synchronization and coordination of distributed components. The support for mobility will need to go beyond the current support for code migration provided by platforms such as the Java virtual machine (JVM), as run-time migration in heterogeneous execution environments will be required. Similarly, the support for distribution will need to surpass that provided by platforms such as CORBA, which only offer transparency of distributed communication, and typically do not address mobility, synchronization or coordination. 3.2.2 Context awareness. Invisibility of applications will be accomplished in part by reducing input from users and replacing it with knowledge of context. Contextaware software components will exploit information such as the activities in which the user is engaged, proximity to other devices and services, location, time of day and weather conditions. Knowledge of context will also be required to enable adaptation to changing environmental conditions, such as changing bandwidth and input and output devices, which can be brought about by mobility. The infrastructure for pervasive computing should support context awareness by facilitating the gathering of information from sources such as sensors and resource monitors; performing interpretation of data; carrying out dissemination of contextual information to interested parties in a scalable and timely fashion; and providing models for programming context-aware applications. A very challenging aspect is interpretation, which involves steps such as integration of data from different sources (for example, combining height and horizontal position into a three dimensional position); inference (for example, “Bob is in the meeting room and Alice is in the meeting room, therefore a meeting between Bob and Alice is taking place”); prediction based on context history; resolution of inconsistencies between context data from different sources; and provision of estimates of the accuracy of contextual information. 3.2.3 Adaptation. Adaptation is required in order to overcome the intrinsically dynamic nature of pervasive computing. Mobility of users, devices and software components can occur, leading to changes in the physical and virtual environments of these entities. Moreover, applications can be highly dynamic, with users requiring support for novel tasks and demanding the ability to change requirements on the fly. It should be the role of the infrastructure for pervasive computing to facilitate adaptation, which may involve adapting individual software components and/or reconfiguring bindings of components by adding, removing or substituting components. Adaptation may be done in an application-aware or application-transparent manner, as described by Noble et al. [5]. Dynamic adaptation can involve complex issues such as managing the adaptation of software components that are used simultaneously by applications with different (and possibly conflicting) requirements, and maintaining a consistent external view of a component that has behavior that evolves over time. 3.2.4 Interoperability. Today, application developers use a wide range of programming models, languages and development environments, and we foresee this heterogeneity continuing into the future, particularly as the range of uses for computing technology expands. Thus, the infrastructure for pervasive computing must support diverse types of software component. The infrastructure will be required to integrate software components, which may reside in fundamentally different environments (such as home or office computing environments), into compositions that can successfully interact and cooperate to achieve common tasks. As applications in pervasive computing environments will be required to respond to novel tasks and situations, applications will increasingly be formed dynamically from available software components. This will require dynamic interoperability at the component level, in addition to interoperability that overcomes the heterogeneity of the environment and of components. Components will need to be capable of dynamically acquiring knowledge of each other’s interfaces and behavior, in order to learn how to interact with previously unknown components. 3.2.5 Component discovery. The issue of discovery of software components has been addressed in various research areas. In open distributed computing, resource discovery is supported by a type management repository, which maintains descriptions of service interface types, and a trader, which is aware of instances of service types. Resource discovery is also addressed by network directory protocols such as LDAP, and in other technologies such as Jini and Bluetooth. As the problem of resource discovery has been solved differently in each of these domains, the main challenge in pervasive computing environments, which are characterized by their heterogeneity, will be to integrate the different approaches into a single scalable resource discovery system by mapping requests between resource discovery domains. 3.2.6 Development and deployment. The number and diversity of software components that will be required in pervasive computing environments will necessitate methods for their rapid development and deployment. Rapid development will be, in part, enabled by featurerich infrastructure that obviates the need for application developers to be concerned with tasks such as adaptation, context gathering and management, resource discovery, distribution management and communication between distributed application components. Rapid development of specialized applications, such as agents, can be enhanced further by the development of special-purpose languages that enable applications to be specified at a very high level of abstraction. Several attempts to create such languages are already underway; one example is the XML-based Mobile Document Application Language (MoDAL), developed by IBM [6], for specifying small document-based applications for information appliances. Infrastructural support for rapid application deployment can be achieved through the provision of execution environments into which applications can be placed without regard for configuration or adaptation. Rapid deployment of applications in distributed environments is already supported in a limited fashion by platforms such as the JVM, which can dynamically load and execute programs. However, these platforms do not yet meet the needs of heterogeneous environments, which require support for a broad range of component types, scalability, and dynamic configuration and adaptation of components. 3.2.7 Scalability. One of the features of pervasive computing is the increasing ubiquity of devices and software. Thus, the infrastructure, the interactions between components, and the software services provided in the pervasive computing environment must all be scalable. A powerful software platform on which scalable, fault-tolerant, distributed components can be built will be essential. Such platforms are already being developed; one such example is the Ninja service architecture [7] which is discussed in Section 4.2. 3.3 Users Users in pervasive computing environments can be mobile and have computing sessions distributed over a range of devices. The infrastructure’s role with respect to users should be to maintain knowledge of their context and to manage tasks related to their mobility. 3.3.1 Context. The infrastructure should maintain context data related to users, including their capabilities, preferences, current activities and active computing sessions. The uses of user-related context include allowing applications to provide adaptation to user requirements, and enabling the amount of input that applications require from users to be reduced. For example, with knowledge that a user is engaged in driving a car, an application can ensure interaction is carried out through a speech-based interface, rather than a screenbased one, in order to enable the user to focus on the road. Information about users’ computing sessions, including details about applications and the devices on which these applications reside, can be used to manage the application migration and adaptation that frequently must occur when a user is mobile. This is discussed in the following section. 3.3.2 Mobility. User mobility between devices should be supported by enabling automated migration (or reinstantiation in a new location) of application components. The tasks of identifying the need for application migration and then carrying out the migration, as described in Section 3.2.1, should ideally be performed by the computing infrastructure in a manner that makes the migration as transparent as possible to the applications concerned. 3.4 User interfaces Users in pervasive computing environments will demand ubiquitous access to their computing applications, which will create a requirement for universally available user interfaces. Device heterogeneity will introduce a further requirement for user interfaces that are highly adaptable. Finally, the diminishing amount of user interaction with applications (brought about in part by the increasing ratio of applications to people) and the changing nature of the interactions (brought about by computing becoming situated in mobile and other novel situations) will mandate the creation of new types of user interfaces. 3.4.1 Universal Interfaces. The need for universally available user interfaces will create a requirement for new methods of programming user interfaces that do not make assumptions about the available input and output devices. GUI interfaces that are designed for use with a screen, pointing device and keyboard will no longer be broadly useful in future computing environments, as devices with novel input and output mechanisms (for example, touch screens and gesture recognition) will become increasingly common. In order to provide scalable support for universal interfaces, it will be necessary for application programmers to write generic interfaces that allow the semantics of user interaction to be specified without reference to rendering or input modalities. Early efforts in this area are already emerging, such as MoDAL [6] which enables graphical user interfaces to be specified independently of platform and instantiated with regard for the context (including user preferences) at execution time. 3.4.2 Adaptation. User interfaces for pervasive computing environments must be highly adaptable in order to respond to changes in the available input and output devices caused by mobility; to other changes in the context in which the application is used (for example, when the user switches from working at a desk to driving a car); and to novel application behaviors that are created in a dynamic fashion from available components. One of the challenges of providing user interface adaptation lies in ensuring that adaptation preserves a consistent view of an application. The user should have a uniform mental model of an application regardless of whether the user is interacting with a speech-based interface or a graphical one. Consistent adaptation is particularly challenging when the interaction paradigms are completely different. For example, interactions in gesture-based interfaces occur over a continuous period, whereas interactions in a mouse-driven interface occur at discrete points in time, which makes it difficult to map between the two forms of input [8]. Another challenge lies in dynamically coordinating the use of heterogeneous collections of input and output devices to form a single user interface (for example, when a control interface for a video conferencing system is formed using a user’s PDA as an input device and the videoconference screen as the output device). 3.4.4 Usability. User interfaces for pervasive computing must be carefully designed with several factors in mind. First, the ergonomics of the interface must be designed to keep the user’s attention focused on the task at hand rather than on peripheral matters; that is, the interface should not be distracting. Second, the user interface should be rewarding and enjoyable to use. Third, the user interface must allow novel types of interaction that will become more common as computing tasks become increasingly ubiquitous, such as delegation of tasks and provision of guidance to software agents. Finally, user interfaces should be designed for ordinary people, rather than just for technologists [1]. Table 1. Primary areas of focus Challenge Issue 1. Support for devices 1.1 Support for device heterogeneity 1.2 Support for device mobility 2.1 Management of application mobility and distribution 2.2 Support for context-aware components 2.3 Support for adaptation 2.4 Support for dynamic interoperability of components 2.5 Support for component discovery 2.6 Support for rapid component development and deployment 2.7 Support for scalability 3.1 Management of user context 3.2 Support for user mobility 4.1 Support for universal interfaces 4.2 Management of user interface adaptation 4.3 Support for usability 2. Support for software components 3. Support for users 4. Support for user interfaces 4. Discussion of existing approaches We have described four classes of challenges involved in realizing pervasive computing. These are summarized in the leftmost two columns of Table 1. The challenges have been partially addressed by existing research, a sample of which is surveyed and evaluated in this section. The discussion is partitioned according to the primary aims of the research efforts; note that overlaps exist between some of the categories (notably, between service platforms and appliance environments). 4.1 Context Models Many context models have been developed to support context-aware and adaptive systems and applications. These primarily address challenges 2.2 and 3.1 in Table 1 by providing context representation, interpretation and dissemination. The Sentient Computing project is concerned with supplying context information to applications, with particular focus on location information [9]. The location of mobile objects, such as people and equipment, is tracked by devices known as Bats (a successor to the earlier active badges), which communicate with base stations by ultrasound. Other context information is gathered by resource monitors, which track resources such as CPU, memory and bandwidth. Context is associated with a logical model of the physical world. In this model, real world entities are Context Models Service Platforms Appliance Environments Pervasive Computing Environments captured as objects that have types, names, capabilities and properties, including static and dynamic context. Objects are stored in a persistent database and queried through a CORBA proxy. Additionally, applications can receive notifications of location-related events from a spatial monitoring service, which performs interpretation of location data and detects important events defined by containment rules. One of the drawbacks of the Sentient Computing framework is its focus on location. While the framework provides interpretation and event notification of location changes, its support for other types of context is limited to the ability to query the information via the proxy server. In order to support the rich context requirements of pervasive computing software, the means to apply context interpretation to arbitrary types of context are required. Hewlett-Packard’s Cooltown project proposes a Webbased model of context. In this model, entities (people, places and things) have Web representations that can be retrieved using a URL [10]. An entity’s Web representation captures both static and dynamic aspects of context, including relationships with other entities and sets of services associated with the entity. One of the primary aims of the model is to enable adaptation of Web content according to user context. However, the potential uses of the framework are much broader. Location awareness is based around the concept of a space. Beacons wirelessly transmit URLs corresponding to spaces, enabling devices near the beacons to discover and access their local spaces. Spaces are accessed through portals, which are responsible for providing access control and a gateway to the space’s services. A space manager performs tracking of the devices located within the space at any point in time and generation of dynamic Web pages that reflect the current context. The Cooltown context model has several limitations. First, it does not address the means of specifying context, but instead allows arbitrary Web descriptions, which renders machine processing of context difficult. Additionally, interpretation of context and subscription to context events are outside the scope of the model. Unlike the Sentient Computing and Cooltown projects, the Context Toolkit project [11] focuses on programming with context rather than context representation. The Context Toolkit has the aim of providing abstractions for separating the gathering and processing of context from the use of context. The toolkit comprises three types of component: context widgets, which acquire context data from sensors; interpreters, which perform processing of context data, such as abstracting high-level information about a person’s location from raw location coordinates; and aggregators, which combine context data from multiple sources. None of the work carried out on context to date is adequate to satisfy the requirements of pervasive computing. The ideas of context modeling found in the Sentient Computing and Cooltown approaches, and those of context processing found in the Context Toolkit must be united into a scalable framework, and better programming models for context-aware applications, which support rich types of context-awareness and adaptation, must be created. 4.2 Service platforms Service platforms typically aim to facilitate the rapid creation and deployment of services (challenge 2.6 in Table 1), while also offering dynamic service discovery (2.5), including the ability for clients to learn the capabilities of services (partially addressing 2.4). Some platforms also address issues of scalability (2.7) and adaptation (2.3). Jini [12] is a service framework based on Java and RMI, which supports flexible, easily administered environments in which services can be added and removed dynamically. It offers a service model based on three components: an infrastructure for federating services in a distributed environment, a programming model for distributed services, and a set of system services, including a lookup service used by clients to locate required services. MOCA [13], like Jini, aims to provide a dynamic service environment; however, it focuses on satisfying the requirements of mobile computing environments. MOCA provides dynamic service discovery (2.5), limited forms of adaptation to changes caused by mobility, such as disconnection from the mobile network (1.2, 2.3), support for device heterogeneity (1.1), and location-transparent access to services. The framework consists of two components that reside on the mobile device: the service registry, which is a repository of information about available services, and a set of core services that provide local file caching, file loading and application management. MOCA’s model of locating both service discovery and essential services on the mobile device was designed with disconnected operation in mind. Unfortunately, this model places considerable resource demands on the mobile device, rendering the framework unsuitable for extremely resource-poor devices. Jini and MOCA address service provision within relatively small service environments, and ignore scalability. The Ninja service framework, in contrast, is designed for large-scale Internet services [7]. It provides a service platform that delivers scalability, fault-tolerance, distribution and composability of services. Services are written in Java, as in Jini and MOCA, according to a well-defined programming model. Services are executed on top of the vSpace platform within cluster computing environments known as bases. Dynamic deployment of a service is performed by uploading the service into a base. Service discovery is supported by a hierarchical arrangement of service discovery services. In addition to the service platform, Ninja offers adaptation to meet the needs of heterogeneous client devices. Adaptation is performed by active proxies that lie between the Internet server and the client, and can overcome problems such as disconnection, limited bandwidth, limited processing capacity on the client device and disparities in protocols or data formats used by clients and servers. Thus, Ninja is able to address challenges 1.1, 1.2 and 2.3. While, Ninja and MOCA, and to a lesser extent, Jini, satisfy some of the requirements of pervasive computing, many other issues remain beyond their scopes, including context-awareness and user and user-interface issues. 4.3 Appliance Environments The aim of models for appliance computing is to support interoperability among collections of appliances. HAVi [14] is a standard for home appliances (designed by a consortium of industry players in the appliance market) consisting of a set of APIs, services, and a standard for communication. HAVi’s primary goal of providing a dynamic service environment in which software components can discover and interact with services closely resembles the goals of service frameworks such as Jini. HAVi provides mechanisms for devices to discover, query and control other appliances on the home network, and provides system services such as message and event transfer. Application interfaces are specified in a programming language-independent IDL, and applications can be programmed in a variety of languages, with Java being the language of choice for applications that require portability (such as device controllers that can be uploaded and executed on a range of devices). HAVi supports universal appliance controls in the form of Java applets (havlets). Control applets can be loaded from appliances into a device employed by the user as a remote control. This provides the user with uniform access to the appliance regardless of which device is used for control. Universal user interfaces are also addressed by an IBM research project aiming to enable a user to employ a single PDA-like device, called a Universal Information Appliance, to interact with all services [6]. Instead of using Java applets to provide remote interfaces, the IBM approach relies on MoDAL, a new high-level application and user interface description language based on XML. MoDAL applications are uploaded dynamically into a user’s device from their corresponding services, and are tailored to the user’s device and preferences. MoDAL applications are supported by an infrastructure comprising a MoDAL engine (the execution environment for applications, similar in purpose to the JVM), a local database responsible for storing data such as user preferences and passwords, and a communication middleware based on a shared tuple space (TSpaces). The benefits of the communication model are that it offers distribution transparency, can support a range of interaction types, including event and stream interactions, and removes the need for resource discovery. Unfortunately, unless communication based on distributed tuple spaces can scale to large systems, which remains to be demonstrated, it is unsuitable for invisible computing environments. The primary challenges addressed by IBM’s universal information appliance infrastructure and HAVi are dynamic interoperability of components (2.4) and dynamic component discovery (2.5). Additionally, they address the provision of appliance interfaces that are universally available regardless of computing device (4.1). At present, however, they consider only graphical user interfaces, whereas pervasive computing will demand a much broader range of interface types. 4.4 Pervasive Computing Environments This section surveys other work that broadly addresses the pervasive computing goal of providing “anytime, anywhere” computing by decoupling users from devices and viewing applications as entities that perform tasks on behalf of users. There are numerous ongoing projects in this area, including PIMA [15], Aura and Portolano [3]. PIMA is founded on the idea that the application model for pervasive computing must decouple application logic from details that are specific to the run-time environment, such as specific services and user interface renderings. Application functionality is modeled in a generic fashion as tasks and sub-tasks joined together by navigation mechanisms. The PIMA project has several ongoing research thrusts. These include the creation of an application development environment that supports the deviceindependent application model described above (challenge 2.6) and the construction of service environments that provide applications with access to local services (2.5). PIMA also aims to address application adaptation (2.3), including rendering for specific devices (4.2) and dynamic application apportioning (that is, determining the split of functionality between client and server at execution time according to context). Finally, PIMA aims to create mechanisms that allow applications to learn how to interact with previously unknown services at execution time (2.4). The Aura pervasive computing project is the successor to the earlier Coda and Odyssey projects on adaptation. Like PIMA, Aura proposes a programming model for task-based computing [16]. In this model, tasks are viewed as compositions of services. Both tasks and services have explicit representations. Services are described by virtual service types, which define functional, state and configuration interfaces and dependencies upon other services. Virtual service types can be related through inheritance, and can also be composed to form new virtual services. Tasks are toplevel compositions of services that are specified as flows that decompose tasks into steps of subtasks or primitives (actions carried out by services). Tasks are instantiated by a protocol that is responsible for gathering information about available services, selecting suitable services to carry out tasks and binding them together, and, finally, performing configuration and initialization of services. A coordination protocol manages the plugging and unplugging of services in response to resource changes. Tasks are also managed by a third protocol responsible for task migration, obtaining consistent snapshots of task state, and managing replication and consistency. Like PIMA, Aura addresses the development and deployment of applications (2.6), application adaptation (2.3), and dynamic service discovery (2.5). The Portolano project [3], in contrast to PIMA and Aura, primarily addresses issues of infrastructure rather than of software development. The Portolano group proposes the use of data-centric networks, an approach based on active networks in which data packets are responsible for traversing the network and obtaining required resources inside the network. The group is also considering infrastructural issues such as service discovery and proxy architectures that support resourcepoor devices, and has an interest in applications such as location tracking of objects, gathering of data from sensors and applications of embedded Web servers. The Portolano research currently remains in its early stages. 4.5 Discussion This section has surveyed four active research areas that address some, but not all, of the requirements of pervasive computing. The main goals and focuses of each of the research areas are summarized in Table 1. The table demonstrates that, while some of the ingredients for pervasive computing infrastructures are present in existing research, a considerable challenge remains in producing solutions to problems that have so far been little addressed, and in constructing a computing infrastructure that integrates solutions to all of the challenges we have described. 5. Research Agenda In summary, pervasive computing has the following requirements: 1. the ability to dynamically discover and compose software components in frequently changing environments 2. the ability to support increasingly autonomous and invisible applications through the provision of rich context information that is gathered from a wide range of sources, interpreted, and disseminated in a scalable fashion to interested parties 3. the ability to rapidly develop and deploy flexible software components that are adaptive and contextaware and, additionally, satisfy special requirements such as scalability and fault-tolerance 4. the ability to integrate heterogeneous computing environments, which have differing communication protocols and services (such as discovery mechanisms), into coherent pervasive computing systems that enable the formation of dynamic interactions between components 5. the ability to construct novel types of user interfaces that are universally available, regardless of the input and output capabilities of the available devices, that are sensitive to situation, and that are non-distracting These requirements are being addressed individually in a broad range of research disciplines, including mobile and distributed computing, software engineering, collaborative work, context-awareness, wearable computing and HCI; a sample of this work was characterized in Section 4. However, there remain considerable hurdles to realizing the pervasive computing vision. We believe that several research directions, in particular, must be pursued. First, there is a need for new approaches to software design and development. Banavar et al. have described a programming model for pervasive computing in which generic programs are created without reference to device or service characteristics [15]. We believe that this model is not sufficient for invisible computing, in which applications are reliant on rich knowledge of context in order to function autonomously. Therefore, we advocate the development of new models for programming with context. Previous work on the gathering, interpretation and representation of context must be extended by deeper investigation into the use of context data. Abstractions of application context-awareness and adaptation must be formed which can serve as the basis for new application programming models and languages. These issues are currently the focus of our own research group, which is constructing a comprehensive framework for contextaware computing that supports concerns through from context gathering and interpretation to programming issues. This framework is being developed in conjunction with Mercury, an application supporting context-aware communication in pervasive computing environments, which serves as a testbed for our ideas about contextaware computing. Second, a scalable framework for overcoming heterogeneity and enabling dynamic interactions between software components is required. This framework must build upon and broaden the scope of existing work on creating interoperability between computing environments such as CORBA and DCOM. It must address device and software heterogeneity, as well as heterogeneity of components such as networking infrastructures, middleware platforms and service discovery mechanisms. In addition, mechanisms are needed that enable software components to respond to novel situations by dynamically learning the interfaces and behaviors of other components. Finally, further investigation into the user interface and usability issues of pervasive computing is required. Current research in the HCI arena is addressing the construction of user interfaces for innovative devices, including information appliances and mobile computers. From this work must emerge new models of user interaction to replace the models, centered on desktop computing, that have been widely used in the past. 6. Concluding Remarks In this paper, we have presented a vision of a future computing landscape characterized by the ubiquity of computing devices, the autonomy, dynamicity and context-awareness of computing applications and the heterogeneity of system components. We have provided a discussion of the challenges associated with such a vision, framed around our conceptual model of pervasive computing which encompasses devices, users, software components and user interfaces. Additionally, we have evaluated the current state of research and the degree to which it satisfies the requirements of pervasive computing. We have concluded with an agenda for future research that highlights the need for further investigations into context-awareness and adaptation; integration frameworks that overcome system heterogeneity; and user interface models for future computing environments. 7. References [1] Norman, D., “The invisible computer: why good products can fail, the personal computer is so complex, and information appliances are the solution”, MIT Press, 1998. [2] Dey, A. and Abowd, G., “Towards a Better Understanding of Context and Context-Awareness”, Workshop on the what, who, where, when and how of context-awareness at CHI 2000, April 2000. [3] Esler, M. et al., “Next Century Challenges: Data-Centric Networking for Invisible Computing”, Proceedings 5th Annual Intl. Conference on Mobile Computing and Networking (MobiCom’99), August 1999. [4] Arnold, D. et al., “Discourse with Disposable Computers: How and Why you will talk to your tomatoes”, Usenix Workshop on Embedded Systems, March 1999. [5] Noble, B. et al., “Agile Application-Aware Adaptation for Mobility”, Proceedings 16th ACM Symposium on Operating Systems and Principles, October 1997. [6] Eustice, K. et al., “A Universal Information Appliance”, IBM Systems Journal, Vol. 38, No. 4, 1999. [7] Gribble, D. et al., “The Ninja Architecture for Robust Internet-Scale Systems and Services”, Computer Networks, Special Issue on Pervasive Computing, June 2000. [8] Benyon, D., “The new HCI? Navigation of Information Space”, To appear, Special Issue of Knowledge-Based Systems. [9] Harter, A. et al., “The Anatomy of a Context-Aware Application”, Proceedings 5th Annual Intl. Conference on Mobile Computing and Networking (MobiCom’99), August 1999. [10] Kindberg, T. et al., “People, Places, Things: Web Presence for the Real World”, http://www.cooltown.hpl.hp.com, HewlettPackard Labs Technical Report HPL-2000-16, 2000. [11] Dey, A., Salber, D. and Abowd, G., “A Context-based Infrastructure for Smart Environments”, Proceedings 1st Intl. Workshop on Managing Interactions in Smart Environments (MANSE’99), December 1999. [12] Waldo, J., “Jini Technology Architectural Overview”, White Paper, Sun Microsystems, Inc., January 1999. [13] Beck, J., Gefflaut, A, and Islam, N., “MOCA: A Service Framework for Mobile Computing Devices”, Proceedings International Workshop on Data Engineering for Wireless and Mobile Access, August 1999. [14] Lea, R., Gibbs, S., Dara-Abrams, A. and Eytchison, E., “Networking Home Entertainment Devices with HAVi”, Computer, Vol. 33, No. 9, September 2000. [15] Banavar, G. et al., “Challenges: An Application Model for Pervasive Computing”, Proceedings 6th Annual Intl. Conference on Mobile Computing and Networking (MobiCom 2000), August 2000. [16] Want, Z. and Garlan, D., “Task-Driven Computing”, Technical Report, CMU-CS-00-154, School of Computer Science, Carnegie Mellon University, May 2000.