MSC Execute Projekt Seite

About MSC Execute

This page in English!

Motivation

MSC (Message Sequence Chart) ist eine graphische und textuelle Sprache zur Beschreibung und Spezifizierung des Zusammenspiels zwischen Systemkomponenten. Der Hauptanwendungsbereich liegt in der übersichtlichen Erläuterung des Kommunikationszustandes eines Real-Time Systems in Telekommunikationssystemen. MSCs dienen allerdings oft auch der Anforderungsbeschreibung und Dokumentation solcher Systeme. Ebenso erfolgt oft eine Kombination mit SDL.

Die Idee ist nun die einzelnen Bestandteile eines MSC in JAVA möglichst gut nachzubilden und das MSC im Netzwerk verteilt auszuführen. Ebenso ist eine Überprüfung der statischen Semantik nach ITU-T Z.120 erforderlich.

Was verwirklicht MSC Execute ?

MSC Execute liest die textuelle Form eines MSC ein und erzeugt eine objektbasierte Darstellung des MSC. Dies basiert auf der einleitenden Arbeit am Tool Mu2L, dessen Funktionalität vollständig in MSC Execute integriert ist. Anschliessend erfolgt die Übersetzung der Elemente eines MSCs in JAVA Code nach folgendem Muster:

  • Prozesse
  • Für jeden Prozess wird ein Objekt erstellt, welches die definierten Variablen des jeweiligen Prozesses sowie die Methoden für jedes MSC Ereignis enthält. Um die in den Daten von Nachrichten und Aktionen verwendeten Methoden implementieren zu können, werden insgesamt drei Klassen daraus:
    • ImportProcessClassName: Kann vom Benutzer erweitert werden!
    • ProcessClassName: Wird vom System erstellt und darf nicht weiter bearbeitet werden.
    • ProcessClientName: Kann vom Benutzer erweitert werden!
    Die eigentliche Ausführung der Ereignisse erfolgt mittels ThreadName. Dieser erstellt für den jeweiligen Prozess einen neuen Thread und führt die Ereignisse dieses Prozesses nacheinander aus. Ein Thread kann sowohl von einem Hauptprogramm aus gestartet werden als auch innerhalb weiterer Threads. Dies ist notwendig, damit Referenzen ausgeführt werden können.
  • Nachrichtenkanäle
  • Zu jedem MSC gibt es ein Remote Objekt, welches die Nachrichten zwischen den Prozessen regelt. Innerhalb dieses Objektes gibt es für jede Nachricht eine Warteschlange zur Speicherung der wiederholten Nachrichten. (Beachte Schleifen!) Somit ist das Senden und Empfangen einer Nachricht einfach nur ein Methodenaufruf.
  • Nachrichten
  • Das Grundprinzip der Nachrichten auf einem Prozess ist es, eine Nachricht zu versenden und dann mit dem nächsten Ereignis auf diesem Prozess fortzufahren. Dies wird durch einen Methodenaufruf im Remote Objekt erreicht und wartende Prozesse werden geweckt. Beim Empfang sieht es etwas anders aus, da die erwartete Nachricht noch nicht eingetroffen sein muss. Daher wird in der Liste, welche die empfangene Information speichert nachgesehen, ob sie nicht leer ist. Falls keine Nachricht vorhanden ist, so wird der Prozess schlafen gelegt. Andernfalls wird der älteste Wert zurückgegeben.
  • Aktionen
  • Aktionen werden direkt auf dem jeweiligen Prozess ausgeführt und erfordern keine Kommunikation.
  • Zustände
  • Es gibt vier Arten von Zuständen, wobei jeder Zustand auf einer Menge von Prozessen definiert ist. Zum einen der setzende Zustand, welcher gesetzt wird und solange gültig ist, bis auf der gleichen Prozessmenge ein neuer Zustand gesetzt wird.
    Zum zweiten der bewachende Zustand. Dieser fragt ab, ob ein Zustand auf der gleichen Menge vorher gesetzt wurde.
    Zum dritten der bewachende Zustand, der einen Boolschen Ausdruck auswertet. Dieser ist dann erfüllt, wenn die Auswertung auf jedem einzelnen Prozess true ergeben hat.
    Zum vierten der bewachende Zustand otherwise, welcher nur dann erfüllt ist, wenn in einer Alternative alle anderen Wege eines MSC nicht möglich sind.

    Bewachende Zustände müssen die ready-Bedingung erfüllen, d.h. kein Prozess, der sich nicht in der Prozessmenge des Zustandes in diesem Teil des MSC befindet, kann fortfahren.
  • Alternativen
  • Alternativen stellen verschiedene Wege durch einen MSC dar. Wichtig ist, dass jeder Prozess den gleichen Weg nimmt. (Auch bei Alternativen innherhalb von Schleifen.) Einige Wege können mittels der oben genannten Zustände ausgeschlossen werden. Aber zwei wichtige Fälle sind zu beachten. Es können mehrere Wege möglich sein und somit wird im Remote Object per Zufallsgenerator ein Weg gewählt. Andererseits kann kein Weg möglich sein. Dies ist zwar nicht erlaubt, kann aber durch die vorhandenen Daten auftreten. Dann erfolgt ein Abbruch der Ausführung.
  • Schleifen
  • Schleifen erlauben es einen Teil MSC beliebig oft zu durchlaufen. Unendliche Schleifen können mit Hilfe von Zuständen beendet werden.
  • Referenzen
  • Referenzen lassen ein MSC auslagern und erfordern eine hohe Aufmerksamkeit, da der aktuelle Zustand eines Prozesses an den im referenzierten MSC zugehörigen Prozess übergeben werden muss. Dann wird der neue Prozess als Thread gestartet und nach der Beendigung muss der geänderte Zustand an den ursprünglichen Prozess zurück übertragen werden.
    Zu beachten sind dabei auch die Nachrichten an eine Referenz bzw. von einer Referenz. Diese werden über sog. "Gates" gesendet und empfangen und werden im Remote Objekt des referenzierten MSC gehandhabt. Hierfür ist es erforderlich den Datentyp der Nachrichten, die verarbeitet werden, zu kennen.
Weitere Bestandteile können im Laufe der Diplomarbeit hinzugefügt werden. Dies ist derzeit allerdings noch nicht geplant.


Markus Schlütter
Last modified: Tue Dec 07 18:13:25 CEST 2004