Date: 03 Jun 2005

Contracts for ODP

* Final gross prices may vary according to local VAT.

Get Access

Abstract

Contracts have been introduced to clarify the dependencies and relations between objects and thus to ease component reuse. In the OO design trajectory, contracts can be used at different levels of abstraction. We focus on a computational view of objects. We consider systems described as configurations of interacting objects and we deal with two types of communications: message passing and flows. In message passing, signals (from one object to another) are conveyed through the (implicit) underlying infrastructure. This form of interaction is suitable for client/server applications where no strong real time or ordering constraints are needed from the communication infrastructure. In contrast, in a flow type of communication, signals are conveyed through third party (binding) objects that may be explicitly called for in order to ensure specific QoS requirements needed by specific applications. We first define an abstract semantics of the behaviour of configurations of computational objects. Our semantics will be based on the observation of interactions. An Interaction takes place between two interfaces of two objects and may have one of two issues: success or failure. We introduce COC, a calculus of object contracts. In our setting, a contract is merely a process which observes and arbitrates the collective behaviour of configurations of objects. A contract observes objects and depending on the outcome of their interactions (success or failure) may identify and incriminate faulty objects. We also abstract from observers and define the concepts of satisfaction, realization and refinement.