Jackson-Diagramm

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Das Jackson-Diagramm ist eine Methode zum strukturierten Entwurf von Computerprogrammen. Es ist Bestandteil einer Methode, die der Theoretiker Michael A. Jackson (* 1936) in den Jahren 1975 bis 1979 entwickelt hat.

Aufbau und Elemente[Bearbeiten]

Das Jackson-Diagramm stellt den Programmentwurf in hierarchischer Form dar, ähnlich einem Organigramm. Das Gesamtprogramm wird in schrittweiser Verfeinerung bis zu den Einzelfunktionen herunter gebrochen. Die Komponenten des Diagramms sind einfache Rechtecke, die durch Pfeile verbunden sind.

Es gibt nur drei Typen von Rechtecken:

  • Ein Rechteck ohne weitere Markierung kennzeichnet einen einfachen Funktionsblock, der einmal durchgeführt wird.
  • Ein Rechteck mit einem Stern (*) in der rechten oberen Ecke kennzeichnet eine Funktion, die wiederholt durchlaufen wird.
  • Ein Rechteck mit einem Kreis (o) in der rechten oberen Ecke kennzeichnet eine von mehreren Alternativen.

Der Programmablauf ergibt sich durch die Position der Rechtecke:

  • Rechtecke, die einem anderen Rechteck untergeordnet sind, stellen eine verfeinerte Beschreibung des Funktionsblocks im übergeordneten Rechteck dar.
  • Rechtecke, die in einer Reihe nebeneinander stehen und nicht mit einem Kreis gekennzeichnet sind, stellen Funktionsblöcke dar, die nacheinander ausgeführt werden.
  • Rechtecke, die in einer Reihe nebeneinander stehen und mit einem Kreis gekennzeichnet sind, stellen Alternativen dar, von denen abhängig von der gegebenen Situation nur eine in Frage kommt.

Jackson sah vor, dass auch die Daten, die ein Programm verarbeitet, in dieser Weise dargestellt werden, so dass eine Beziehung zwischen Datenstrukturen und Programmablauf sichtbar wird und der Programmablauf optimal an die Datenstruktur angepasst ist.

Beispiel[Bearbeiten]

In einem Datenbestand sind Kunden und ihre Aufträge abgespeichert. Jeder Kunde kann mehrere Aufträge vergeben haben. Jeder Auftrag besteht zum einen aus einem Auftragskopf, in dem allgemeine Angaben zum Auftrag abgespeichert sind, zum Beispiel der vorgesehene Liefertermin und ein Boolescher Wert, ob der Auftrag schon geliefert wurde. Zum anderen gehören zu jedem Auftrag mehrere Auftragspositionen, in denen Art, Menge und Preis der zu liefernden Waren gespeichert sind.

Zu jedem Auftrag, bei dem der Liefertermin erreicht oder überschritten ist, soll

  • eine Rechnung geschrieben werden, wenn die Ware geliefert wurde;
  • ein Entschuldigungsbrief geschrieben werden, wenn die Ware noch nicht geliefert wurde.

Zum Schreiben einer Rechnung sind die Daten aus den Auftragspositionen nötig. Für das Entschuldigungsschreiben seien die Daten aus dem Kundensatz und dem Auftragskopf ausreichend.

In dieser Situation stellt folgendes Jackson-Diagramm die Datenstruktur und den Programmablauf dar:

Jackson Diagramm.gif

Bewertung[Bearbeiten]

Zur Darstellung des Programmablaufs ist das Jackson-Diagramm funktionell äquivalent zum Nassi-Shneiderman-Diagramm. Das Nassi-Shneiderman-Diagramm wächst mit der Verfeinerung nach innen, das Jackson-Diagramm wächst nach unten und außen. Es ist lediglich eine Geschmacksfrage, welche der beiden Methoden man bevorzugt.

Im Sinne der theoretischen Informatik sind Jackson-Diagramme Turing-vollständig, so dass man jedes berechenbare Problem damit abbilden kann.

Beide Methoden hatten ihre Blütezeit in den 1980er-Jahren, als die strukturierte prozedurale Programmierung die Technik der Wahl war. Mit dem Aufkommen objektorientierter Programmiersprachen wie Java und C++ seit den 1990er Jahren verloren beide Methoden an Bedeutung, weil sie die erweiterten Möglichkeiten, die diese Sprachen bieten, nicht adäquat abbilden können.

In Bezug auf die Darstellung von Datenstrukturen war die Jackson-Methode schon kurz nach ihrer Entstehung veraltet, weil sie die relationalen Datenbanken, die sich in den 1980er Jahren durchsetzten, nicht abbilden konnte. Andere Betrachtungsweisen, insbesondere das Entity-Relationship-Modell, setzten sich hier rasch gegen die Jackson-Methode durch.

Literatur[Bearbeiten]

  • Helmut Balzert, Die Entwicklung von Software-Systemen, ISBN 3-411-01618-3, Seite 400 ff.