Web services are increasingly adopted as a service provision mechanism in pervasive computing environments. Implementing web services on networked, embedded devices raises a number of challenges, for example efficiency of web services, handling of variability and dependencies of hardware and software platforms, and of device state and context changes. To address these challenges, we developed a web service compiler, Limbo, in which Web Ontology Language (OWL) ontologies are used to make the Limbo compiler aware of its compilation context, such as targeted hardware and software. At the same time, knowledge on device details, platform dependencies, and resource/power consumption is built into the supporting ontologies, which are used to configure Limbo for generating resource efficient web service code. A state machine ontology is used to generate stub code to facilitate handling of state changes of a device. A number of evaluations show that the design of the Limbo compiler is successful in terms of performance of the generated web service, completeness in being applicable to a variety of embedded devices, and usability for developers in creating new services. 1 Motivation and introduction Pervasive computing is becoming a reality. Because of their increasing ubiquity in business environments, web services are increasingly needed to be adopted as service provision mechanisms in pervasive computing environment. Consequently, in a number of applications, web services are deployed on resource-constrained embedded and networked devices. Implementing web services on embedded devices raises a number of challenges. First, embedded devices are constrained in memory, processor and energy resources. The web services should be sufficiently resource efficient in order to provide usable services. Second, development environments for embedded web services must be able to handle the variability of hardware and software, power supply, and possible dependencies between platform properties. At the same time, pervasive computing environments are highly dynamic, with, e.g., device statuses changing very often; something that affects end user applications. A number of tools and approaches focusing on making web services available on small embedded platforms exist. One example is Microsoft’s Web Services on Devices1, and Fast Infoset2. Fast Infoset is not a web service technology per se, but provides a binary encoding of XML that may be used to make web services more efficient in the sense that they use less bandwidth in communication. These tools, however, fall short in the flexibility of code generation and complexity hiding of device details and web service details for the developer. At the same time, they lack the extensibility for using new protocols and technologies, when considering the huge variance of embedded and networked devices. To address these issues, in this paper, we present Limbo, an ontology-enabled compiler for the generation of embedded web services. A number of Web Ontology Language (OWL3) ontologies are used to encode device details, platform dependencies, resource/power consumption, and valid Limbo components combinations, which are used to make the Limbo compiler aware its compilation context, such as the appropriate hardware and software for a given service. Runtime states of a device are handled with a state machine ontology and stub code is generated to support reporting device state changes. The development of Limbo is part of a large, European research project, Hydra4 that develops secure, serviceoriented, and self-managed middleware for pervasive computing application scenarios. The rest of the paper is structured as follows: in Section 2, we present the design and implementation of Limbo; followed by is the section on how to use the generated code 1http://www.microsoft.com/whdc/rally/Rallywsd. mspx 2https://fi.dev.java.net/ 3http://www.w3.org/2004/OWL/ 4http://www.hydra.eu.com/ The 20th International Conference on Software Engineering and Knowledge Engineering (SEKE'2008) Redwood City, San Francisco Bay, USA July 1 July 3, 2008 for the development of web services. Section 3 discusses ontologies used in Limbo. In Section 4, we present the configuration algorithm used in Limbo. Then we evaluate the Limbo compiler in Section 5, from the perspective of complexity, usability and performance. We compare our work with related work in section 6. Conclusions and future work ends the paper. 2 Limbo design, implementation, and usage 2.1 Limbo design and implementation Figure 1 shows the module structure of the Limbo compiler. The software architecture of Limbo follows the “Repository” architectural pattern [5] in which a central Repository stores data related to the transformation process and on which Frontends and Backends operate to read and write information. Frontends process source artifacts (in particular web service interface descriptions in the form of WSDL 5 files and ontology descriptions in the form of OWL files). Conversely, Backends produce target artefact’s in the form of code (primarily state machine stubs, web service stubs and skeletons) and configuration files.
[1]
Abraham Heifets,et al.
XML screamer: an integrated approach to high performance XML parsing, validation and deserialization
,
2006,
WWW '06.
[2]
Jeff Z. Pan,et al.
A semantic web approach to feature modeling and verification
,
2005
.
[3]
Murali Mani,et al.
Taxonomy of XML schema languages using formal language theory
,
2005,
TOIT.
[4]
Robert Grimm,et al.
System support for pervasive applications
,
2004,
TOCS.
[5]
Mary Shaw,et al.
Some patterns for software architectures
,
1996
.