Vorlage:Infobox Din Ein Nassi-Shneiderman-Diagramm ist eine Entwurfsmethode für die strukturierte Programmierung, die 1972/73 von Dr. Isaac Nassi und Dr. Ben Shneiderman entwickelt wurde. Es ist genormt nach DIN 66261. Da Nassi-Shneiderman-Diagramme Programmstrukturen darstellen, werden sie auch als Struktogramme bezeichnet.
Die Methode zerlegt das Gesamtproblem, das man mit dem gewünschten Algorithmus lösen will, in immer kleinere Teilprobleme bis schließlich nur noch elementare Grundstrukturen wie Sequenzen und Kontrollstrukturen zur Lösung des Problems übrig bleiben. Diese können dann durch ein Nassi-Shneiderman-Diagramm oder einen Programmablaufplan (PAP) visualisiert werden. Die Vorgehensweise entspricht der sogenannten Top-down Programmierung, in der zunächst ein Gesamtkonzept entwickelt wird, das dann durch eine Verfeinerung der Strukturen des Gesamtkonzeptes aufgelöst wird. Böhm und Jacopini hatten 1966 nachgewiesen, dass sich jeder beliebige Algorithmus ohne Sprung Sprunganweisung(Goto) formulieren lässt.
Für die Abbildung objektorientierter Programmkonzepte haben sich sowohl Programmablaufpläne als auch das Nassi-Shneiderman-Diagramm als ungeeignet erwiesen. Als Konsequenz wurde die Unified Modeling Language (UML) für objektorientierte Progammkonzepte entwickelt.
Sinnbilder nach DIN 66261
Die nachfolgenden Strukturblöcke können z.T. ineinander geschachtelt werden. Das aus den unterschiedlichen Strukturblöcken zusammengesetzte Struktogramm ist im Ganzen rechteckig, d.h. genauso breit wie sein breitester Strukturblock.
Linearer Ablauf (Sequenz)
Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen. Leere Strukturblöcke sind nur in Verzweigungen zulässig. |
Verzweigung (Alternative)
Einfache Auswahl
Zweifache Auswahl
Mehrfachauswahl
Auch "verschachtelte" Auswahl genannt, da eine weitere Bedingung folgt. Die Verschachtelung ist ebenso im Nein-Fall (noch) möglich. |
Fallauswahl
Wiederholung (Iteration)
Zählergesteuerte Schleife
Abweisende (vorprüfende - kopfgesteuerte) Schleife
Nicht abweisende (nachprüfende - fußgesteuerte) Schleife
Endlos-Schleife
Kann allenfalls durch einen Aussprung (break) verlassen werden. |
Aussprung
Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden werden, was Nassi und Shneiderman mit den Struktogrammen eigentlich vermeiden wollten: Die Sprunganweisung (siehe oben: unbedingter Sprung Goto). |
Aufruf
Füllregeln
Allgemeingültigkeit
Struktogramme sollten keine programmiersprachenspezifische Befehlssyntax enthalten. Sie müssen so programmiersprachenunabhängig formuliert werden, dass die dargestellte Logik einfach zu verstehen und als Codiervorschrift in jede beliebige Programmiersprache umgesetzt werden kann.
Deklaration
Ursprünglich für prozedurale Programmiersprachen entwickelt, bildete man in Struktogrammen nur die Prozedur und keine Deklarationsbereiche von Variablen und Konstanten ab (einfaches Struktogramm). Dadurch ist jedoch nicht sofort deutlich, welcher Datentyp einer Variablen zugeordnet werden muss. Die Deklaration von Variablen und Konstanten ist im ersten Anweisungsblock vorzunehmen. Diese Nassi-Shneiderman Diagramme bezeichnet man als erweiterte Struktogramme.
Exklusivität
Jede Anweisung erhält einen eigenen Strukturblock (Sinnbilder nach DIN 66261). Selbst mehrere Anweisungen gleicher oder ähnlicher Art dürfen nicht in einem Strukturblock zusammengefasst werden.
Jede Anweisung muss mindestens aus einer Zuweisung bestehen (z. B. Zielvariable <- Zielvariable * AndereVariable). Eine Zuweisung wird durch einen nach Links gerichteten Pfeil dargestellt. Ältere Struktogramme benutzen alternativ aus alten Pascal-Zeiten als Zuweisungszeichen den Doppelpunkt gefolgt vom Gleichheitszeichen (Zielvariable := Zielvariable * AndereVariable). Das Ziel einer Anweisung steht immer links vom Zuweisungszeichen. Rechts davon steht die Quelle.
Über jedes Struktogramm gehört ein Name, um die Identifikation durch Ereignis- oder (Unter-)Programmaufrufe gewährleisten zu können.
Praxisrelevanz
Wirtschaft
In der Softwareentwicklung werden Nassi-Shneiderman-Diagramme sehr selten eingesetzt, da normaler Programmcode einfacher zu schreiben und zu verändern ist: Korrigiert man einen Fehler oder macht eine Ergänzung, muss man ein Nassi-Shneiderman Diagramm in der Regel komplett neu zeichnen. Daher werden dort (falls es sich um Softwareentwicklung mit einer objektorientierten Sprache handelt) heutzutage zumeist UML-Diagramme eingesetzt, für die Editoren existieren, die Änderungen am Code unmittelbar im Diagramm abbilden können.
Bildung
Im Informatik-Unterricht der Sekundarstufe II werden Struktogramme dagegen verwendet, damit Schüler den Aufbau logischer Abläufe, die für die Programmierung nötig sind, trainieren können. Die Erstellung von Struktogrammen aufgrund von Beschreibungen betrieblicher Problemstellungen, die wegen wiederkehrender gleicher Vorgehensweise automatisiert werden können, ist immer noch Bestandteil vieler schulischer Abschlussprüfungen.
Beispieldiagramme
Einfaches Struktogramm
Das folgende Beispiel zeigt ein Diagramm für die Berechnung des größten gemeinsamen Teilers mit dem euklidischen Algorithmus.
als Nassi-Shneiderman-Diagramm ... | ... und in Pascal: |
---|---|
PROGRAM GGT(Input,Output); VAR a,b: Integer; BEGIN ReadLn(a,b); WHILE (a>0) AND (b>0) DO IF a>b THEN a:=a-b; ELSE b:=b-a; IF b=0 THEN WriteLn(a) ELSE WriteLn(b) END. |
Erweitertes Struktogramm
... und die Umsetzung in VBA:
Option Explicit Private Sub btnZensur_Click() Dim intZensur As Integer, strZensur As String intZensur = InputBox("Geben Sie die Zensur als Zahl ein.") Select Case intZensur Case 1: strZensur = "sehr gut" Case 2: strZensur = "gut" Case 3: strZensur = "befriedigend" Case 4: strZensur = "ausreichend" Case 5: strZensur = "mangelhaft" Case 6: strZensur = "ungenügend" Case Else: strZensur = "ungültig" End Select MsgBox "Ihre eingegebene Zensur in Worten: " & strZensur End Sub
Software
- hus-Struktogrammer (Windows, Freeware)
- StruktEd
- Nessi Nassi-Shneiderman-Diagramme erstellen, bearbeiten und ablaufen lassen(GPL).
- Nassi-Shneiderman Diagram-Editor mit OnlineDoc
- Struktogrammeditor (Struktogramme online erstellen und ablaufen lassen)
- Software für Struktogramme und Ablaufdiagramme
- Struktogramme.dot (Macros und Symbolleiste für MS-Word, Freeware)
- Struktogramme erzeugen mit editierbaren Quelltextausgaben für beliebige Programmiersprachen
- struktex: LaTeX-Paket zum erzeugen von Nassi-Shneiderman-Diagrammen
- nassflow: LaTeX-Paket zum erzeugen von Nassi-Shneiderman-Diagrammen
- EasyCODE Development Suite zum Editieren im Struktogramm