Für die komponentenbasierte Softwareentwicklung ist die Kommunikation zwischen den Komponenten von zentraler Bedeutung. Auch das Paradigma der objektorientierten Programmierung geht von eigenständigen Objekten aus, die über Nachrichten miteinander kommunizieren. Die typisierten objektorientierten Programmiersprachen versuchen die Freiheit, die bei der Kommunikation besteht, durch Typisierung der Objekte besser beherrschbar zu machen. Ziel ist es, durch Programmierfehler verursachte nicht automatisch zu behandelnde Situationen beim Programmablauf maschinell unterstützt schon während der Entwicklung zu erkennen.
Ein Typ für einfache Zwischenspeicher für Zahlen vom Typ kann z. B. in Java wie folgt definiert werden
class Buf
{
public void put(int x) { ... }
public int get() { ... }
private int store;
}Ein Nachteil dieser Definition ist, dass sie nicht ausdrückt, wann die beiden Methoden put und get ausführbar sind. Im Allgemeinen hängt die Verfügbarkeit der Operationen eines Objektes vom seinem aktuellen Zustand ab. Außerdem kann die Ausführung einer Operation den Zustand ändern. Von besonderer Bedeutung ist die Berücksichtigung der veränderlichen Verfügbarkeit der Operationen, wenn ein System aus aktiven Objekten besteht, die Objekte also einen eigenen Ausführungsstrang besitzen und somit parallel zu anderen Objekten Nachrichten senden können.
Im folgenden soll die Spezifikation von Objekten durch reguläre Typen vorgestellt werden. Die Kommunikation zwischen den Objekten soll dabei auf das Client-Server-Modell beschränkt bleiben. Die Objekte werden als Server gesehen, die anderen Objekten Services anbieten. Sie können aber auch selbst als Client durch eine Anfrage einen Service eines anderer Objektes in Anspruch nehmen. Als Ergebnis einer Anfrage kann der Server eine Antwort an den Client senden.
Im folgenden Abschnitt soll zunächst auf der Server-Seite die sich ändernde Verfügbarkeit der Services näher betrachtet werden. Anschließend geht es aus der Sicht des Clients um die Erfüllung seiner Erwartungen durch den Server.