Rückkehr zum gesunden Menschenverstand?

Strukturierte Programmierung bringt dreifache Leistung

27.11.1974

Mit Dr. Peter Schnupp, Gesellschafter der softlab, München, sprach CW-Mitherausgeber Dr. Gerhard Maurer

- Was ist strukturierte Programmierung?

Die strukturierte Programmierung ist ein Satz von Regeln, der es den Programmierern ermöglicht, gute Programme zu schreiben, die bereits im Text als wahrscheinlich fehlerfrei erkannt werden können, die leicht änderbar, leicht zu warten und leicht optimisierbar sind.

-Diese Definition ist ausgerichtet an der Zielvorstellung. Was ist über das Verfahren zu sagen?

Man vereinfacht den Programmierprozeß, indem man eine Reihe - und zwar eine sehr geringe Menge - von Standard-Bausteinen definiert, mit denen der Programmierer sein Programm zusammenzustellen hat.

-Es gibt also eine neue Notation, eine neue Programmiersprache gar?

Nein. Es gibt keine neue Programmiersprache. Man kann in jeder üblichen Programmiersprache strukturiert progammieren. Es gibt allerdings ein neues Darstellungsmittel, das das herkömmliche Flußdiagramm ersetzt und den Programmierer im Grunde wirklich zwingt, strukturiert zu programmieren und nur diese Bausteine zu verwenden. Diese Notationsweise nennen wir ein Strukturprogramm. Es besteht aus einer ineinander geschachtelten Folge von sogenannten Strukturblöcken. Es gibt nur drei solcher Strukturblöcke, und der Programmierer ist gehalten, nur diese Typen für sein Programm zu verwenden.

-Ist es zu vereinfacht gesagt, daß man in der strukturierten Programmierung im wesentlichen darauf achtet, das so häufig verwendete GOTO-Statement zu vermeiden ?

Man vermeidet das unsinnige GOTO. In vielen Programmiersprachen braucht man das GOTO, um zu programmieren, im Fortran ist es gar nicht zu vermeiden. Das Strukturprogramm sorgt aber dafür, daß der Programmierer das GOTO nur diszipliniert verwendet, das heißt, daß man jedem eingesetzten GOTO seine Bedeutung im logischen Zusammenhang des Programms sofort ansehen kann.

-Wie erkennt man bei einem strukturierten Programm so einfach die logischen Zusammenhänge?

Ein Mensch, der ein Programm liest, kann üblicherweise ungefähr nur das erfassen und logisch verstehen, was auf einer Seite Programm-Listing steht. Einer der wesentlichen Punkte der strukturierten Programmierung ist, daß ein logischer Baustein des Programms nicht größer wird als ungefähr 50 Befehle.

-Das Ziel ist doch wohl auch eine Verbesserung der Programmierleistung in bezug auf die Quantität der Befehle.

Ja, aber zunächst noch zur Qualität. Die zeigt sich auch darin, ob Programme leicht zu ändern und zu warten sind. Die strukturierte Programmierung erreicht leicht änderbare Programme daduch, daß für jeden standardisierten Strukturblock, den der Programmierer geschrieben hat, die logische Funktion dieses Strukturblocks sofort aus dem Programmtext klar ersichtlich ist, so daß ein Wartungs-Programmierer sofort sieht, welche Teile des Programms er ändern muß - auch wenn er das Programm nicht selbst geschrieben hat.

-Aber nun zu Aspekten der Ouantität. Stichwort: Zahl der Befehle.

Da gibt es einige sehr markante Beispiele. Berühmt geworden ist das IBM-Projekt "New York Times Information Retrieval System", bei dem die mittlere Produktion eines Mitarbeiters pro Mannjahr etwa 6900 Anweisungen war. Das ist ungefähr das Dreifache, was bei ähnlichen Projekten üblicherweise erzielt wird.

- Soweit die Anwendungs-Programmierung. Wie sieht es bei der System-Programmierung aus?

Bei uns im Hause war bei drei Systemen für deutsche Hersteller, die wir nachträglich durchkontrolliert haben, die durchschnittliche Leistung eines Programmierers das Dreifache bis bestenfalls das Fünffache von dem, was üblicherweise bei Herstellern als die Leistung eines Systemprogrammierers im Jahr angenommen wird.

- Wenn also im Mittelwert eine dreifache Verbesserung der Leistung erzielt werden kann, so fragt man sich doch, warum gibt es strukturierte Programmierung nicht schon viel häufiger?

Die Methode ist noch jung, deswegen ist sie hierzulande noch nicht sehr bekannt. Wir wissen gegenwärtig von drei Institutionen, bei denen systematisch und grundsätzlich strukturiert programmiert wird.

Neben unserem eigenen Haus sind dies die IBM-Laboratorien in Böblingen und einige Stellen im Hause Siemens, wahrscheinlich wird die bayerische Staatskanzlei für alle staatlichen Rechenzentren die neue Methode einführen, vermutlich werden es dann auch mehr und mehr Anwender sein.

- Wie unterscheidet sich strukturierte Programmierung von normierter Programmierung?

Die normierte Programmierung stellt dem Anwender lediglich die oberste Ebene seines Systems, das heißt, die Hauptsteuerleiste als strukturierte Folge von Anweisungen zur Verfügung. Sie läßt ihn völlig alleine, sobald er die unteren Module programmieren muß.

-Nun hört man aber auch, daß strukturiert geschriebene Programme ineffizient seien, das heißt, mehr Laufzeit und mehr Hauptspeicher brauchen.

Dies ist sicher nicht der Fall, wenn das Programm von einem guten Programmierer geschrieben wurde - dann wird es in etwa die gleiche Effizienz bezüglich Hauptspeicher und Laufzeit haben. Wesentlich ist aber, daß ein strukturiertes Programm sich besser optimisieren läßt. Um optimisieren zu können, muß man nämlich wissen, welche Zweige des Programms besonders häufig durchlaufen werden und in welchen Zweigen sich somit ein Sparen von Befehlen lohnt. Das kann man nur dadurch feststellen, daß man per Software-Monitor ein Histogramm über das Programm macht und daß dieses Histogramm auch einfach interpretiert werden kann.

-Wie lernt man strukturiertes Programmieren?

Es gibt Bücher.

- Die werden wir als Fußnote anmerken.

Es ist nicht sehr schwer, nach diesen Büchern oder auch in einem etwa eintägigen Kurs das strukturierte Programmieren zu erlernen. Da, wie gesagt, die Grundregeln eigentlich nur aus wenigen Kontrollstrukturen bestehen.

- Das glaubt vermutlich kein Anwender, daß man so binnen eines

Tages seine Programmierleistung verdreifachen kann.

Dieser Einwand ist durchaus richtig. Das ist ganz ähnlich wie beim regulären Programmieren. Es ist eben einfach ein Unterschied, ob ich Anweisungen einer Programmiersprache wie Cobol oder Fortran kenne, oder ob ich sie wirklich routinemäßig und bequem, sozusagen als Muttersprache, anwenden kann. Dazu gehört natürlich Übung. Diese Übung muß man auch für das strukturierte Programmieren erwerben. Entscheidend ist, daß Manager, Leiter von Programmierabteilungen, entsprechende Standards setzen und diese auch überwachen.