A growing number of organizations have implemented information systems in its various departments. Also, are increasingly pushing the boundaries of the company itself. The challenge that arises in this context is to find a solution that is extensible, flexible, and is compatible with existing systems. Performing the replacement of legacy systems, with a view to incorporating new technologies and requirements, can bring risks to the application running, and have, in general, a high cost associated.
In this scenario, an old concept has returned to prominence, that of service-oriented architectures. With the advent of platform independent programs (interoperable), the idea of having transparently services running on various platforms began to be especially attractive, particularly when it comes to system integration. SOA (Service Oriented Architecture) is a recently broadcast technology based on service orientation and tends to revolutionize the current forms of systems development. The service is the atomic unit of SOA and systems operate through a collection of independent services, where they can interact with various other services to perform certain tasks. One of the main points of this technology is the reuse of previously implemented and tested services, reducing the total time of the project, the associated costs and reducing risks in development and maintenance.
One of the main ideas advocated by SOA is the reuse, where complex systems can be developed using the most basic services. In this context, it appears again the concept of service composition. This concept is not an entirely new idea. In the recent past, attempts were performed to develop systems incorporating pre-existing services. However, some points prevented the success of that concept:
- Overly complex systems and low level;
- Greater effort required to develop (especially in distributed and heterogeneous systems);
- Lack of standards.
Thanks to the advent of Web services, not only the SOA has returned to the topic of extreme interest, but also the composition of services. Based on a sufficiently accepted and high-level set of standards, the web services provide a favorable environment for service composition.
As an example of service composition, one can imagine a language translator to be able to translate Portuguese texts into Arabic. If there is available a direct translator for both languages, but a Portuguese translator for English and another from English to Arabic, the service can be created by composing the two other pre-existing.
Services can be composed of static or dynamic way. This choice depends on the type of process being made. If the services that will be compounded have a fixed nature, or rarely change their interfaces and semantics, the static composition meets the needs. However, a process can contain a set of functions poorly defined to be performed, or so he has to be able to dynamically adapt to unforeseen changes in the environment. For these cases, the static composition may not be the best approach since changes to a static composition based system requires interruption of the continuity of the process. The dynamic composition is an important alternative in this case, given that there are critical processes that can not be interrupted.