Ubiquitous Computing: Shall we Understand It?

Pervasive or ubiquitous computing has become an aspiration of the computing community in the last 15 years. Its vision, pioneered by Mark Weiser [1], is that populations of computing entities—hardware and software—will become an effective part of our environment, performing tasks that support our broad purposes without our continual direction, thus allowing us to be largely unaware of them. The vision arises because the technology begins to lie within our grasp. This simply stated aspiration arouses questions ranging across computer science and beyond. Here are a few of them. Social questions: what ubiquitous computing systems (UCSs) do people want or need, and how will they change people’s behaviour? Technological questions: how will the hardware entities—the sensors and effectors whose cooperation represents such a system—acquire power, and by what medium do they communicate? Engineering questions: for the populations and subpopulations—including software agents—that make up a system, what design principles should be adopted at each order of magnitude, to ensure dependable performance? Foundational questions: what concepts are needed to specify and describe pervasive systems, their subsystems and their interaction? The UK Computing Research Committee (UKCRC) has mounted an exercise posing a number of Grand Challenges for computing research over the next two decades [2]. One of these Challenges, Ubiquitous Computing: Experience, Design and Science [3], proposes to develop ubiquitous computing by tackling these four classes of question in a closely coupled manner. The questions are already addressed to a varying extent for conventional software, but they are raised to an unprecedented level of difficulty by the following qualities that ubiquitous systems will possess in high degree. First, since we shall be largely unaware of the activity of such systems, they will continually make decisions hitherto made by humans. Second, new technologies will allow such systems to be vast—orders of magnitude larger than any we know, including the Worldwide Web—and the difficulties of designing and understanding them will surely grow nonlinearly with their size. Third, the systems must adapt continually to new requirements, retaining reliability and without interrupting service (on whose continuity we shall increasingly depend). Fourth, though individual systems may be designed independently, their pervasive nature will inevitably lead to unplanned interaction between them. This tangle of concerns, about future systems of which we have only hazy ideas, will define a new character for computer science over the next half-century. What sense can we make of the tangle, from our present knowledge? In answering this, it is helpful to expose an (intended) ambiguity in the title of this lecture. The question Shall we understand it? can be interpreted passively:Will understanding be possible?, or actively: Do we wish to ensure understanding? A recent report [4] contains an admirably detailed analysis of the risks and effects of ubiquitous computing, but declares (p. 17) ubiquitous systems that