Conventionally, interfaces of objects export a set of messages with their types, and suggest nothing about the order in which these services may be accessed. This leaves room for a large number of runtime errors or misbehaviours in type correct designs. To mend this, we introduce the notion of protocol, expressing offered and expected orderings of messages, along with a notion of protocol correctness. We do this by defining the Protocol Assuring Universal Language Paul, which describes protocol aspects of classes, and a semantics of in terms of CSP.
|Name||CTIT Technical Report Series|