Web services are self-described, loosely coupled software components that are network-accessible
through standardized web protocols, whose characteristics are described in XML. One of the key
promises of Web services is to provide better interoperability and to enable a faster integration
between systems. In order to generate robust service oriented architectures, automatic composition
algorithms are required in order to combine the functionality of many single services into composite
services that are able to respond to demanding user requests, even when there is no single service
capable of performing such task. Service composition consists of a combination of single services
into composite services that are executed in sequence or in a different order, imposed by a set of
control constructions that can be specified using standard languages such as OWL-s or BPEL4WS.
In the last years several papers have dealt with composition of web services. Some approaches treat
the service composition as a planning problem, where a sequence of actions lead from a initial state
to a goal state. However, most of these proposals have some drawbacks: high complexity, high
computational cost and inability to maximize the parallel execution of web services. Other
approaches consider the problem as a graph search problem, where search algorithms are applied
over a web service dependency graph in order to find a solution for a particular request. These
proposals are simpler than their counterparts and also many can exploit the parallel execution of
web services. However, most of these approaches rely on very complex dependency graphs that
have not been optimized to remove data redundancy, which may negatively affect the overall
performance and scalability of these techniques in large service registries. Therefore, it is necessary
to identify, characterize and optimize the different tasks involved in the automatic service
composition process in order to develop better strategies to efficiently obtain optimal solutions. The
main goal of this dissertation is to develop a graph-based framework for automatic service
composition that generate optimal input-output based compositions not only in terms of complexity
of the solutions, but also in terms of overall quality of service solutions. More specifically, the
objectives of this thesis are: (1) Analysis of the characteristics of services and compositions. The
aim of this objective is to characterize and identify the main steps that are part for the service
composition process. (2) Framework for automatic graph-based composition. This objective will
focus on developing a framework that enables the efficient input-output based service composition,
exploring the integration with other tasks that are part of the composition process, such as service
discovery. (3) Development of optimal algorithms for automatic service composition. This objective
focuses on the development of a set of algorithms and optimization techniques for the generation of
optimal compositions, optimizing the complexity of the solutions and the overall Quality-of-
Service. (4) Validation of the algorithms with standard datasets so they can be compared with other
proposals