Component Interaction in Distributed Systems

I completed my PhD Thesis, entitled Component Interaction in Distributed Systems in 2000. It is available in Adobe Acrobat (PDF) format.


Component based development is seen as a way to increase programmer productivity and reduce software maintenance costs through the reuse of off-the-shelf software components. Component-based development is distinguished from object-orientation in that systems are defined by the composition of black-box components that interact according to well-defined protocols. Current component models define interaction protocols between components as object interfaces. Such an approach is limited: an interface can only describe bundles of synchronous, request/reply operations, but cannot specify the protocol by which those operations must be invoked or how multiple interfaces are to be used in concert. Yet all but the simplest component models define interaction protocols that involve multiple parties, many-to-one communication or concurrency between communicating parties.

We introduce a model of component interaction that addresses the limitations of object invocation. This interaction model is used as the basis for a language, Midas, that is used to define interaction protocols between components. Midas definitions can be annotated with formal specifications of properties of the protocol. We show how the use of a notation to define the interaction protocol allows one to mechanically check the behaviour of the interaction protocol over different transports, thereby catching errors at the design stage. Models can also be translated into test code.

Midas definitions are compiled into runtime support code that makes use of the transport framework. This framework hides the platform-specific transport API and defines transport protocols as compositions of lightweight components. This componentisation of the transport protocol allows the designer to select the most appropriate protocol for each binding and insert additional functionality, such as compression or encryption, above existing protocols. Tests show that this componentisation does not effect the latency or throughput of a binding compared to the use of a traditional implementation.

Related Links