The Future Internet promotes the production of a distributed computing environment that will be increasingly surrounded by a virtually infinite number of software services, which can be composed to meet user needs. Services will be increasingly active entities that, communicating in a peer-to-peer style, can proactively take decisions and autonomously engage in tasks. Service choreography is a form of decentralized service composition that describes peer-to-peer message exchanges occurring among participant services from a global perspective. In a distributed setting, obtaining the coordination logic required to realize a choreography is a non-trivial and error prone task. Automatic support to the realization of actual choreographies is then needed. To this purpose, we have developed a synthesis tool for the automatic realization of service choreographies.The Future Internet (FI) era represents an age of unprecedented opportunities for social, economic, and business growth. FI promotes the existence of a distributed computing environment that will be increasingly surrounded by a virtually infinite number of software services. This enables the growth of innovative and revolutionary everyday-life scenarios within smart cities, and related software ecosystems, that ease human daily activities and give support to new markets and employment opportunities. A key enabler for this vision is the ability to automatically compose and dynamically coordinate software services.Today's service composition mechanisms are mostly based on service orchestration [2,8], which is a centralized approach to composing multiple services into a larger application. By analogy with music, orchestration can be seen as the process in which musicians play instruments following an orchestrator that represents a single point of control. Orchestration works well in rather static environments where services are predefined and environment changes are minimal. These assumptions are inadequate in the FI vision where a large number of diverse service providers and consumers keep changing and cannot be coordinated by using a centralized approach.Differently, service choreography is a decentralized approach, which provides a looser way to design service composition by specifying participants and message protocols between them. By analogy with dance, choreography can be seen as a set of dancers that autonomously dance following a pre-established global scenario without a single point of control. The need for service choreography was recognized in BPMN2 (www.omg.org/spec/BPMN/2.0), which introduces choreography modeling constructs. Specifically, service choreographies model peer-to-peer communication by defining a multi-party protocol that, when put in place by the cooperating parties, permits to reach the overall choreography objectives in a fully distributed way. In this sense, service choreographies are significantly different from service orchestrations in which a single stakeholder centrally plans and decides how an objective should be reached through...