This work contributes to the field of coordination, in particular to Reo, by improving existing approaches to execute synchronisation models in three major ways. First, this work supports decoupled... Show moreThis work contributes to the field of coordination, in particular to Reo, by improving existing approaches to execute synchronisation models in three major ways. First, this work supports decoupled execution and lightweight reconfiguration. We developed a prototype Dreams engine to test our distributed protocol, using an actor library for the Scala language. Reconfiguration of a small part of the system is independent of the execution or behaviour of unrelated parts of the same system. Second, Dreams outperforms previous Reo engines by using constraint satisfaction techniques. In each round of the execution of the Dreams framework, descriptions of the behaviour of all building blocks are combined and a coordination pattern for the current round is chosen using constraint satisfaction techniques. This approach requiring less time than previous attempts that collect all patterns before selecting one. Third, our work improves scalability by identifying synchronous regions. We statically discover regions of the coordination layer that can execute independently, thus achieving a truly decoupled execution of connectors. Consequently, the constraint problem representing the behaviour at each round is smaller and more easily solved. Show less
In the last years, there has been a growing interest for distributed systems both in computer science and in society. The most popular and biggest distributed system in the world is the Internet. A... Show moreIn the last years, there has been a growing interest for distributed systems both in computer science and in society. The most popular and biggest distributed system in the world is the Internet. A distributed system is a collection of independent computers that appears to its users as a single coherent system. These computers are connected to each other through a network. On each of these computers there is at least one (software) component that needs to communicate with other components on remote computers to achieve some goal. Components can consist of processes, databases, applications, etc. These components are not only distributed among the several computers of a network but they also run in parallel. Therefore, distributed systems need appropriate theory and infrastructures for the coordination of its concurrently running components. In this thesis we present MoCha, a novel coordination framework. MoCha allows dynamic reconfiguration of connections among the components in a system, a property that is very useful and even crucial in systems where the components themselves are mobile. Furthermore, MoCha provides exogenous coordination. This makes it possible to coordinate components from the 'outside' (exogenous), and thus, change a distributed system's behavior without having to change its components. Show less