The vision of pervasive computing is to create and manage computational spaces where large numbers of heterogeneous devices collaborate transparently to serve the user tasks all the time, anywhere. The original utility of a computer is now changing from a stand-alone tool that runs software applications to an environment-aware, context-aware tool that can enhance the user experience by executing services and carrying out his/her tasks in an efficient manner. However, the heterogeneity of devices and the user’s mobility are among the many issues that make developing pervasive computing applications a very challenging task. A solution to the programmability of pervasive spaces is adopting the service-oriented architecture (SOA) paradigm. In the SOA model, device capabilities are exposed as software services thus providing the programmer with a convenient abstraction level that can help to deal with the dynamicity of pervasive spaces. In this chapter the authors review the state of the art in SOA-based pervasive computing, identify existing open problems, and contribute ideas for future research.
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.
Key Terms in this Chapter
Service Composition: A methodology for combining simple (atomic) services into more complex (composite) services.
Peer-to-Peer Overlay Networks: “Peer-to-peer overlay systems go beyond services offered by client-server systems by having symmetry in roles where a client may also be a server. It allows access to its resources by other systems and supports resource sharing, which requires fault-tolerance, self-organization, and massive scalability properties. Unlike Grid systems, P2P overlay networks do not arise from the collaboration between established and connected groups of systems and without a more reliable set of resources to share”, as defined in Lua et al. (2005).
Pervasive Connectivity: The ability to provide network connectivity while dealing seamlessly with firewall traversals, network address translators, mobility (IP changes) and the issues of service-level naming and addressing.
Service discovery: “Service discovery protocols are network protocols which allow automatic detection of devices and services offered by these devices on a computer network”, as defined in Wikipedia (http://en.wikipedia.org/wiki/Service_discovery).
Pervasive Computing: “Ubiquitous computing (ubicomp) is a post-desktop model of human-computer interaction in which information processing has been thoroughly integrated into everyday objects and activities. In the course of ordinary activities, someone “using” ubiquitous computing engages many computational devices and systems simultaneously, and may not necessarily even be aware that they are doing so”, as defined in Wikipedia (http://en.wikipedia.org/wiki/Ubiquitous_computing)
OSGi: “The OSGi Alliance (formerly known as the Open Services Gateway initiative, now an obsolete name) is an open standards organization founded in March 1999. The Alliance and its members have specified a Java-based service platform that can be remotely managed. The core part of the specifications is a framework that defines an application life cycle management model, a service registry, an Execution environment and Modules. Based on this framework, a large number of OSGi Layers, APIs, and Services have been defined“, as defined by Wikipedia (http://en.wikipedia.org/wiki/Osgi).
Middleware: “Middleware is computer software that connects software components or applications. The software consists of a set of services that allow multiple processes running on one or more machines to interact across a network. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture”, as defined in Wikipedia (http://en.wikipedia.org/wiki/Middleware).
Service-Oriented Architecture: The Organization for the Advancement of Structured Information Standards (OASIS, 2008) defines SOA as “A paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains. It provides a uniform means to offer, discover, interact with and use capabilities to produce desired effects consistent with measurable preconditions and expectations”.
Semantic Web: “The Semantic Web is an evolving extension of the World Wide Web in which the semantics of information and services on the web is defined, making it possible for the web to understand and satisfy the requests of people and machines to use the web content. It derives from World Wide Web Consortium Drector Sir Tim Berners-Lee’s vision of the Web as a universal medium for data, information, and knowledge exchange”, as defined in Wikipedia (http://en.wikipedia.org/wiki/Semantic_web).
Service: The Organization for the Advancement of Structured Information Standards (OASIS, 2008) defines service as “A mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description”.