because we have assumed that an end-user does not have the technical skills necessary
to select the most appropriate composition. However, the end-user may be asked to indi-
cate which properties should have the highest priority in the selection of a composition
(e.g., the aggregate cost of using the services in the composition, or the performance of
the composition in terms of response delay). In any case, this phase should be as trans-
parent as possible for the end-user, i.e., the resulting composition should be selected
only based on the service request and the user’s preferences and context. In the case of
a service developer, a list of services that match the service request may be returned.
Mechanisms to rank the generated service compositions may be used to facilitate the
selection of the composition that is finally used.
Service delivery is the phase that follows service composition selection, and it is
concerned with the activities that are necessary to allow the end-user to use the ser-
vice composition. This phase is necessary because the resulting composition may still
be represented in some (formal) technology-independent notation, while an executable
representation is necessary to deploy and execute the composition as a concrete ser-
vice. In the case of a service developer, a service composition description may also be
required to allow the composition to be published as a new service, so these issues are
also relevant to this phase.
Service deployment is a phase that applies only to the end-user case. The end-user
expects a running service, so the selected composition has to be deployed to allow its
instantiation and invocation by the end-user.
At the end of the life-cycle some actions may still occur, depending on the stake-
holder. In the case of an end-user, the service composition is invoked to deliver the
service requested by the end-user. In the case of a service developer, the list of services
is returned so that the most suitable composition the developer needs can be selected.
The service developer may possibly adapt the composition further, to include some
additional functionality. Fig. 2 shows an additional phase for the case of service devel-
opers, in which the service developer publishes the composed service so that it can be
used later by end-users or other developers.
4 Prototype for Dynamic Composition of Services
This section discusses the prototype we are building to implement the different phases
of the dynamic service composition life-cycle. We are mainly aiming at developing a
modular, scalable and extensible architecture, to address each of the life-cycle phases,
but also at supporting different concrete technologies, such as, for example, different
service description languages.
In our prototype we are currently using Spatel [8], which is a language developed
in the European project IST SPICE [9] in which this work is embedded. Spatel sup-
ports service description, creation, composition and execution. It also supports seman-
tic description of services, through references to ontologies. Ontologies are formal rep-
resentations of conceptualizations, and are necessary in our approach to automate the
different tasks of the service composition life-cycle, providing the abstraction and trans-
parency needed in the dynamic service composition process.
84