Lukas' Notes

Definition

Openness ( Distributed System)

Openness is the property of a distributed system that offers services according to published, standard rules for their syntax and semantics: the format, contents and meaning of requests and responses.

These rules describe what a service provides without prescribing a particular implementation. Independently developed components can therefore communicate, be composed, and be replaced or extended through the specified interfaces.

Service Specifications

Protocols specify rules for communication. An interface definition language (IDL) specifies the exposed service interface; its behavioural semantics often require accompanying documentation.

Specifications should be:

  • Complete: sufficiently detailed for independent implementations to work together without relying on undocumented behaviour.
  • Neutral: independent of a particular implementation, so alternative implementations can satisfy the same contract.

Interoperability, Portability and Flexibility

  • Interoperability: processes from different implementations can communicate and use one another’s services through shared protocols and interfaces.
  • Portability: an application can run with different implementations of the interfaces it uses, without implementation-specific changes.
  • Flexibility: components can be composed, configured, replaced or added without redesigning the whole system. This supports component-based software engineering (CBSE).

Separating Policy from Mechanism

A mechanism provides a capability; a policy decides how that capability is used. Keeping them separate allows policy to change without replacing the mechanism.

This requires choosing suitable component boundaries: individual objects, larger components or whole applications. Standards for interaction and composition allow these parts to be combined rather than locked into a closed, monolithic implementation.

Example

Web Services and Browser Caching

Independently developed browsers and web servers can interoperate through HTTP. A new browser can work with existing servers, and a new server can work with existing browsers.

A browser may provide a mechanism for storing and retrieving cached documents while allowing the caching policy to be selected through parameters or a replaceable algorithm. A published plugin interface can similarly allow new capabilities to be added without changing the browser’s core.