Pervasive Computing and the Future of CSCW Systems
A Position Paper for the CSCW2000
Workshop on Software Architectures for Cooperative Systems
School of Computer Science
Carnegie Mellon University
Pittsburgh, PA 15213
Abstract: The use of largely isolated workstations and laptops as the primary carrier of personal computing is giving way to a world of pervasive computing populated by ubiquitous networks of heterogeneous computing and information facilities. In such a world the boundaries between a user’s personal computation space and other people’s is no longer well defined. As a result, collaboration becomes the dominant mode of computing – in essence, all systems become the basis for on-going computer-supported cooperative work.
Traditionally CSCW has been viewed as an occasional activity that we might engage in from time to time when we are not doing personal, private computing. This model fit well in the PC era: most of our computation centered on personal, isolated uses of applications that we bought, installed, and ran on dedicated (or virtually dedicated) processors. In that world collaborative work therefore represented a major shift in our day-to-day computational activity and seemed to require specialized facilities and capabilities.
The world is changing. In the future, most computation will not occur on personal computing platforms, but instead exploit a pervasive and ubiquitous computational and informational infrastructure. We will use resources on demand for communication, information retrieval, and computation. We will carry on on-going tasks that persist across physical and temporal boundaries. We will share information more freely, and transparently. We will be able to exploit myriad modes of communication between people.
In such a world, I believe that personal computing will become the exception: the primary mode of computer-supported activity will be cooperative. Thus, I would argue, pervasive computing and CSCW are intimately and inextricably connected: the former enables the latter, and propels it to center stage. Therefore to understand what are good architectures for future CSCW systems is to understand what are good architectures for pervasive computing.
From an architectural perspective, there are a number of important facets of pervasive computing:
1. Service-based computation: Traditional computer use centers on PCs, using local applications and data that are installed and updated manually. Increasingly, the PC and other interfaces (handheld devices, laptops, phones) are used primarily as a user interface that provides access to remote data and computation services. This trend has a number of consequences for software architecture. First, it forces us to consider architectures for open systems. In a service-based environment applications may well be composed out of parts that are not under central control. Second, it forces us to consider architectures that scale to the size and variability of the Internet.
2. Many heterogeneous devices: A related trend is the emergence of a computing universe populated by a huge number and variety of heterogeneous computing devices: toasters, home heating systems, entertainment systems, smart cars, etc. There are a number of consequent challenges. First, we will need architectures that are suited to systems in which resource usage is a critical issue. Second, architectures for these systems will have to handle reconfiguration dynamically, while guaranteeing uninterrupted processing of the parts that don’t change.
3. Mobile computing: Increasingly people expect to carry on their computing tasks in any environment. This trend implies a need for architectures that will handle user mobility transparently. From an architectural perspective, the problem is largely one of finding ways to reconfigure high-level tasks to match local resources. This will require new architectures that can self-adjust dynamically to a changing computing base.
3. Architecture Research Themes
A systematic solution to these challenges will only come about through research along at least three dimensions.
1. Correct software => Utility-based software: Traditionally researchers have focused on correctness as the dominant issue. A software system that does not compute the right result is deemed inadequate. But in many cases less than optimal solutions are preferable if they come at lower costs—both in terms of system development and execution costs. Currently we are ill prepared to design and analyze systems whose overall utility is based on such tradeoffs. A key ingredient for improving the situation will be to have architecture-based analyses that make risks and costs explicit, and then allow one to perform tradeoff analysis within the space of alternatives. This in turn will require ways to document costs, to characterize “approximations to correctness,” and to tune utility functions over these values.
2. Applications => Service Coalitions: In a world of mobile users, with pervasive access to information and services, we need to be able to describe and reason about systems that are dynamically composed of services, operating in a distributed environment. Research challenges include the ability to document these services and reason about their compatibility. This becomes a problem (both technically and sociologically) if the services are not under the control of any particular organization. The need to support mobility in this setting also introduces a new challenge: to make computations truly portable it is critical for the system as a whole to have a higher-level understanding of users’ tasks. This will lead to a new notion of “task-driven computation,” supported by run time infrastructure that can represent, instantiate, and adapt tasks as appropriate collections of services.
3. Static Systems => Dynamic Systems: Current research focuses on systems whose runtime configurations are largely fixed. In a world of dynamic service coalitions, mobile users, and changing resources, software systems will have to be much more adaptable at run time. This leads to a number of architectural challenges. The first is to be able to describe and reason about these systems. The second is to find architectural styles that are better suited to dynamism. The third is to develop components and integration schemes that support autonomy and self-adaptation. In a world where services are scattered across the net, it becomes critical that the components themselves take more responsibility for monitoring their own behavior and the behavior of their environment and adapting to changes without requiring user intervention.
This paper draws on material published in “Software Architecture: a Roadmap,” published in The Future of Software Engineering, ACM Press, 2000. Research in this area is supported by DARPA under contracts F30602-97-2-0031 and N66001-99-2-8918.