In einem beliebig weit verteilten System ist die Annahme, dass alle Dienste zu jederzeit in der gleichen Art und Weise verfügbar sind, in vielen Fällen zu optimistisch. Häufig treten Situationen auf, in denen nur eine eingeschränkte Funktionalität zur Verfügung steht. In diesem Fall ist ein naiver z.B. RPC-basierter Ansatz, der entfernte Dienste wie lokale Dienste bedingungslos blockierend aufruft, eine zusätzliche Fehlerquelle für die Gesamtfunktionalität eines Systems. Ursachen für solche Situationen werden einerseits im Kontext von Quality-of-Service Überlegungen allgemein untersucht, z.B. basierend auf Annahmen zu Servern, Netzwerken usw.
Mindestens genauso wichtig sind aber Fälle, in denen die spezifische Semantik eines Dienstes selbst dazu führt, dass nur bestimmte Aufrufsequenzen die erwartete Funktionsweise garantieren. Hier handelt es sich um Dienste, deren extern sichtbarer Zustand eine notwendige Information über ihre korrekte Nutzung liefert. Die Benutzungsprotokolle für solche Dienste können z.B. mit Endlichen Automaten oder Petrinetzen beschrieben werden, was ihre statische Analyse erleichtert.
Aus Sicht einer implementierenden Dienstumgebung muss der
Zustandsaspekt natürlich ebenfalls berücksichtigt werden. Dies gilt insbesondere für das Scheduling von Diensten auf Serverseite. Zur Handhabung dieser Probleme
wurde ein Scheduling Framework umgesetzt. Dieses Framework beinhaltet neue Aspekte in Bezug auf die Möglichkeit Scheduler hierarchisch zu organisieren. Darüber hinaus wurde eine Abstraktion von der zugrunde liegenden Middleware sowie ein hoher Grad an Ausfallsicherheit und Selbstorganisation erreicht.
Längerfristige Ziele des Projekts sind
- die Integration aktueller Ergebnisse aus der Typentheorie, insbesondere Verhaltens-basierte Typisierung von Diensten, sowie
- die Weiterentwicklung zu einem umfassenden, auf Typhierarchien aufbauenden, Schedulingsystem, das Plattformunabhängig z.B. für Webservices und andere Middleware nutzbar ist.