|dc.description.abstract||In recent years, software applications have evolved from monolithic, stable, centralized and
structured applications, to highly decentralized, distributed and dynamic software. This evolution
has naturally enforced a change in the development process of such software.
The practice of building in-house software for specific purposes, turned to the development
of small pieces of encapsulated code implementing specific tasks that can be reused in different
applications, that were known as "off-the-shelf" components. Moreover, these software components,
that gave base to the concept of component-based software development, could be independently
developed and provided by third parties, decentralizing, at least partly, the development
process. This practice reduced the necessity of rewriting commonly used tasks, helped to cope
with changing requirements, and focused in an intelligent separation oftasks that are delegated
to software components, that are glued together to create the new application [DNGM+os].
However, in that situation, the ownership and the management ofthe application are still in
the hands ofthe entity that develops the application. The next step carne when the focus turned
to the provision of a functionality instead of just a piece of software, and this functionality begun
to be provided "as a service". In this situation, independent providers offer a set of functionalities
in the form of services that can be accessed and used in a standard way, facilitating the
aggregation of such services to create new service compositions with added value, better suited
to their current needs. Such applications are referred toas service-based applications.
The service-based approach to software development has, undoubtedly, many advantages.
Code reutilisation, outsourcing, and modularity provide a more rapid development process. The
possibility of having third parties providing functionalities that can be accessed in a standard
way has given rise to an ever-growing number of loosely-coupled geographically dispersed services
available on the Internet, that has naturally taken the role of being the delivery means
for such services. Composition standards have been developed to facilitate the creation of aggregated
services giving rise to a rapidly evolving service ecosystem.
Such dynamism has also been a response to evolving requirements in software development.
In fact, the software development process used to considera "closed-world" assumption in which
the externa! world changes so slowly that software can remain stable for a long period before any
major update needs to applied. However, each time more and more situations arise where this assumption is not anymore valid and software applications must face an "open-world" in which
the environment changes continuously and applications need to adapt and react to changes in
a dynamic way, even if those changes are unanticipated [BDNG06].
However such dynamicity, loosely-coupling and heterogeneity of providers has introduced not
trivial challenges in the management of service-based applications. As the maintenance of the
software does not depend completely on the provider of a service composition, due to the fact
that sorne pieces of them may be under the control of third parties, sorne characteristics that
are usually manageable in controlled environments, like availability, response time, security,
and others related to the quality of the delivered service, are not always ensured. Even if the
provider is able to manage all the services in a composition, environmental factors like network
latency, congestion, and hardware failures may affect the service in unforeseen ways. Traditional
optimization cycles where the application is stopped, analyzed, modified and restarted does not
fit well in a situation where not all the services are under the control of a single entity, and
where there is a need to timely react to requirements and environmental changes, automating
the analysis and decision taking phases as much as possible, and with a minimal perturbation
in the availability of these services.||