Article Preview
TopIntroduction
Although at times we may not realize it, networked devices of varying computational power are everywhere around us and heavily involved in our daily lives. From embedded sensors in the foundations of a bridge that communicate data about its structural integrity, to set-top boxes and game consoles providing entertainment at home, to large-scale servers offering access to specialized services over the Internet, the vision of pervasive computing as narrated by Mark Weiser (1991) is in fact becoming a reality. Distributed computing can now reach a wide-range of heterogeneous devices that may disappear in the background while still offering their capabilities as services through the network “all the time, everywhere” (Saha & Mukherjee, 2003; Satyanarayanan, 2001).
Pervasive computing is a multidisciplinary field that evolved from distributed and mobile computing (da Costa, Yamin, & Geyer, 2008; Saha et al., 2003). It differs from traditional computing in terms of how the computational devices are perceived and utilized in applications. We live in an era where computing gradually moves from stand-alone software programs running on a single machine to orchestrated composite services running across distributed interconnected cyberspaces. A pervasive environment evolves from a virtual environment of interconnected computers into a collaborative information-rich physical space. The diverse and distributed services that devices immersed in a pervasive environment offer to the developer of pervasive applications or to the end-user are called pervasive services. Pervasive devices become an integral part of a pervasive environment and unlike traditional computers they collectively offer location and context awareness as core services to user applications in a seamless and continuous manner (Gupta, Lee, Purakayastha, & Srimani, 2001; Saha et al., 2003). Pervasive computing principles have already been utilized in several application domains such as smart homes, where intelligent appliances may expose their capabilities as services and can be combined with sensors to provide a comfortable, safe or rehabilitative living environment. Another example is the smart cars that promise an enhanced driving experience for a safer and more enjoyable ride. Health care, manufacturing, and social networks are also areas where pervasive computing is currently exploited.
Since pervasive computing evolved from distributed and subsequently mobile computing, it is only natural that it inherited a set of their problems (da Costa et al., 2008). Developing software applications that engage pervasive devices is not easy and requires new application development paradigms. The high degrees of device heterogeneity and dynamicity call for device interoperability models and protocols. Moreover, current standard Integrated Development Environments (IDEs) are not suitable for developing pervasive applications (Helal, 2005). This is largely due to the fact that using pervasive devices introduces a set of unique issues not present in traditional software development, such as the integration of large numbers of heterogeneous entities, ubiquitous connectivity etc., that so far are only performed at small scale and in an ad-hoc manner. These difficulties generate the need for new middleware technologies and software engineering methodologies that will allow developers to integrate available devices from a pervasive-enabled space into their applications easily and at a large scale without the need of using a specialized API for each new device type. Middleware is generally defined as a set of services that lie between the application layer and the connectivity layer (Vinoski, 2002). The middleware layer hides the complexity details of the lower layers so that developers can implement portable and interoperable applications. Middleware does not deal with the underlying hardware of the device it is executing on, something that the Operating Systems (OS) does, but it rather mediates between software layers. In Pervasive computing, middleware architectures provide a set of core services that hide the heterogeneity of devices in ambient environments and enable their services to be exposed at the application layer (Saha et al., 2003). Examples of these services include service discovery and execution, context-awareness, trust and security and semantic matching. Currently middleware technologies such as the Universal Plug and Play (UPnP) (Presser et al., 2008) and the Open Services Gateway initiative (OSGi) (OSGi Alliance, 2008; Marples & Kriens, 2001) contribute towards this objective but only at the local area network level.