The history of computing is peppered with paradigm shifts in how the relationship between humans and computers is perceived. The most recent paradigm shift is ubiquitous computing, or ubicomp for short [27, 28, 10]. The ubicomp vision pushes computational services out of conventional desktop interfaces and into the environment in increasingly transparent forms. In this paper, we discuss the software engineering problems that arise in conducting research toward this vision of future computer-enhanced environments.
Ubicomp research is experimental in nature [28]. Good research in the field should satisfy the following criteria:
These last two criteria are very important, because together they present a serious robustness challenge in an uncommon computing domain. Ubiquitous computing applications attempt to invade our everyday lives. Significant evaluation can only occur when the novelty of some new service wears off and the new service is expected by its user population. This means the application must be robust enough to run continuously for long stretches of time. Whereas many business and safety critical systems also face this ``24 by 7'' constraint, it is not common for everyday computing tasks, and even less common for systems which use a variety of different devices.
Ubicomp applications evolve organically. Even though they begin with a motivating application, it is often not clear up front the best way for the application to serve its intended user community. The best approach is often to prototype a solution rapidly, put it into place and solicit feedback from the user population. Constant evaluation of this sort often results in the need to modify the application, often without the luxury of much downtime. This rapid prototyping model is not a new one to software engineering, but it brings particular challenges in ubicomp research that we will discuss later.
Adhering to the experimental model of research, and taking an applications focus, we have built several ubicomp applications at Georgia Tech over the past four years. We will discuss two projects in some detail in this paper, for they will help to illustrate the major contributions of this paper:
These questions arise out of a number of years designing, implementing and evaluating a variety of ubiquitous computing applications at Georgia Tech.