
Oft gestellte Fragen
Was ist die Strukturierte Programmierung?
Die Strukturierte Programmierung ist ein programmiersprachenübergreifendes Programmierparadigma aus den 1960er Jahren, noch vor der Softwarekrise. Es beinhaltet zum einen die baumartige Zerlegung eines Programms in Teilprogramme (Prozeduren) und enthält somit das Paradigma der prozeduralen Programmierung. Zudem verlangt die strukturierte Programmierung auf der untersten Ebene die Beschränkung auf lediglich drei Kontrollstrukturen:
-
Sequenz (hintereinander auszuführende Programmanweisungen)
-
Auswahl/Selektion (Verzweigung)
-
Wiederholung/Iteration (Schleifen)
[Zitat aus Wikipedia:
-
Seitentitel: Strukturierte Programmierung / Herausgeber: Wikipedia – Die freie Enzyklopädie. / Autor(en): Wikipedia-Autoren, siehe Versionsgeschichte
-
Datum der letzten Bearbeitung: 7. März 2025, 16:15 UTC / Versions-ID der Seite: 253981660
-
Permanentlink: https://de.wikipedia.org/w/index.php?title=Strukturierte_Programmierung&oldid=253981660 / Datum des Abrufs: 14. August 2026, 10:03 UTC]
Was ist das Jackson Structured Programming (JSP)?
Michael Anthony Jackson (* 1936) ist ein britischer Informatikprofessor.
Grundlagen: Das von ihm in den 1970er Jahren entwickelte JSP dehnt die Prinzipien der Strukturierten Programmierung auf Datenstrukturen aus, die "Struktogramme" genannt werden. Es stellt diese grafisch in Form von "Besteht aus"-Baumstrukturen (ähnlich wie Organigramme) dar und ermöglicht es, aus solchen Datenstrukturen, wenn sie bestimmte Bedingungen erfüllen, die Programmstrukturen zur Verarbeitung dieser Daten grafisch abzuleiten. Hierzu müssen hinreichend viele Strukturblöcke in zusammengehörigen Datenstrukturen miteinander korrespondieren, also synchron sein. Das bedeutet, dass die damit repräsentierten Daten nach Anzahl und Reihenfolge übereinstimmen müssen. Die nicht-korrespondierenden und nicht strukturbildenden Strukturblöcke werden anschließend hierarchisch korrekt in die neue Programmstruktur übernommen, wobei das Prinzip "Eingabe vor Ausgabe" gilt.
Innovation: Dieses Vorgehen ist radikal vom traditionellen Programmieren verschieden, weil es nicht primär auf die Erstellung von Code abzielt, sondern zuerst die Daten und dann die Programme grafisch modelliert. Die Auswahl- und Iterationskriterien der Datenstrukturen werden in die Programmstrukturen übernommen und später präzisiert, weil sie anhand von Datenzuständen geprüft werden.
Realisierung: Die so abgeleiteten Programmstrukturen sind nur Skelette. Ihnen müssen anschließend die "Operationen", also die Verrichtungen an Daten, hinzugefügt werden. Das geschieht aufgrund der Herleitung kontextgesteuert, ist also weniger irrtumsgefährdet als in der traditionellen Form. Eine Programmstruktur mit Operationen kann sofort in algorithmischen Code transformiert werden. Als Zwischenschritt bot Jackson einen Pseudocode namens "Schematische Logik" an, der sich aber nicht durchgesetzt hat.
Programminversion: Jackson entwickelte für diejenigen Konfliktfälle, in denen keine hinreichenden Korrespondenzen vorliegen, die Methode der "Programminversion". Dabei wird zuerst eine Zwischenstruktur entwickelt, mit der die beteiligten Bestände jeweils kompatibel sind. Es sind auch mehrfache Zwischenstrukturen möglich, werden aber selten benötigt. Es entstehen mindestens zwei Programmstrukturen. Die daraus abgeleiteten Programme kommunizieren per Aufrufschnittstelle, um physische Zwischenbestände zu vermeiden.
Backtracking: Ein weiteres Problem entsteht dann, wenn ein Auswahl- oder Iterationskriterium nicht auswertbar ist, weil dafür erst noch weitere Schritte erforderlich sind, die nicht vorangestellt werden können. Jackson hat dafür das "Backtracking" ersonnen, das einen disziplinierten Weg aufzeigt, um auch in solchen Fällen methodenkonforme Lösungen finden zu können.
Vorteile:
-
Der Fokus liegt auf dem richtigen Verständnis der Datenstrukturen, nicht auf der Codeentwicklung.
-
Die Ableitung der Programmstrukturen aus den Datenstrukturen erfolgt stringent anhand der Korrespondenz- und Plazierungsregeln.
-
Kontextgebundene Operationen werden ihren Strukturblöcken zugeordnet, was Fehler vermeidet. Andere Operationen (wie z.B. Zählerinitialisierungen und -inkrementierungen) können ebenfalls sicher plaziert werden.
-
Anhand der Programmstrukturen mit Operationen sind gründliche Schreibtischtests möglich, ohne dass hierfür programmiert werden müsste.
-
Backtracking und Programminversion ermöglichen es, Probleme konsistent zu lösen, an denen die traditionelle Programmierung scheitert.
-
Summa summarum handelt es sich um eine mächtige Zero-Defect-Strategie, die sich jahrzehntelang bewährt hat.
Nachteile:
-
Das JSP wurde nicht für die OO-Programmierung weiterentwickelt und verwendet Go-To-Anweisungen für Programminversionen.
-
Es kennt nur sequentielle Datenbestände und Direktzugriffsdateien, aber keine Datenbanken.
-
Die Methode ist zwar intuitiv leicht verständlich, im Einzelfall aber ggf. nicht anwendbar oder zu umständlich.
-
Die Schematische Logik ist schreibaufwendig und besitzt keine Datendeklarationskomponente.
Was ist die Moderne Strukturierte Programmierung (MSP)?
Die Moderne Strukturierte Programmierung basiert auf dem JSP, modernisiert und erweitert es jedoch erheblich.
-
Vorrang für die Grafiken: Weit intensiver als das JSP macht die MSP Gebrauch von Struktogrammen.
-
Neue grafische Elemente: Große Struktogramme können durch Auslagerungen handlich gemacht werden.
-
Neue Korrespondenztypen: Verzögerte, multiple und erweiterte Korrespondenzen sowie Schritt-für-Schritt-Korrespondenzen vergrößern das Spektrum der Modellierungen. Letztere sind vor allem in Fällen nützlich, in denen die Endzustände der beteiligten Datenstrukturen zwar nicht miteinander korrespondieren, jeder Einzelschritt aber doch.
-
Weniger Restriktionen: Einschübe in Programmstrukturen, "algorithmische Ergänzungen genannt", die nicht aus Datenstrukturen abgeleitet wurden, sind nun erlaubt. Sie sollten aber nur hilfweise verwendet werden und dürfen die Programmstrukturen nicht dominieren.
-
Neuer Pseudocode: An die Stelle der Schematischen Logik tritt ein moderner Pseudocode, der es auch ermöglicht, Daten zu deklarieren.
-
Listen der Operationen: Jackson verwendete nur verbale Operationsbezeichnungen. Die MSP fasst die Operationen zu numerierten Listen zusammen und betrachtet die Operationsbezeichnungen als einzeiligen Pseudocode. Kurze Pseudocode-Sequenzen sind nun als Operationen zulässig, um die Struktogramme damit nicht aufzublähen.
-
Verbessertes Backtracking: Neue Symbole machen Struktogramme mit Backtracking übersichtlicher.
-
Moderne Programminversion: Hierfür wurden neue Pfeilsymbole eingeführt. An die Stelle von Go-To-Anweisungen in invertierten Modulen tritt eine Loop-Case-Konstruktion, die stringent aus der jeweiligen UP-Programmstruktur abgeleitet wird.
-
Neue Durchlaufanalyse: Die MSP zeigt, wie anhand gegebener Programmstrukturen deren Richtigkeit simulativ nachgewiesen werden kann. Dadurch werden Fehler aufgedeckt, die es ggf. bis in das jeweilige Programm schaffen würden.
-
Objektorientierte MSP: Für die objektorientierte Programmierung ist ein weiterer Schritt erforderlich, um die Klassen, Objekte und Datenelemente sowie die damit operierenden Methoden festzulegen. Die Datenelemente stammen gewöhnlich aus der Operationsliste und die Methoden ergeben sich aus Abschnitten der jeweiligen Programmstruktur. Gültige OO-Implementierungen basieren dynamisch auf den Struktogrammen, d.h. ihre Verarbeitungsfolge muss dieselbe wie bei einer algorithmischen Realisierung sein.
-
Relationale Datenbanken: Die MSP erweitert den Horizont des JSP um (relationale) Datenbankstrukturen und modelliert auf dieser Basis sowohl Direktzugriffe wie auch (ggf. restartfähige) Mengenverarbeitungen.
Wie ist die MSP-Buchreihe aufgebaut?
Formal: Diese Buchreihe besteht aus 6 Hardcover-Bänden bzw. aus 12 Ringbüchern, die paarweise organisiert sind: Zu jedem Methoden-Band gehört ein Praxis-Band mit Code und Erklärungen. Aus jedem Hardcover-Band entstanden (und entstehen) zwei Ringbücher, weil diese maximal 400 Seiten stark sein dürfen. Die Hardcover-Bände sind eher für Lehrende und die Ringbücher eher für Lernende gedacht. Die Hardcover-Bände 1 und 2 enthalten die Stufen A1 und A2. Die Bände 3 und 4 sind in B1 und B2 gegliedert. Die Bände 5 und 6 beinhalten die Stufen C1 und C2. Das Schema A1 - A2 - B1 - B2 - C1 - C2 ist aus dem Sprachenlernen vertraut; es repräsentiert die steigenden Schwierigkeitsgrade. Die Ringbücher sind in 1-A1, 2-A1, 1-A2, 2-A2, 3-B1, 4-B1, 3-B2, 4-B2, 5-C1, 6-C1, 5-C2 und 6-C2 gegliedert.
Inhaltlich: Die Bände 1 und 2 (jeweils A1/A2) führen in das Thema ein und diskutieren dann Gruppenverarbeitungen, Ranggruppenverarbeitungen und Link-Listen - Letztere in einer Fallstudie zum fiktiven Internationalen Schulsportwettbewerb. In den Bänden 3 und 4 (jeweils B1/B2) geht es um sequentielle, relationale und multidimensionale Mischverarbeitungen. Die Bände 5 und 6 (jeweils C1/C2) behandeln das Backtracking und die Programminversion, bevor eine methodische Zusammenfassung folgt, die zum zweiten Teil überleitet. In diesem geht es um Entwurf und Implementierung von Verarbeitungen auf relationaler Basis, die sich der kompletten Methodik bedienen und den höchsten Schwierigkeitsgrad erreichen.