Darwin

A general purpose structuring tool of use in building complex distributed systems from diverse components and diverse component interaction mechanisms. Darwin is being developed by the Distributed Software Engineering Section of the Department of Computing at Imperial College. It is in essence a declarative binding language which can be used to define hierarchic compositions of interconnected components. Distribution is dealt with orthogonally to system structuring. The language allows the specification of both static structures and dynamic structures which evolve during execution. The central abstractions managed by Darwin are components and services. Bindings are formed by manipulating references to services.

The operational semantics of Darwin is described in terms of the Pi-calculus, Milner's calculus of mobile processes. The correspondence between the treatment of names in the Pi-calculus and the management of service references in Darwin leads to an elegant and concise Pi-calculus model of Darwin's operational semantics. The model has proved useful in arguing the correctness of Darwin implementations and in designing extensions to Darwin and reasoning about their behaviour.

Distributed Software Engineering Section. Darwin publications.

E-mail: Jeff Magee <jnm@doc.ic.ac.uk>, Naranker Dulay <nd@doc.ic.ac.uk>.

(08 Nov 1994)