2.2 Berechnungsmodelle
39
Die Liste von Anforderungen an Modellierungssprachen lässt erkennen, dass es
wohl nie eine einzige formale Sprache geben wird, die alle diese Anforderungen
erfüllt. In der Praxis muss man daher in der Regel mit Kompromissen leben und eine
Kombination verschiedener Sprachen einsetzen, von der jede für die Beschreibung
eines bestimmten Problemkreises geeignet ist. Die Auswahl der Spezifikationssprache, die für ein bestimmtes Projekt verwendet wird, hängt hauptsächlich vom
Anwendungsbereich und von der Umgebung, in der das System entwickelt werden
soll, ab. Wir stellen im Folgenden einige Sprachen vor, die für den Entwurf eines
praxisnahen Systems in Frage kommen. Diese Sprachen dienen als Beispiele, um die
wichtigsten Eigenschaften des zugehörigen Berechnungsmodells zu beschreiben.
2.2 Berechnungsmodelle
Berechnungsmodelle (engl. Models of Computation (MoCs)) beschreiben Mechanismen, welche die Durchführung von Berechnungen beschreiben. Im Allgemeinen
müssen wir dabei von Systemen ausgehen, die aus verschiedenen Komponenten bestehen. Mittlerweile ist es üblich, streng zwischen den Berechnungen in den einzelnen
Komponenten und der Kommunikation zu trennen. Diese Unterscheidung erleichtert die Wiederbenutzung von Komponenten in verschiedenen Kontexten und sie
ermöglicht ein plug-and-play-Konzept für Systemkomponenten. Dementsprechend
definieren wir Berechnungsmodelle wie folgt [329, 268, 269, 270]:
Definition 2.5: Berechnungsmodelle (MoCs) definieren
• Komponenten und die Organisation des Ablaufs von Berechnungen in diesen
Komponenten: Prozeduren, Prozesse, Funktionen oder endliche Automaten sind
mögliche Komponenten.
• Kommunikationsprotokolle: Diese Protokolle beschreiben die Kommunikationsmöglichkeiten zwischen den Komponenten. Asynchroner Nachrichtenaustausch und Rendez-Vous-basierte Kommunikation sind Beispiele für solche Protokolle.
Beziehungen zwischen Komponenten können mit Hilfe von Graphen beschrieben
werden. In solchen Graphen bezeichnen wir die Berechnungen als Tasks. Die Beziehungen zwischen Tasks werden wir als Task-Graph und in bestimmten Kontexten
auch als Prozessnetz bezeichnen. Knoten in Graphen repräsentieren Komponenten,
die bestimmte Berechnungen ausführen. Die Berechnungen bilden Eingabedatenströme auf Ausgabedatenströme ab. Sie werden in einigen Fällen in Hochsprachen implementiert. Typische Tasks enthalten (möglicherweise nicht-terminierende) Schleifen.
In jedem Durchlauf einer solchen Schleife lesen sie Daten von ihren Eingängen,
verarbeiten diese Daten und erzeugen Daten in den Ausgabedatenströmen. Kanten
beschreiben die Beziehungen zwischen Komponenten. Im Folgenden definieren wir
diese Graphen nun genauer.
Die offensichtlichste Beziehung zwischen Tasks ist die kausale Abhängigkeit:
Viele Berechnungen können erst dann ausgeführt werden, wenn andere Berech-
Précédent

- 62/485

Suivant