Formal Analysis of the Contract Automata Runtime Environment with Uppaal: Modelling, Verification and Testing

Dieser Beitrag stellt eine formale Modellierung, Verifikation und Testung der verteilten Middleware „Contract Automata Runtime Environment" (CARE) mittels des Tools Uppaal vor, um durch die Generierung konkreter Tests aus abstrakten Modellen die Zuverlässigkeit der Anwendung zu erhöhen.

Davide Basile

Veröffentlicht 2026-03-05
📖 5 Min. Lesezeit🧠 Tiefgang

Each language version is independently generated for its own context, not a direct translation.

Hier ist eine einfache Erklärung der wissenschaftlichen Arbeit, vorgestellt als eine Geschichte über einen hochkomplexen, aber gut organisierten Orchester-Konzert.

Das große Orchester: Wie man Software-Verträge sicher macht

Stellen Sie sich vor, Sie leiten ein riesiges Orchester. Jeder Musiker (ein Computer-Programm oder "Dienst") spielt sein eigenes Stück. Damit daraus ein harmonisches Konzert wird, müssen sie sich genau absprechen: Wer spielt wann welche Note? Wer gibt das Signal zum Start? Wer hört zu?

In der Welt der Computer nennt man diese Absprachen "Verträge". Das Programm, das diese Verträge verwaltet und dafür sorgt, dass alle Musiker im Takt bleiben, heißt CARE (Contract Automata Runtime Environment). Es ist wie der Dirigent und die Sound-Technik in einem, die sicherstellen, dass kein Musiker falsch einsetzt oder die Musik abbricht.

Das Problem? Auch die besten Dirigenten und die teuerste Technik können Fehler haben. Manchmal passiert es, dass ein Musiker auf das Signal wartet, das nie kommt, und das ganze Orchester erstarrt (ein sogenannter "Deadlock" oder Stillstand). Oder Nachrichten gehen verloren, wie ein Brief, der nie im Briefkasten landet.

Die Herausforderung: Der Dirigent im Labor

Der Autor dieser Arbeit, Davide Basile, hat sich vorgenommen, nicht nur das Orchester zu beobachten, sondern es in einem perfekten, kontrollierten Labor zu testen, bevor es auf die große Bühne geht.

Er hat das CARE-System nicht einfach nur mit dem Auge betrachtet, sondern es in eine mathematische Landkarte übersetzt. Man kann sich das vorstellen wie einen riesigen, interaktiven Videospiele-Code, der genau simuliert, wie das Orchester funktioniert.

Hier sind die drei Hauptakteure in dieser Geschichte:

1. Die Landkarte (Das formale Modell)

Statt den echten, komplizierten Java-Code zu lesen (der wie eine dicke, unübersichtliche Telefonbuch-Liste wirkt), hat der Autor eine vereinfachte, aber präzise Landkarte erstellt.

  • Die Analogie: Stellen Sie sich vor, Sie wollen testen, ob ein neues U-Bahn-System sicher ist. Sie bauen nicht erst die ganze U-Bahn, sondern ein perfektes Modell im Maßstab 1:100. Sie können damit testen: "Was passiert, wenn zwei Züge gleichzeitig in denselben Tunnel wollen?"
  • In diesem Papier wurde CARE als Netzwerk von stochastischen Zeitautomaten modelliert. Klingt kompliziert? Es bedeutet einfach: Eine Karte, die zeigt, wer wann was tun kann, inklusive Zufallselementen (wie: "Wie lange dauert es, bis eine Nachricht ankommt?").

2. Der Prüfer (Uppaal)

Um diese Landkarte zu testen, benutzte der Autor ein Werkzeug namens Uppaal.

  • Die Analogie: Uppaal ist wie ein extrem geduldiger, übermenschlicher Prüfer, der das Orchester Millionen von Malen in Sekundenschnelle durchspielen lässt. Er probiert jede denkbare Kombination aus: "Was, wenn Musiker A träge ist? Was, wenn Musiker B eine Nachricht verpasst? Was, wenn der Dirigent einen Fehler macht?"
  • Der Prüfer sucht nach zwei Dingen:
    1. Toten Winkel (Deadlocks): Steht das Orchester jemals still, weil alle warten?
    2. Verlorene Noten (Orphan Messages): Gibt es Nachrichten, die im System herumfliegen und nie jemand empfängt?

Das Tolle an Uppaal ist, dass er nicht nur zufällig herumklickt, sondern mathematisch beweist, dass unter bestimmten Bedingungen niemals ein Fehler auftreten kann.

3. Der Brückenbauer (Test-Generierung)

Das war der geniale Teil der Arbeit: Wie stellt man sicher, dass die Landkarte auch wirklich der Realität entspricht?

  • Die Analogie: Oft passiert es, dass man ein perfektes Modell im Labor baut, aber die echte U-Bahn funktioniert anders. Der Autor hat einen Trick angewendet: Er hat aus der Landkarte automatisch Prüf-Skripte generiert, die dann direkt auf den echten Code angewendet wurden.
  • Er hat quasi aus dem Modell eine "Schatzsuche" erstellt. Das Modell sagt: "Gehe von Punkt A nach Punkt B, dann nach C." Der Computer nimmt diese Anweisung und wandelt sie in einen echten Test für das Java-Programm um.
  • Wenn der Test im echten Programm fehlschlägt, weiß man sofort: "Aha! Unsere Landkarte war nicht genau genug, oder im echten Programm steckt ein Fehler."

Was wurde entdeckt? (Die spannenden Momente)

Dank dieses Prozesses wurden echte Probleme gefunden, die sonst vielleicht unentdeckt geblieben wären:

  • Der "Wartezimmer"-Fehler: In einer früheren Version des Codes wartete der Dirigent darauf, dass alle Musiker antworten, auch auf solche, die gar nicht am aktuellen Stück beteiligt waren. Das hätte dazu geführt, dass das Orchester ewig wartet (Deadlock). Der mathematische Prüfer hat das sofort gesehen, weil er alle Szenarien durchspielte.
  • Die Puffer-Größe: Wie viele Nachrichten können gleichzeitig in der Warteschlange liegen? Der Autor hat mit dem Modell simuliert, wie groß diese Warteschlangen sein müssen, damit nichts verloren geht, ohne dass das System zu langsam wird.

Warum ist das wichtig?

Normalerweise testen Entwickler Software, indem sie sie einfach laufen lassen und hoffen, dass es klappt. Das ist wie ein Flieger, der ohne Sicherheitscheck fliegt, in der Hoffnung, dass er nicht abstürzt.

Dieser Papier zeigt einen anderen Weg:

  1. Modellieren: Erst die perfekte Theorie bauen.
  2. Verifizieren: Mathematisch beweisen, dass die Theorie sicher ist.
  3. Testen: Die Theorie nutzen, um automatisch Tests für die echte Praxis zu schreiben.

Das Ergebnis ist ein sichereres, zuverlässigeres Software-System. Es ist wie ein Dirigent, der nicht nur gut dirigiert, sondern auch weiß, dass sein Orchester unter jeden Umständen nicht aus dem Takt gerät.

Fazit für den Alltag

Stellen Sie sich vor, Sie bauen ein Haus. Statt nur zu hoffen, dass die Wände stehen, bauen Sie erst ein digitales 3D-Modell, simulieren Erdbeben und Stürme darauf, finden Schwachstellen, reparieren diese im Modell und bauen dann das echte Haus. Wenn Sie fertig sind, nutzen Sie den Bauplan, um automatisch zu prüfen, ob das echte Haus wirklich so gebaut wurde wie geplant.

Genau das hat Davide Basile mit dem CARE-System gemacht. Er hat gezeigt, dass formale Methoden (also mathematische Beweise) nicht nur für theoretische Wissenschaftler sind, sondern echte, fehlerfreie Software für die Welt produzieren können.