Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

27.06.1980

Folge 3

Petrinetze entstehen dadurch, daß Knoten beider Arten durch Kanten miteinander verbunden sind, die eine eindeutige Richtung haben, dargestellt durch Pfeile. Wenn eine gerichtete Kante von einem Knoten "A" zu einem Knoten "B" führt, spricht man von "A" als dem Vorgänger von "B" und von "B" als dem Nachfolger von "A". Weiter dürfen in Petrinetzen nur Knoten unterschiedlicher Art jeweils direkt miteinander verbunden sein. Eine Transition darf also als direkte Vorgänger und Nachfolger nur "Stellen" haben. Beispiel siehe Bild 4.

Die Transition "T" hat hierbei als Vorgänger die Stellen "A", "B" und "C" und als Nachfolger die Stelle "D". Entsprechendes gilt für die Vorgänger und Nachfolger von Stellen.

Transitionen werden in diesem Zusammenhang "aktiven" Elementen wie Tätigkeiten, Aktionen, Funktionen beziehungsweise Funktionseinheiten zugeordnet, Stellen dagegen werden "passiven" Elementen, wie Bedingungen, Zuständen (Zustandsinformationen) oder Informationseinheiten zugeordnet.

Ergebnis der Tätigkeit einer Transition sind vielfach ein oder mehrere bestimmte Zustände, die im Petrinetz dann alle zugleich als deren Nachfolger auftreten. Es kann aber auch vorkommen, daß von der Transition selbst abhängt, welcher von mehreren möglichen Nachfolgezuständen erreicht wird. Dies ist beispielsweise bei der Transition "Vergleichen mit einem gegebenen Wert" der Fall, bei der das Ergebnis "kleiner", "gleich" oder "größer" sein kann. In der Anwendung auf den Systementwurf eines kommerziellen Systems kann etwa die Tätigkeit "Vergleich der eingegangenen Zahlung mit dem Rechnungsbetrag" lauten. Die erreichten Nachfolgezustände sind abhängig vom Ergebnis dieses Vergleiches (Bild 5). Diese Eigenschaft bedeutet eine geringfügige Verallgemeinerung der Petrinetzdefinition in der mathematischen Literatur.

Streng genommen verwendet man die Bezeichnung "Petrinetze" in der einschlägigen Fachliteratur erst dann, wenn auf den hier geschilderten Netzen zugleich eine "Markierung", wie im folgenden Abschnitt erwähnt, definiert ist. Es erscheint mir für das Verständnis aber einfacher, diese Netze selbst als Petrinetze zu bezeichnen und von "dynamischer" oder "statischer" Verwendung zu sprechen, je nachdem ob eine Markierung definiert ist oder nicht.

Wir werden der einfacheren Darstellung wegen bei "statischen" Petrinetzen nicht unterscheiden, ob die Nachfolgezustände einer Transition alternativ oder zugleich angenommen werden sollen. Was im jeweiligen Fall gemeint ist, geht aus dem Zusammenhang hervor.

Über die Einschränkung hinaus, daß alle Kanten gerichtet sei müssen und daß nur Knoten verschiedener Art direkt miteinander verbunden werden dürfen, gibt es keine prinzipiellen Einschränkungen für Petrinetze.

Das bedeutet natürlich, daß mit Petrinetzen sinnlose oder widersprüchliche Netzabhängigkeiten dargestellt werden können. Auch ist die Benutzung von Petrinetzen beim Systementwurf selbstverständlich keine Garantie dafür, daß der Entwurf gut oder den Bedingungen der Realität entspricht. Petrinetze sind nur ein Darstellungsmittel, das den Menschen beim Entwurf unterstützt, ihn jedoch nicht ersetzt.

Beim Einsatz anderer formaler Entwurfsverfahren liegt der Fall ähnlich. So kann in der Architektur ein Plan für ein unmögliches Gebäude, im Maschinenbau der Plan für ein perpetuum mobile, in der Chemie die Formel einer unrealisierbaren Verbindung, in der Mathematik sinnlose und widersprüchliche Formeln konstruiert werden.

Mit Petrinetzen läßt sich - wie gefordert - auch eine zunehmende Detaillierung bestehender Entwürfe erreichen, wie ein Beispiel zeigen soll (Bild 6). Um dabei den Überblick zu behalten, ist es zweckmäßig, eine geeignete Bezeichnung und Numerierung der Transitionen und Stellen sowie der Detaillierungsschemata wie angegeben einzuführen. Außerdem kann man durch Verwendung einheitlicher Bezeichnungen auch erreichen, daß man umfangreiche Erläuterungen, die sich in den einzelnen Transitionen und Stellen nicht unterbringen lassen, in separaten Listen auslagert.

Mit dem skizzierten Vorgehen ist es möglich, durch Petrinetze auch die Entwürfe für sehr komplexe Systeme in übersichtlicher Weise zu gliedern und dabei auch spezielle Bedingungen und Abläufe unmißverständlich festzuhalten und doch gleichzeitig in den Gesamtzusammenhang einzuordnen.

Die Petrinetzdarstellung ermöglicht aber nicht nur das Festhalten gefundener Konzeptionen, sondern unterstützt den Systementwickler auch direkt im Erarbeiten dieser Entwürfe. Der festgelegte ständige Wechsel zwischen Transitionen und Stellen zwingt nämlich dazu, sich bei jeder Transition (Tätigkeit) darüber klar zu werden, welche Stelle des Systems mit ihrer Ausführung erreicht ist, oder welche Tätigkeiten notwendig sind, um einen gewünschten Systemzustand zu erreichen. Weiter regt diese Art der Darstellung den Systementwickler unmittelbar an, zunächst summarisch berücksichtigte Transitionen beim erneuten Überdenken des Entwurfs nach und nach immer weiter zu präzisieren. Dazu gehört es beispielsweise auch, den ersten Systementwurf, der zunächst nur den Normalfall darstellt, im Zuge der weiteren Entwicklung durch die Berücksichtigung der anormalen Abläufe zu ergänzen.

Wie beim Systementwurf praktisch vorgegangen werden muß, soll ein Anwendungsbeispiel im dritten Teil der Einführung erläutern.

2.2 Dynamische Prüfung von Netzkonfigurationen

Petrinetze können nicht nur zum Festhalten von Netzkonfigurationen verwendet werden, bei der also der statische Zustand eines Netzes festgehalten wird, sondern sie können auch zu einer formalen Prüfung des Ablaufes - also der dynamischen Eigenschaften - in einem Netz benutzt werden. Dabei kann geprüft werden, ob alle Teile des Netzes durchlaufen werden oder ob es Stellen gibt, die widersprüchlich oder solche die ungenügend festgelegt sind.

Diese Fähigkeiten von Petrinetzen werden - von Ausnahmen abgesehen - erst in den Abschlußphasen des Systementwurfs, meist sogar erst bei der Systemrealisierung benötigt und zwar speziell bei der Koordinierung von Parallelläufen. Wenn diese Prüfnetze beim Systementwurf eingesetzt werden, dann auf seinen untersten, am stärksten detaillierten Stufen. Außerdem verlangt ihre sinnvolle Anwendung eine beträchtliche Übung in der Erstellung von Petrinetzen. Sie sollen daher im Rahmen dieser Einführung nicht behandelt werden.

Mir scheint diese Eigenschaft von Petrinetzen allerdings auch ein starkes Argument dafür zu sein, gerade sie als Entwurfswerkzeug für den Systementwurf anzuwenden. Denn es bedarf dann keines Systemwechsels, wenn man zu einem hohen Detaillierungsgrad der Konzeption vorstößt.

2.3 Anwendung auf Programmsysteme

Wir haben schon gesehen, daß Petrinetze zwei Typen von Knoten besitzen: "Transitionen" und "Stellen". Was versteht man nun aber konkret darunter und wie muß man sie speziell für den Entwurf von Programmsystemen verwenden? Transitionen haben wir definiert als aktive Knoten, bei denen also etwas geschieht oder getan wird, wie geprüft, gelesen oder verglichen. Eine Transition transformiert den Zustand, der ihr vorausgeht, in einen neuen Zustand, ihren Nachfolger, oder - wie gezeigt - abhängig vom Ergebnis der Transition auch in einen von mehreren Nachfolgern.

"Stellen" sind demgegenüber die passiven Knoten. Sie bezeichnen eine erreichte Situation oder eine für eine Transition notwendige Vorbedingung. Auch Dateien können als "Stellen" bezeichnet werden, da aus ihnen ja durch Transitionen etwas herausgelesen oder in sie eingeschrieben wird, sie also nicht aktiv tätig sind. Wenn man will, kann man Dateien natürlich auch noch zusätzlich kennzeichnen, um sie von "Stellen anderer Art zu unterscheiden.

Die Petrinetzsymbolik ist sehr einfach zu verstehen. Sie bedarf daher keiner langen Erklärung. Das macht es leicht, die damit dargestellten Systeme auch Nicht-Experten wie etwa dem Auftraggeber zu erläutern.

Schwieriger ist es dagegen, den eigentlichen Entwurfsprozeß für Petrinetze zu beherrschen, das heißt, die Struktur und die Eigenschaften realer Systeme in Form von Petrinetzen abzubilden. Das muß erlernt und geübt werden. Als Anleitung dazu soll im folgenden dritten Teil an einem Beispiel das Entwerfen von Petrinetzen für eine gegebene Aufgabenstellung vorgeführt werden.

3. Ein konkreter Systementwurf

3.1 Versandhandelsgeschäft

Wir wollen im vorliegenden dritten Teil dieser Einführung die Anwendung des Petrinetzverfahrens zu Systemanalyse und Systementwurf von Programmsystemen demonstrieren. Ziel ist dabei, deutlich zu machen welch große Hilfe diese Darstellungssymbolik bei der Entwicklung und der Diskussion eines solchen Konzeptes bietet. Das ausgewählte Beispiel ist der einfacheren Verständlichkeit wegen aus dem Bereich der Anwenderprogramme gewählt. Die Petrinetzsymbolik ist aber ebenso gut auch auf die Programmierung betriebssystemnaher Programme anwendbar.

Gegeben sei folgende Aufgabe: Ein Versandhandelsgeschäft, zum Beispiel ein Versandkaufhaus soll auf Datenverarbeitung umgestellt werden. Dabei sei die Aufgabe so allgemein gestellt, daß zunächst ermittelt werden soll, welcher Teil der Tätigkeiten in Zukunft mit Hilfe von Datenverarbeitungsanlagen abzuwickeln ist und welcher weiterhin manuell bearbeitet werden muß.

Wir werden diese Aufgabe genau so angehen, wie sie ein Systementwickler angehen sollte, nämlich beginnend mit der Darstellung der prinzipiellen Struktur und dann zu detaillierteren Darstellungen der Abhängigkeiten voranschreitend. Die dabei entstehenden Petrinetze sollen den jeweiligen Stand der Erkenntnisse festhalten. Sie können und dürfen daher noch Unklarheiten und auch Fehler enthalten, der Arbeitsweise des Menschen entsprechend. Dieser fängt mit einem unvollkommenen Entwurf an den er nach und nach verbessert.

Ein Versandhandelsgeschäft hat im Prinzip eine sehr einfache Struktur. Es bekommt von seinen Kunden Aufträge, die es unter Zuhilfenahme eines Verzeichnisses der Kundendaten und unter Kenntnis der verfügbaren Waren bearbeitet und die bestellten Waren dann dem Kundenauftrag zuordnet. Diesen Ablauf könnte man etwa durch ein einfaches Petrinetz festhalten (Bild 7).

Das ist ein sehr roher erster Entwurf. Sehen wir uns daher die Transition "Auftragsbearbeitung" etwas näher an. Der Kundenauftrag muß zuerst darauf geprüft werden, ob der Kunde bekannt und kreditwürdig ist. Wir wollen zunächst voraussetzen, das sei der Fall. Dann muß geprüft werden, ob der Auftrag ausführbar ist, das heißt, ob die gewünschten Waren verfügbar sind. Wir wollen das zunächst ebenfalls annehmen. Daraufhin muß ein Lieferauftrag ausgeschrieben, die Bestandsführung korrigiert und eine zugehörige Rechnung geschrieben werden. Danach erhält man nun das Petrinetz von Bild 3.1.2

Vergleicht man das Petrinetz auf Bild 8 mit dem vorhergehenden Entwurf auf Bild 7, so sieht man, daß die Auftragsbearbeitung - in Bild 8 gestrichelt abgegrenzt - in Teilkomplexe zerlegt worden ist. Das kann man nun weiter fortsetzen, in dem man wiederum komplexe Transitionen, wie etwa die Transition "Kunde auf Bekanntheit und Vertrauenswürdigkeit prüfen" weitet zerlegt.

Außerdem ist im Petrinetz von Bild 8 nur der gewissermaßen reguläre Ablauf festgelegt. Man muß dieses Petrinetz daher ergänzen um Abläufe die festhalten, was geschehen soll, wenn der Kunde unbekannt ist, wenn er nicht vertrauenswürdig ist oder wenn der erteilte Auftrag nicht ausführbar ist, weil zum Beispiel der Lagerbestand einiger Artikel nicht ausreicht nicht zu erfassen. Wird fortgesetzt