|
Abstract : |
Abstract. A distributed program can be viewed as a composition of three parts. Firstly, there is a coordination part which provides a hierarchical structure of components with dynamic binding. Secondly, there is the actual communication part which provides the interaction and synchronisation required by the system. Finally, there is the computation part providing the component programs. Darwin is a language for describing distributed configurations in terms of component types, their instantiation to components with interfaces and the binding of those interfaces. A Darwin program thus defines a class of configurations. Although the language is very small it contains second-order constructs: component types can appear as parameters in the instantiation of other component types. Furthermore Darwin provides support for dynamic run-time instantiation of components. Component types therefore must have a run-time representation. The coordination part of a distributed program has to be closely associated with the communication and computation part, as only the combination of the three will yield the complete program. On the semantic level we can achieve this by using the same formal description technique for all three. The-calculus can serve as such a technique. The higherorderedness of the coordination language can be captured by using the higher-order-calculus. The semantics gives a precise meaning to Darwin programs. It turns out that by using the higher-order-calculus this semantics can be expressed in a very concise and clear manner. 1, |