<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Jackson-Diagramm</id>
	<title>Jackson-Diagramm - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Jackson-Diagramm"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Jackson-Diagramm&amp;action=history"/>
	<updated>2026-06-07T09:25:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Jackson-Diagramm&amp;diff=284148&amp;oldid=prev</id>
		<title>imported&gt;Werner von Basil: Nach VM: die 9 letzten Textänderungen von Kaiser47, M2k~dewiki und Lómelinde wurden verworfen und die Version 262126883 von Prüm wiederhergestellt. Letzte sichere bzw. Vor-Edit-War-Version. Bitte über die Disk klären.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Jackson-Diagramm&amp;diff=284148&amp;oldid=prev"/>
		<updated>2025-12-15T20:26:15Z</updated>

		<summary type="html">&lt;p&gt;Nach VM: die 9 letzten Textänderungen von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/Kaiser47&quot; title=&quot;Spezial:Beiträge/Kaiser47&quot;&gt;Kaiser47&lt;/a&gt;, &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/M2k~dewiki&quot; title=&quot;Spezial:Beiträge/M2k~dewiki&quot;&gt;M2k~dewiki&lt;/a&gt; und &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/L%C3%B3melinde&quot; title=&quot;Spezial:Beiträge/Lómelinde&quot;&gt;Lómelinde&lt;/a&gt; wurden verworfen und die Version &lt;a href=&quot;/index.php/Spezial:Permanenter_Link/262126883&quot; title=&quot;Spezial:Permanenter Link/262126883&quot;&gt;262126883&lt;/a&gt; von Prüm wiederhergestellt. Letzte sichere bzw. Vor-Edit-War-Version. Bitte über die Disk klären.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das &amp;#039;&amp;#039;&amp;#039;Jackson-Diagramm&amp;#039;&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Elemente ==&lt;br /&gt;
&lt;br /&gt;
Das Jackson-Diagramm stellt den Programmentwurf in hierarchischer Form dar, ähnlich einem [[Organigramm]]. Das Gesamtprogramm wird in schrittweiser Verfeinerung bis zu den Einzelfunktionen heruntergebrochen. Die Komponenten des Diagramms sind einfache Rechtecke, die durch Pfeile verbunden sind.&lt;br /&gt;
&lt;br /&gt;
Es gibt nur drei Typen von Rechtecken:&lt;br /&gt;
&lt;br /&gt;
* Ein Rechteck ohne weitere Markierung kennzeichnet einen einfachen Funktionsblock, der einmal durchgeführt wird.&lt;br /&gt;
* Ein Rechteck mit einem Stern (*) in der rechten oberen Ecke kennzeichnet eine Funktion, die wiederholt durchlaufen wird.&lt;br /&gt;
* Ein Rechteck mit einem Kreis (o) in der rechten oberen Ecke kennzeichnet eine von mehreren Alternativen.&lt;br /&gt;
&lt;br /&gt;
Der Programmablauf ergibt sich durch die Position der Rechtecke:&lt;br /&gt;
&lt;br /&gt;
* Rechtecke, die einem anderen Rechteck untergeordnet sind, stellen eine verfeinerte Beschreibung des Funktionsblocks im übergeordneten Rechteck dar.&lt;br /&gt;
* Rechtecke, die in einer Reihe nebeneinander stehen und nicht mit einem Kreis gekennzeichnet sind, stellen Funktionsblöcke dar, die nacheinander ausgeführt werden.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zu jedem Auftrag, bei dem der Liefertermin erreicht oder überschritten ist, soll&lt;br /&gt;
&lt;br /&gt;
* eine Rechnung geschrieben werden, wenn die Ware geliefert wurde&lt;br /&gt;
* ein Entschuldigungsbrief geschrieben werden, wenn die Ware noch nicht geliefert wurde.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
In dieser Situation stellt folgendes Jackson-Diagramm die [[Datenstruktur]] und den [[Programmablauf]] dar:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Jackson Diagramm.gif|center]]&lt;br /&gt;
&lt;br /&gt;
Es gibt ein weiteres viertes Rechteck, welches mit einem Minus gekennzeichnet ist, den &amp;#039;&amp;#039;technical body&amp;#039;&amp;#039;. Dieser wird in der Regel benötigt, wenn man sich die einzige richtige performanteste [[Computerprogramm|Programm]] Struktur erarbeiten will. Hierzu werden die Daten wie oben beschrieben zwei Mal abgebildet. Einmal wie die Daten gelesen werden oder das zweite Mal wie die Daten schlussendlich aus gegeben werden sollen.&lt;br /&gt;
&lt;br /&gt;
Hat man die beiden [[Datenstruktur]]en definiert werden diese zunächst einander gegenübergestellt und schlussendlich nach einem einfachen Prinzip zusammengeführt. Hierbei werden die entsprechenden Hierarchiestufen vereint. Übrig bleibt die [[Programmstrukturplan|Programmstruktur]]. Es gibt nur eine korrekte (effizienteste) Prozessstruktur. Wichtig dabei ist, dass auch die [[Sortierreihenfolge]] der Daten innerhalb der Input- und Outputstruktur abgebildet werden muss. In der Regel gibt es pro Iteration (siehe Rechtecke mit Stern im Diagramm) einen sogenannten Gruppenbruch. Jeder Gruppenbruch besteht aus einem Initialisierungsteil und einem Abschlussteil. Dazwischen liegt die entsprechende Verarbeitung. Ein Jackson-Diagramm wird immer von oben nach unten und dann von links nach rechts gelesen. Um diese Reihenfolge einhalten zu können, wird manchmal ein &amp;#039;&amp;#039;technical body&amp;#039;&amp;#039; benötigt.&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Im Sinne der theoretischen Informatik sind Jackson-Diagramme [[Turing-Vollständigkeit|Turing-vollständig]], so dass man jedes berechenbare Problem damit abbilden kann.&lt;br /&gt;
&lt;br /&gt;
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 (Programmiersprache)|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.&lt;br /&gt;
&lt;br /&gt;
In Bezug auf die Darstellung von Datenstrukturen war die Jackson-Methode schon kurz nach ihrer Entstehung veraltet, weil sie die [[Relationale Datenbank|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.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Helmut Balzert: &amp;#039;&amp;#039;Die Entwicklung von Software-Systemen.&amp;#039;&amp;#039; Bibliographisches Institut, Mannheim u.&amp;amp;nbsp;a. 1982, ISBN 3-411-01618-3, S.&amp;amp;nbsp;400 ff.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;br /&gt;
[[Kategorie:Diagramm]]&lt;br /&gt;
[[Kategorie:Technische Zeichnung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Werner von Basil</name></author>
	</entry>
</feed>