<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Automated context-driven composition of pervasive services to alleviate non-functional concerns</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Davy Preuveneers</string-name>
          <email>davy.preuveneers@cs.kuleuven.ac.be</email>
          <email>davy.preuveneers@cs.kuleuven.ac.be Telephone: (+32) (0)16 327853 Fax: (+32) (0)16 327996</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yolande Berbers</string-name>
          <email>yolande.berbers@cs.kuleuven.ac.be</email>
          <email>yolande.berbers@cs.kuleuven.ac.be Telephone: (+32) (0)16 327636 Fax: (+32) (0)16 327996</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, Katholieke Universiteit Leuven</institution>
          ,
          <addr-line>Celestijnenlaan 200A, B-3001 Leuven</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>- Service-oriented computing is a new emerging com- to a broad range of systems, ranging from personal handputing paradigm that changes the way applications are designed, helds and smart phones to larger set-top boxes. The second implemented and consumed in a ubiquitous computing environ- requirement is that applications and services need to be less tmraenditt.ioInnasludcehskentovpirtoonmsmeanltlsecmombepdudteindganisdpnuesthweodrkaewdaycofmropmutitnhge dependent on user-intervention and prevent users from being devices around us. However, developing mobile and pervasive overwhelmed with intrusive human computer interactions. services for a broad range of systems with different capabilities Therefore, service-oriented architectures must be able to gather and limitations while ensuring its users a minimum quality of information about the user and his physical and digital enviservice is a daunting task. ronment to autonomously adapt the behavior of the provided posTithieoncoinrefrcaostnrturcibtuurtieontoocfrethaitse paanpeinrstisanatiacotinotnexotf-daripveenrvcaosimve- services according to the current context of the user and the service customized to the preferences of the user and to the capa- device he is interacting with. It are these two gaps that our bilities of his device. We implement services as a composition of infrastructure is trying to fill in. components. This enables us to compose a service implementation To alleviate the first concern we employ a component-based targeted at a specific device while still being able to adapt it at software engineering methodology [3] for building services run-time to respond to changing working conditions. to be consumed within ubiquitous computing environments. I. INTRODUCTION Component-based software engineering is being recognized as an important approach for software upgrade and dynamic The third wave of computing is slowly appearing: ubiq- reconfiguration in dependable resource-constrained and emuitous computing. This new computing paradigm promises bedded devices. As such, services are a collection of interan augmented reality that changes the way people interact connected computational building blocks that offer a certain with computers. It promises continuous human computer functionality to a network of devices with varying capabilities. interaction with small embedded and networked computing The second concern with respect to customization of services systems around us that provide 24/7 access to information and is tackled by context-driven composition of components and computational capabilities, and envisions pushing computing using context-awareness, including user preferences, to inaway from the traditional desktop system [1]. crease the non-intrusiveness of pervasive services. The overall When Weiser introduced the area of ubiquitous comput- objective is to achieve automatic composition of customized ing [2] in 1991, he put forth a vision of a deployment of pervasive services using components as building blocks by usdevices at varying scales, ranging from hand-held personal ing contextual information [4] for dealing with the variability digital assistants to larger shared devices providing the neces- of pervasive computing devices and user personalization. sary infrastructure support. He also envisioned a new paradigm In section II we discuss several non-functional concerns of interaction using natural interfaces such as speech, video with respect to services being targeted at ubiquitous computand sensor inputs, instead of traditional keyboard and mouse, ing environments and how a component-based development to facilitate communication between humans and computers. methodology can be of help for designing and deploying perThis new way of interaction with computational devices vasive services. Section III discusses how context, including introduces two important non-functional requirements with user preferences and resource availability among other inforrespect to the development of pervasive services. The first mation, and components are formally specified in OWL to suprequirement is that services should not be developed from port automated service composition for optimal deployment scratch to provide an optimal implementation for each device on a specific device. The core ideas of automated contextwith different capabilities and limitations. As such, the design driven composition of components into services are directly and the deployment process of services should offer the illustrated in section IV and build upon previous work on software engineer the necessary flexibility to target services context modeling [4], pervasive service specification [5] and</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        context management support [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In section V we evaluate our
composition infrastructure. Section VI provides an overview
of related work. We end with conclusions and future work in
section VII.
      </p>
      <p>II. NON-FUNCTIONAL CONCERNS OF PERVASIVE SERVICES</p>
      <p>Pervasive services offer a certain functionality to nearby
customers and are accessed in an anytime-anywhere fashion,
while being deployed on all kinds of devices. The aspects
of user mobility, personalization and context-awareness may
activate service adaptation and migration to other devices
with different characteristics. In this section we review several
non-functional concerns with respect to ensuring that all the
requirements of the delivery and provision of the service to
be consumed in a mobile and pervasive setting are met.</p>
      <p>These concerns have an impact on the design and the
deployment of services and often define deployment constraints
that take the capabilities and limitations of a device into
account as well as any user requirements or preferences with
respect to the service.</p>
    </sec>
    <sec id="sec-2">
      <title>A. Resource-awareness</title>
      <p>In the ubiquitous computing setting, available services will
approach the user on detection of his presence, while the user
wants to have the best deals. However, this multi-user and
multi-computer interaction causes a competition of resources
on shared devices. Therefore, resource-awareness about the
maximum availability and current usage of processing power,
memory, network bandwidth, battery lifetime, etc., is a
prerequisite to guarantee a minimum quality of service.</p>
      <p>
        Due to the black box nature of components, a component’s
functional properties (interfaces and task description) as well
as its non-functional properties (resource requirements and
adaptation policies) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] can be specified more easily to better
support resource-awareness.
      </p>
    </sec>
    <sec id="sec-3">
      <title>B. Mobility</title>
      <p>User mobility is a corner stone of the society of tomorrow.
Due to possible wireless network disruptions, a user may wish
to download and run a service locally. If, on the other hand, the
downloaded service does not run within the currently available
resources of the device, the user may wish to run the service
on a remote more powerful device in the vicinity of the user
or to relocate (parts of) an already running service. In both
cases the mobile setting of the user triggers service migration
to other devices.</p>
      <p>
        The encapsulation of the implementation of components and
their message-based interaction make it easy to relocate a
component for distributed execution of the service by instantiating
the component elsewhere [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and rerouting the messages.
      </p>
    </sec>
    <sec id="sec-4">
      <title>C. Adaptation</title>
      <p>In the face of highly dynamic environments, heterogeneous
devices and their changing context, services will need to adapt
to changing working conditions.</p>
      <p>
        For stateless components, a component can be replaced
with a similar component at runtime as long as the syntax
and semantics of the interfaces of a component remain the
same [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Other components may require state transfer first.
      </p>
    </sec>
    <sec id="sec-5">
      <title>D. A simple component-based application</title>
      <p>
        Our pervasive service design methodology makes use of the
SEESCOA component methodology [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] which is targeted at
software development for embedded systems. This implies that
a pervasive service incorporates components and connectors
to fulfill its functional aspects. Components provide the
functional building blocks of a service and use Component Ports
as communication gateways to other components. Connectors
serve as the message channel between these ports.
Communication between component ports is managed by sending
asynchronous Messages. Contracts [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] define restrictions or
requirements on two or more components or ports, for
example, to limit or guarantee memory availability or to define
timing constraints. Composite Components are prefabricated
compositions of component instances and act to the outside
as regular components. Their component ports are exported
internal component ports.
      </p>
      <p>The example in Figure 1 shows how three components,
Number Generator, Switch and Control Relay, are
composed into a new composite component Pausible
Number Generator. The number generator repeatedly
provides random numbers with a user-defined frequency. If
the Switch component is enabled, then the numbers are
shown on a screen by the Number Display component.
The random number generator interacts with the Scheduler
component to get notified of when to send out a new number.
The user is able to interact with the application by using the
Interactive Shell component. It provides a prompt to
send messages to the application, for example, to pause and
later continue the random number generation by (de)activating
the switch. These messages are intercepted by the Control
Relay component, which forwards the messages to the right
component. The Timing contract specifies timing constraints
for sending messages from the number generator to the switch
to ensure that messages are delivered on time, and is only
shown here for demonstration purposes.</p>
      <sec id="sec-5-1">
        <title>III. INTEGRATING CONTEXT-AWARENESS INTO</title>
        <p>COMPONENT-BASED PERVASIVE SERVICES</p>
        <p>The example in Figure 1 is an extension of an even smaller
application that does not include the switch and control relay.
In the latter case, the user is not able to pause the random
number generation.</p>
        <p>The core of our contribution is that pervasive services
are modeled by specifying all components, including the
optional components and that these components are
instantiated by selecting an appropriate implementation or bypassed
depending on the current context of the device or any user
requirements. The functional specification of components and
runtime support for their non-functional concerns in
component systems allow the programmer to design services in
terms of components and focus on program logic instead of
deployment dependencies. With proper middleware support,
the programmer does not need to implement resource
monitoring, decision making or adaptation of services to respond
to changing working conditions.</p>
        <p>
          Two prerequisites for context-aware composition of
pervasive services are an explicit model for specifying context
and middleware that is able to gather and interpret this
contextual information. In the Context Toolkit [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], context
is modeled as a set of key-value pairs. The more structured
approaches for modeling context that have been proposed
in the past use RDF [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], UAProf and CC/PP [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], and
CSCP [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Ontologies, which allow the definition of more
complex context models, have been used in several context
modeling approaches [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ].
        </p>
        <p>
          We have designed a context ontology [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] in OWL based on
the concepts of User, Platform, Service and Environment. This
ontology is specifically targeted at context-driven adaptation
of mobile services [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ]. This context ontology is used in our
context management system which is discussed in [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. The
context management system, which in itself is also
componentbased, provides all the necessary information for context-based
composition and adaptation of pervasive services. Pervasive
services in our methodology are more than just a collection of
components with specific responsibilities. In [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] we provide
a more detailed specification of pervasive services. In short,
pervasive services act as normal composite components but
with the following extra dedicated ports:
• Service Information Interface: the Service Information
Interface provides a static description of the semantics
&lt;owl:Class rdf:ID="SimpleComponent"&gt;
&lt;rdfs:subClassOf&gt;
&lt;owl:Restriction&gt;
&lt;owl:minCardinality rdf:datatype="&amp;xsd;#int"&gt;
1&lt;/owl:minCardinality&gt;
&lt;owl:onProperty&gt;
        </p>
        <p>&lt;owl:ObjectProperty rdf:ID="hasPort" /&gt;
&lt;/owl:onProperty&gt;
&lt;/owl:Restriction&gt;
&lt;/rdfs:subClassOf&gt;
&lt;/owl:Class&gt;
&lt;owl:Class rdf:ID="CompositeComponent"&gt;
&lt;rdfs:subClassOf rdf:resource="#SimpleComponent" /&gt;
&lt;rdfs:subClassOf&gt;
&lt;owl:Restriction&gt;
&lt;owl:minCardinality rdf:datatype="&amp;xsd;#int"&gt;
1&lt;/owl:minCardinality&gt;
&lt;owl:onProperty&gt;</p>
        <p>&lt;owl:ObjectProperty rdf:ID="hasComponentInstance" /&gt;
&lt;/owl:onProperty&gt;
&lt;/owl:Restriction&gt;
&lt;/rdfs:subClassOf&gt;
&lt;/owl:Class&gt;
&lt;owl:ObjectProperty rdf:about="#hasComponentInstance"&gt;
&lt;rdfs:domain rdf:resource="#CompositeComponent" /&gt;
&lt;rdfs:range rdf:resource="#ComponentInstance" /&gt;
&lt;/owl:ObjectProperty&gt;
&lt;owl:Class rdf:ID="Port"&gt;
&lt;rdfs:subClassOf&gt;
&lt;owl:Restriction&gt;
&lt;owl:cardinality rdf:datatype="&amp;xsd;#int"&gt;
1&lt;/owl:cardinality&gt;
&lt;owl:onProperty&gt;</p>
        <p>&lt;owl:DatatypeProperty rdf:ID="maxInstances" /&gt;
&lt;/owl:onProperty&gt;
&lt;/owl:Restriction&gt;
&lt;/rdfs:subClassOf&gt;
&lt;/owl:Class&gt;
&lt;owl:Class rdf:ID="PortGroup"&gt;</p>
        <p>
          &lt;rdfs:subClassOf rdf:resource="#Port" /&gt;
&lt;/owl:Class&gt;
...
and syntax of a service and its service ports, and hence
of how the service can be interfaced, so that other
components or services can discover and use the service.
This information is expressed in OWL-s [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. This port
is used to gather information about resource requirements
and adaptation policies.
• Service Control Interface: The Service Control Interface
is a standard dedicated interface for controlling a service.
It allows the service to be (re)started, updated, relocated,
stopped and uninstalled. By making this an obligatory
interface, no knowledge about the other service ports is
required for basic service management. This port is used
to alleviate the adaptation concern.
• Context Interface: The Context Interface is responsible
for the sending and receiving of the context information
available at run-time when the service is active. Among
other things, it allows the service to be notified of new
resources, and to inform other services or devices about
resources currently in use by this service.
        </p>
        <p>By modeling services as components, all aspects of composing
components into a services apply to services is well, which
means that services can be combined to form a new service.</p>
        <p>
          The automated composition of our infrastructure requires
that all components are fully specified. We therefore created
a component ontology in OWL which serves as a meta-model
of all the concepts of the SEESCOA methodology,
specifying components, ports, messages, parameters, connectors,
contracts, etc. as an OWL Class, ObjectProperty or
DatatypeProperty with cardinality restrictions where appropriate. See
Figure 2 for a partial meta-model specification of a
component in OWL 1. It allows the software engineer to validate
component descriptions by using a regular OWL validator [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]
so that for automated composition the infrastructure can rely
on correctly specified components. As components are
selfcontained and perhaps independently developed, we have to
make sure that messages sent out by one component port are
well understood by the other component port on the receiving
part of the connector. We therefore also declare all message
1The complete OWL meta-model specification of a component can
be found at http://www.cs.kuleuven.ac.be/˜davy/owl-s/
Component.owl
types as concepts in another OWL file. This concept ontology
is necessary as messages are not restricted to primitive data
types, such as strings and integers, but can also include
objects of any kind of which the inheritance properties can
be modeled in the concept ontology as well. The component
and concept ontology allow us to make sure that alternative
implementations of the same blueprint match syntactically and
semantically and that connected component ports exchange
messages that are understood by both parties.
        </p>
        <p>
          Context-awareness comes into play during the evaluation
of the non-functional properties of services and components.
The service and each component separately can specify
minimum resource requirements, such as the minimum
availability of memory, processing power or network bandwidth.
These resource requirements are specified by extending the
serviceParameter concept in OWL-s of which an
example is given in bold in Figure 3. In this example, a minimum
memory requirement for the service is specified, but it could
have been any contextual requirement with respect to concepts
in our context ontology [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. For example, user preferences in
a certain context with respect to a service could be taken into
account to increase the non-intrusiveness of the service.
        </p>
        <p>Our context-driven composition infrastructure instantiates a
pervasive service by connecting a selection of components
such that all requirements hold. In the next section, we will
describe an example of a service with several optional
components that can be activated when possible. These optional
components require extra resources, and we therefore specify
triggers to model QoS requirements and to define adaptation
policies.</p>
        <p>IV. CONTEXT-DRIVEN COMPOSITION OF PERVASIVE</p>
        <p>SERVICES</p>
        <p>The core ideas of how our infrastructure supports automated
context-driven composition of pervasive services are discussed
in this section. The concepts of taking into account the
capabilities and limitations of a device, resource awareness and
user preferences in a specific context are illustrated by means
of an example. We also provide an outline of our algorithm
to discuss the steps taken to deploy a customized pervasive
service and mention implementation details.</p>
        <p>Consider the following scenario in a ubiquitous and mobile
computing environment where two friends, Jack and Jill, are
having a conversation over the Internet:</p>
        <p>“Jack is heading off to work and using public transport.
He is using his advanced smartphone and a shared Internet
gateway service on the train. Bandwidth is equally shared by
all passengers currently logged on to the Internet gateway
service. Jill is at home using her laptop with broadband
Internet connection and has no resource limitations.</p>
        <p>The communication service both Jack and Jill downloaded
on their device is able to communicate using text messaging,
speech and video, sorted by increasing bandwidth
requirements. The speech and video quality (high, medium and low)
depends on the compression, the frame rate and the frame
size being used. These parameters are chosen dynamically
depending on the available bandwidth and processing power
on the smartphone or are defined as user preferences in a
certain context.”
A. The component-based model of the communication service</p>
        <p>See Figure 4 for a simplified overview of both services. We
will now focus on the Communication Service for which a
composition will be auto-instantiated depending on the current
context of the user and the communication device. The service
has the following components:
• Audio Encoder and Decoder: Adaptable and optional
components for (de-)compressing the audio stream with
high, medium or low quality encoding.
• Video Filter: Optional components for reducing the video
frame rate or changing the frame size. See Figure 5
for an instantiation of the OWL component meta-model.
The component name and port names are in bold for
clarification purposes.
• Video Encoder and Decoder: Adaptable and optional
components for (de-)compressing the video stream with
high, medium or low quality encoding.
• Controller: (de-)multiplexes text, speech and video, and
sends/receives the combined data stream.</p>
        <p>The audio and video components in this service model are
optional, and can be activated when enough resources are
available. These components can have several implementations
using different encoding schemes. Both parties would have to
agree which encoding schemes can be used on the two
communication devices. However, in this example one party, Jill,
has no resource restrictions and can instantiate any component
she likes.
&lt;component:SimpleComponent rdf:ID="FrameRateFilter"&gt;
&lt;component:hasPort rdf:resource="#FrameRate"/&gt;
&lt;component:hasPort rdf:resource="#VideoIn"/&gt;
&lt;component:hasPort rdf:resource="#VideoOut"/&gt;
&lt;component:PortGroup rdf:ID="FrameRate"&gt;
&lt;component:maxInstances rdf:datatype="&amp;xsd;#int"&gt;
1&lt;/component:maxInstances&gt;
&lt;component:hasMessage&gt;
&lt;component:InMessage rdf:ID="SetFrameRate"&gt;
&lt;component:hasParameter&gt;
&lt;component:Parameter rdf:ID="FramePerSec"&gt;
&lt;component:parameterType rdf:datatype=</p>
        <p>"&amp;xsd;#anyURI"&gt;&amp;xsd;#int
&lt;/component:parameterType&gt;
&lt;/component:Parameter&gt;
&lt;/component:hasParameter&gt;
&lt;/component:InMessage&gt;
&lt;/component:hasMessage&gt;
&lt;/component:PortGroup&gt;
&lt;component:PortGroup rdf:ID="VideoIn"&gt;
&lt;component:maxInstances rdf:datatype="&amp;xsd;#int"&gt;
1&lt;/component:maxInstances&gt;
&lt;component:hasMessage&gt;
&lt;component:InMessage rdf:ID="NewFrame"&gt;
&lt;component:hasParameter&gt;
&lt;component:Parameter rdf:ID="Frame"&gt;
&lt;component:parameterType rdf:datatype=</p>
        <p>"&amp;xsd;#anyURI"&gt;&amp;concepts;#VideoFrame
&lt;/component:parameterType&gt;
&lt;/component:Parameter&gt;
&lt;/component:hasParameter&gt;
&lt;/component:InMessage&gt;
&lt;/component:hasMessage&gt;
&lt;/component:PortGroup&gt;
&lt;component:MulticastPort rdf:ID="VideoOut" /&gt;</p>
        <p>&lt;!-- Similar to the video-in port --&gt;
...
&lt;/component:SimpleComponent&gt;</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>B. Resource requirements for deployment</title>
      <p>
        The minimum resource requirements for the service, as
shown in bold in Figure 3, specify what is needed to have a
text-based conversation. This kind of communication requires
the least bandwidth and processing power. If more resources
are available, audio and video-based communication can be
enabled as well. Information about available resources is
provided by our context management system [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In this example,
the limiting factors are the processing capabilities of the smart
phone and the available bandwidth for each passenger. An
overview of all resource requirements is given in Table I.
The total bandwidth requirements for video streaming depend
on the quality options and the use of other video filters. The
processing power requirements are only an estimate as a real
device may have hardware support for multimedia
applications. Our prototype is implemented in the Java language and
makes use of other pure Java libraries. Therefore, the system
requirements are a lot higher to process audio and video on
demand in real-time.
      </p>
    </sec>
    <sec id="sec-7">
      <title>C. User preferences in a certain context</title>
      <p>A user may have a preference stating that during office hours
the high quality option for video encoding should be used.
See Figure 6, the preference property and value as well as the
time and location conditions are marked in bold. Using this
contextual information, an appropriate service is instantiated
that takes any user preferences and the current available
resources and the limitations and capabilities of the device into
account. For example, before deploying the communication
service on a PDA or smart phone, we check if the hardware
has the necessary support for video communication as, for
example, not all devices have a camera on-board.
D. Outline of the context-driven service composition
procedure</p>
      <p>The goal of our context-driven composition infrastructure
is an automated instantiation of a service targeted at the
capabilities of a specific device that takes into account any
user preferences in a specific context. The whole algorithm
is entirely based on the processing of OWL and OWL-s
specifications and consists of the following steps.
1) Hardware Process the hardware description of the
device to discover resource specifications, such as
maximum available memory, processing power, network
bandwidth, etc., as well as support for user input and
output, such as microphone, camera, speaker, keyboard,
display, sensors, etc. This is part of the context
specification of a device and is largely static information.
2) Resource awareness Request the current available
resources from the context management system. This is
also part of the current context, but mostly dynamic
information achieved by monitoring the system.
3) Service requirements Check any I/O requirements of
the service with the I/O support of the device. Check
if the minimal resource requirements can be fulfilled. If
deploying is not possible, then stop or propose to run
the service on another device in the neighborhood or
relocate already running services.
4) User preferences Check for all preferences if the
context of application is fulfilled and if these preferences
can be enforced given the available resources. Checking
if the context applies, may require some reasoning steps,
for example, to determine that geographical coordinates
of a GPS system point to a location known as our office.
5) Component selection Given the available resources,
eliminate all optional components which resource
requirements are too demanding. For each obligatory
component, retrieve the resource requirements for all of
its implementations.
6) Constraint solving Given the above resource constraints
of the device and the requirements for the obligatory
components and user preferences, solve the set of
equations to find a minimal composition of component
instances. Cut down on the user preferences if no solution
is found.
7) Adaptation policy Check which optional components
can be enabled for the preliminary minimal service
instantiation from the previous step. Given the available
resources, these optional components can be enabled
immediately, when enough resources are available or
when the context changes and other user preferences
are to be applied.</p>
      <p>
        For the multimedia components of the communication
service, we made use of the IBM Mpeg4 Java toolkit [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]
and for the OWL parsing and reasoning the Jena2
framework [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] is used. The necessary infrastructure support for
instantiating a customized service based on the service model
was developed on top of Draco [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], an extensible runtime
system for components designed to be run on embedded
devices. It acts as a component container that instantiates
components and manages all connections between
components. It has runtime support for non-functional concerns, such
as component distribution, live updates, contract monitoring
and resource management. This runtime environment with
extensions provides a unique test platform for validating the
proposed service concepts in a ubiquitous computing context.
      </p>
      <sec id="sec-7-1">
        <title>V. EVALUATION</title>
        <p>The case study has shown that for varying hardware and
resource descriptions the implemented infrastructure is able to
compose and instantiate a service while also taking the user
preferences into account. Another advantage is that composing
the service targeted at a specific device can also be carried out
on a more powerful device when composing the service, for
example, on a personal hand-held would take too long.</p>
        <p>Something that is currently not implemented is multi-party
negotiation of which components to instantiate as there can
be dependencies between component deployments on different
devices. In the above example, there is no use in instantiating
a video encoding component on one device if the other party
is not able to process or show the video stream.</p>
        <p>
          The two non-functional concerns with respect to
resourceawareness and user-preferences in a certain context are easily
managed using a component-based methodology if all aspects
are fully specified. These aspects are specified by hand in
OWL using the Prote´ge´ [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] tool. We acknowledge that this
is not a user friendly way to declare user preferences.
        </p>
        <p>
          However, not all non-functional aspects can be solved that
easily using a component-based software engineering
methodology. For cross-cutting concerns, such as security or logging,
an aspect-oriented software development approach (AOSD)
can prove to be more useful. Security concerns, for example,
relate to the connection between components and may impose
restrictions on how to customize and adapt pervasive services,
such as restricting the relocation of parts of a service to another
device to avoid interception of sensitive messages sent over
a network. The disadvantage of using AOSD techniques is
that depending on the tools applied, such as AspectJ [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ],
the technology can be quite invasive while modifying the
component in such a way that other non-functional concerns,
such as resource requirements, are no longer guaranteed to be
correct.
        </p>
      </sec>
      <sec id="sec-7-2">
        <title>VI. RELATED WORK</title>
        <p>
          Two very well-known component models are OMG’s
CORBA Component Model (CCM) [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ] and Sun’s Enterprise
JavaBeans (EJB) [
          <xref ref-type="bibr" rid="ref27">27</xref>
          ]. However, both only provide limited
support for non-functional concerns, such as persistency,
transactions and access control. Neither of them provide support for
dynamic selection of component instantiations.
        </p>
        <p>
          The COMQUAD component model [
          <xref ref-type="bibr" rid="ref28">28</xref>
          ] provides support
for non-functional aspects and describes them orthogonally
to the application structure using descriptors. These
nonfunctional aspects are woven into the application using an
AOSD approach based on the non-functional properties of
components. Additionally, the COMQUAD component model
has extensions to provide support for stream-based
communication. However, selecting components based on functional
properties is not the goal of the authors. In our composition
infrastructure, both functional and non-functional properties
need to be considered to guarantee interoperability. The
authors are working on providing support for adaptational
behavior, as already supported in our infrastructure using
composite components. The authors also acknowledge the
interference between functional and non-functional aspects
and between different non-functional concerns. Additionally,
our infrastructure supports automated component selection and
composition using a context-driven approach.
        </p>
        <p>
          Efstratiou et al. [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] propose an architecture with support
for context-aware service adaptation. The authors describe the
architectural requirements for adaptation control and
coordination for mobile applications. The adaptation mechanisms to
respond to, for example, a change in resource availability, are
less flexible than ours as the authors define operational modes
of an application together with a contextual trigger that would
make the application switch to that mode. This coarse-grained
adaptation mechanism allows them to use very simple XML
descriptions of a service and operation mode. Our approach
does not require the software engineer to define all possible
instantiations of a service. Our composition infrastructures
takes care of finding an appropriate composition, which
additionally supports taking user preferences into account.
Our infrastructure allows operation modes that the software
developer originally may have not yet foreseen.
        </p>
        <p>
          Lin et al. [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ] propose a goal description language for
automatic composition of semantic web services. The authors
acknowledge that it is hard to adapt to users’ requirements
in current web service compositions, and propose a goal
description language based on the OWL ontology description
language to describe the goals that need to be achieved,
relationships within goals, constraints for achieving the goals,
and a way to detect any inconsistencies in the specified goals.
However, this language for automatic composition is targeted
at web services and does not consider the non-functional
requirements of pervasive services as mentioned in a previous
section.
        </p>
      </sec>
      <sec id="sec-7-3">
        <title>VII. CONCLUSION AND FUTURE WORK</title>
        <p>We have developed infrastructure support for automated
context-driven composition of components into pervasive
services, while taking into account non-functional concerns such
as the capabilities and limitations of a device on which it will
be deployed, resource availability and user preferences in a
specific context. It lets the software engineer focus on the
application logic of smaller building blocks, while optimal
deployment of a service on a specific device and adaptation
support for responding to changing working conditions is
managed by our supporting infrastructure.</p>
        <p>
          First, we have identified several non-functional concerns
with respect to pervasive services and then discussed how a
component-based methodology can alleviate these concerns.
We formalized the component methodology by creating a
meta-model of all software aspects of components to allow
automated processing of the functional and non-functional
properties of components and services. We discussed how
contextawareness can be used for composition of component-based
services using our previous work on context modeling [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ],
specification of pervasive services [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] and context management
support [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. We illustrated the core ideas of our infrastructure
support by means of an example, and gave an outline of all
the steps in the procedure to achieve a customized service.
We evaluated our work and can conclude that for targeting
a specific platform and incorporating user preferences, our
automated context-driven composition infrastructure is able
to provide the necessary support for these non-functional
concerns typical for pervasive services.
        </p>
        <p>However, more work should be carried out to provide
support for cross-cutting non-functional concerns, such as
security. Security requirements cannot be derived from component
descriptions as is the case for resource requirements. Future
work in the short term will focus on how to integrate
multiparty negotiation for selecting and instantiating components in
the presence of dependencies between component deployments
on different devices.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Weiser</surname>
          </string-name>
          , “
          <article-title>The world is not a desktop</article-title>
          ,
          <source>” Interactions</source>
          , pp.
          <fpage>7</fpage>
          -
          <lpage>8</lpage>
          , Jan.
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Weiser</surname>
          </string-name>
          , “
          <article-title>The Computer for the Twenty-First Century</article-title>
          ,” Scientific American, pp.
          <fpage>99</fpage>
          -
          <lpage>104</lpage>
          , Sept.
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>C.</given-names>
            <surname>Szyperski</surname>
          </string-name>
          , Component Software:
          <article-title>Beyond Object-Oriented Programming, 2nd edition</article-title>
          .
          <article-title>Addison-Wesley and</article-title>
          ACM Press,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Preuveneers</surname>
          </string-name>
          , J. Van den Bergh,
          <string-name>
            <given-names>D.</given-names>
            <surname>Wagelaar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Georges</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Rigole</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Clerckx</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Coninx</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Jonckers</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          K. De Bosschere, “
          <article-title>Towards an extensible context ontology for Ambient Intelligence</article-title>
          ,”
          <source>in Proceedings of the Second European Symposium on Ambient Intelligence</source>
          . Springer-Verlag,
          <year>November 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Preuveneers</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          , “
          <article-title>Semantic and syntactic modeling of component-based services for context-aware pervasive systems using OWL-s,”</article-title>
          <source>in Proceedings of 1st International Workshop on Managing Context Information in Mobile and Pervasive Environments (MCMP2005)</source>
          (to appear), Ayia Napa, Cyprus, May
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Preuveneers</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          , “
          <article-title>Adaptive context management using a component-based approach</article-title>
          ,”
          <source>in LNCS 3543: Proceedings of 5th IFIP International Conference on Distributed Applications and Interoperable Systems (DAIS2005)</source>
          (to appear),
          <source>ser. Lecture Notes in Computer Science (LNCS)</source>
          , L. Merakos,
          <string-name>
            <given-names>N.</given-names>
            <surname>Alonistioti</surname>
          </string-name>
          , and L. Kutvonen, Eds., vol.
          <volume>3543</volume>
          . Athens, Greece: Springer,
          <year>June 2005</year>
          , pp.
          <fpage>14</fpage>
          -
          <lpage>26</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Wils</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gorinsek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. Van</given-names>
            <surname>Baelen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          K. De Vlaminck, “
          <article-title>Flexible Component Contracts for Local Resource Awareness</article-title>
          ,” in ECOOP 2003 Workshop on resource aware computing, C. Bryce and G. Czajkowski, Eds.,
          <year>July 2003</year>
          . [Online]. Available: http://www.cs.kuleuven.ac.be/∼ andrew/stuff/ecoop2003.pdf
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>P.</given-names>
            <surname>Rigole</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          , and T. Holvoet, “
          <article-title>Mobile adaptive tasks guided by resource contracts,” in the 2nd Workshop on Middleware for Pervasive</article-title>
          and
          <string-name>
            <surname>Ad-Hoc</surname>
            <given-names>Computing</given-names>
          </string-name>
          , Toronto, Ontario, Canada,
          <year>October 2004</year>
          , pp.
          <fpage>117</fpage>
          -
          <lpage>120</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Vandewoude</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          , “
          <article-title>Run-time evolution for embedded component-oriented systems</article-title>
          ,”
          <source>in Proceedings of the International Conference on Software Maintenance</source>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Werner</surname>
          </string-name>
          , Ed. Canada: IEEE Computer Society,
          <year>October 2002</year>
          , pp.
          <fpage>242</fpage>
          -
          <lpage>245</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D.</given-names>
            <surname>Urting</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. Van</given-names>
            <surname>Baelen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Holvoet</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Berbers</surname>
          </string-name>
          , “
          <article-title>Embedded software development: Components and contracts</article-title>
          ,”
          <source>in Proceedings of the IASTED International Conference Parallel and Distributed Computing and Systems</source>
          ,
          <year>2001</year>
          , pp.
          <fpage>685</fpage>
          -
          <lpage>690</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>A. K. Dey</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Salber</surname>
            , and
            <given-names>G. D.</given-names>
          </string-name>
          <string-name>
            <surname>Abowd</surname>
          </string-name>
          , “
          <article-title>A conceptual framework and a toolkit for supporting the rapid prototyping of context-aware applications,” Human-Computer Interaction (HCI) Journal</article-title>
          , vol.
          <volume>16</volume>
          , no.
          <issue>2-4</issue>
          , pp.
          <fpage>97</fpage>
          -
          <lpage>166</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12] Korpipa¨a¨,
          <string-name>
            <surname>P.</surname>
          </string-name>
          , et al., “
          <article-title>Managing context information in mobile devices</article-title>
          ,
          <source>” IEEE Pervasive Computing, Mobile and Ubiquitous Systems</source>
          , vol.
          <volume>2</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>42</fpage>
          -
          <lpage>51</lpage>
          ,
          <string-name>
            <surname>July-September</surname>
          </string-name>
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Indulska</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , et al.,
          <article-title>“Experiences in using cc/pp in context-aware systems,”</article-title>
          <source>in LNCS 2893: Proceedings of 4th IFIP WG 6.1 International Conference on Distributed Applications and Interoperable Systems (DAIS2003)</source>
          ,
          <source>ser. Lecture Notes in Computer Science</source>
          (LNCS),
          <string-name>
            <surname>J.-B. Stefani</surname>
            ,
            <given-names>I. Dameure</given-names>
          </string-name>
          , and D. Hagimont, Eds., vol.
          <volume>2893</volume>
          . Paris/France: Springer Verlag,
          <year>November 2003</year>
          , pp.
          <fpage>224</fpage>
          -
          <lpage>235</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Buchholz</surname>
          </string-name>
          , T. Hamann, and G. Hubsch, “
          <article-title>Comprehensive structured context profiles (cscp): Design and experiences</article-title>
          ,”
          <source>in Proceedings of the Second IEEE Annual Conference on Pervasive Computing and Communications Workshops</source>
          ,
          <year>March 2004</year>
          . [Online]. Available: citeseer.ist.psu.edu/690057.html
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Strang. T.</surname>
          </string-name>
          , et al.,
          <article-title>“CoOL: A Context Ontology Language to enable Contextual Interoperability,”</article-title>
          <source>in LNCS 2893: Proceedings of 4th IFIP WG 6.1 International Conference on Distributed Applications and Interoperable Systems (DAIS2003)</source>
          ,
          <source>ser. Lecture Notes in Computer Science</source>
          (LNCS),
          <string-name>
            <surname>J.-B. Stefani</surname>
            ,
            <given-names>I. Dameure</given-names>
          </string-name>
          , and D. Hagimont, Eds., vol.
          <volume>2893</volume>
          . Paris/France: Springer Verlag,
          <year>November 2003</year>
          , pp.
          <fpage>236</fpage>
          -
          <lpage>247</lpage>
          . [Online]. Available: http://www.kn.op.dlr.de/∼ strang/paper/dais2003
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Gu</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , et al.,
          <article-title>“An ontology-based context model in intelligent environments,”</article-title>
          <source>In Proceedings of Communication Networks and Distributed Systems Modeling and Simulation Conference</source>
          , San Diego, California, USA,
          <year>January 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>H.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Finin</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Joshi</surname>
          </string-name>
          , “
          <article-title>An ontology for context-aware pervasive computing environments,” Special Issue on Ontologies for Distributed Systems</article-title>
          , Knowledge Engineering Review,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>DistriNet (K.U.Leuven</surname>
          </string-name>
          ),
          <source>EDM (LUC)</source>
          ,
          <article-title>ELIS-PARIS (UGent), PROG (VUB) and SSEL (VUB</article-title>
          ), “CoDAMoS: Context Driven Adaptation of Mobile Services,” http://www.cs.kuleuven.ac.be/cwis/research/distrinet/ projects/CoDAMoS/.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>The</surname>
            <given-names>OWL Services</given-names>
          </string-name>
          <string-name>
            <surname>Coalition</surname>
          </string-name>
          , “
          <article-title>OWL-S: Semantic Markup for Web Services</article-title>
          ,
          <source>Release</source>
          <volume>1</volume>
          .1,” http://www.daml.org/services/owl-s/1.1/index.html,
          <year>November 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>BBN</given-names>
            <surname>Technologies</surname>
          </string-name>
          , “vOWLidator, version
          <volume>20040716</volume>
          ,” http://projects.semwebcentral.org/projects/vowlidator/,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21] IBM alphaWorks, “
          <article-title>IBM Toolkit for MPEG-4</article-title>
          ,” http://www.alphaworks.ibm.com/tech/tk4mpeg4.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>HP</given-names>
            <surname>Labs</surname>
          </string-name>
          , “Jena 2 -
          <string-name>
            <given-names>A</given-names>
            <surname>Semantic Web</surname>
          </string-name>
          <string-name>
            <surname>Framework</surname>
          </string-name>
          ,” http://www.hpl.hp. com/semweb/jena2.htm,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Vandewoude</surname>
          </string-name>
          , “
          <article-title>Draco: An adaptive runtime environment for components</article-title>
          ,” http://www.cs.kuleuven.ac.be/˜yvesv/Draco/index.html.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Stanford</given-names>
            <surname>Medical</surname>
          </string-name>
          <string-name>
            <surname>Informatics</surname>
          </string-name>
          , “
          <article-title>The Prote´ge´ Ontology Editor and Knowledge Acauisition System</article-title>
          ,” http://protege.stanford.edu/,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <article-title>The AspectJ project, “aspectj - crosscutting objects for better modularity</article-title>
          ,” http://www.eclipse.org/aspectj/,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26] Object Management Group, “CORBA Component Model,
          <year>v3</year>
          .0,” http://www.omg.org/cgi-bin/apps/doc?formal/02-06-65.pdf,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Sun</surname>
            <given-names>Microsystems,</given-names>
          </string-name>
          “
          <source>The Enterprise JavaBeans 2</source>
          .1 specification,” http://java.sun.com/products/ejb/docs.html,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>S.</given-names>
            <surname>Go</surname>
          </string-name>
          ¨ bel, C. Pohl,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <article-title>R o¨ttger, and S. Zschaler, “The COMQUAD component model: enabling dynamic selection of implementations by weaving non-functional aspects,”</article-title>
          <source>in AOSD '04: Proceedings of the 3rd international conference on Aspect-oriented software development</source>
          . New York, NY, USA: ACM Press,
          <year>2004</year>
          , pp.
          <fpage>74</fpage>
          -
          <lpage>82</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>C.</given-names>
            <surname>Efstratiou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Cheverst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Davies</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Friday</surname>
          </string-name>
          , “
          <article-title>An architecture for the effective support of adaptive context-aware applications</article-title>
          ,”
          <source>in Proceedings of 2nd International Conference in Mobile Data Management (MDM'01)</source>
          , vol.
          <source>Lecture Notes in Computer Science</source>
          Volume 1987. Hong Kong: Springer,
          <year>January 2001</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>26</lpage>
          . [Online]. Available: citeseer.ist.psu.edu/efstratiou01architecture.html
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>M.</given-names>
            <surname>Lin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Guo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Yin</surname>
          </string-name>
          , “
          <article-title>Goal description language for semantic web service automatic composition</article-title>
          .”
          <string-name>
            <surname>in</surname>
            <given-names>SAINT</given-names>
          </string-name>
          ,
          <year>2005</year>
          , pp.
          <fpage>190</fpage>
          -
          <lpage>196</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>