Michael Jackson erstmals in Deutschland:

Von der Daten- zur Programmstruktur

23.09.1977

MÜNCHEN (uk)-"Nur die Ergebnisse zählen", rügt Harry Sneed, ein anerkannter Software-Spezialist, die derzeitige Diskussion um die verschiedenen Softwaredesign-Ansätze. Er sieht angesichts der unterschiedlichen, mehr oder weniger von Marketing-Strategien geprägten Argumente für eine datenorientierte Programmstrukturierung oder gegen einen funktionsbezogenen Ansatz das eigentliche Ziel in den Hintergrund gedrängt: Das Streben nach funktionsgerechten, effizienten, zuverlässigen, wartungsfreundlichen und anpassungsfähigen Softwareprodukten. Und tatsächlich kann man unter den HIPO-, Warnier-, Alarry-, Mills-, Yourdon-Verfahren leicht die Orientierung verlieren und bei den meist wissenschaftlichen Thesen der "geistigen Väter" der strukturierten Programmierung Dijkstra, Floyd, Hoare sowie Witth schnell "abschalten" und in Resignation verfallen.

Einer der Propheten der neuen Software-Generation wird nun erstmals in Deutschland zu seinen "Gläubigen" sprechen: Der Engländer Michael Jackson, bekannt geworden durch sein Buch "Principles of Program Design", referiert Im Oktober auf dem "Structo 77"-Kongreß, der nach dem großen Erfolg von "Structo 76" ("Das Software-Ereignis des Jahres") wieder die Strukturierung der Software- Erstellung behandeln wird. "Das strukturierte Design als Voraussetzung für ökonomische Gesamt-Software" ist dort sein Thema, und er wird den (noch-) Zweiflern seine Antwort auf die Frage "Wie strukturieren?" geben. Die Programmierstruktur sollte die hierarchische Struktur der Eingabe- Beziehungsweise Ausgabedatei genau wiedergeben.

Was steckt nun aber hinter die er vielzitierten Michael-Jackson-Methode und vor allem für welche Projekte in der Praxis kann sie angewendet werden? Ist datenorienterter Programm-Entwurf ein Universalrezept zur Optimierung der Software-Qualität? CW befragte vier kompetente Softwarefachleute, die ebenfalls auf der "Structo 77"-Kongreß zu Wort kommen werden:

*Harry Sneed - Präsident des Sneed Software Service

"There are many ways to skin a cat" ("Ein Zweck - viele Mittel") Man kann zum Beispiel mit dem Kopf anfangen ("Top down") oder man fängt mit dem Schwanz an ("Bottom up").

Man legt sie auf den Bauch oder man legt sie auf den Rücken. Jeder Karpfenjäger wird sagen, seine Methode sei die Beste und das einzig Richtige. Es gibt inzwischen viele Methoden und Programme für das Software-Design. Die HIPO-Methode von IBM, die Warnier-Methode von Honeywell Bull, die Constantine/Alarry-Methode, die Harlan Mills-Methode, die Ed Yourdon-Methode, die Michael Jackson Methode, und so weiter und so weiter. Wenn ich nicht so bescheiden wäre, würde ich sogar behaupten, es gäbe eine Harry Sneed-Methode, aber das möchte ich der DV-Welt ersparen.

In diesem Wirrwarr von Methoden ist es vielleicht sinnvoll, wenn wir uns auf das Ziel der Methoden entsinnen. "Only the results count." Was wir anstreben, ist ein funktionsgerechtes, effizientes, zuverlässiges, wartungsfreundliches und anpassungsfähiges Softwareprodukt. Der Entwicklungsprozeß ist nur insofern interessant, als er diesem Endziel dient. Der datenbezogene Ansatz, wie er nicht nur von Michael Jackson sondern auch von Warnier und Haare propagiert wird, eignet sich hervorragend für den Entwurf kleiner, abgegrenzter Module mit einer klar definierten Datenumwelt. In seinem Buch "Principles of Program Design" hat Michael Jackson ein solches Beispiel gewählt. Ich bin nicht sicher, ob diese Methodik bei größeren Systemen ohne weiteres praktikabel ist. Es gibt einen Grad von Problemen, bei dem der funktionsbezogene Ansatz der beste wäre. Es hängt letzten Endes von der Größe und Komplexität sowie von der Art der Aufgabe ab, welche Entwurfsmethode der Systemdesigner anwendet. Er muß eben wissen, was er vor sich hat, ob Hauskatze oder Löwe.

Dr. Christiane Floyd - Beraterin für Softwaremethodik

Die erste spontane Reaktion vieler Praktiker auf die strukturierte Programmierung (SP) war die Frage: Wie verhält sich diese Struktur zur vorgegebenen Datenstruktur? Hier hat Michael Jackson mit seiner Methode einen gangbaren Weg gezeigt. Die Programmstruktur soll die hierarchische Struktur der Eingabe- beziehungsweise Ausgabedatei genau wiedergeben.

Wir erhalten somit ein Schema für die Struktur von Programmen in etwa vergleichbar mit der normierten Programmierung. Nur ist es sehr viel flexibler, da es sich an der logischen, nicht an der satzweisen, physischen Struktur der Daten orientiert und außerdem ist es abgeleitet aus der SP.

Besondere Vorteile dieser Methode sind ihre leichte Lehrbarkeit und Nachprüfbarkeit. Man kann sehr leicht feststellen, ob ein Programm in dem Sinne korrekt ist, daß jede verarbeitete Anweisung in dem für sie richtigen Programmteil vorkommt.

Ein weiterer Vorzug ist, daß die Aufmerksamkeit der Programmierer in erhöhtem Maße auf die Datenstruktur gelenkt wird. Sie ist ja als einzige vorgegeben.

Man sollte sich meiner Ansicht nach nicht von dieser Methode erwarten, daß sie im Sinne einer Vorgehensweise in der Zeit angewendet werden kann - entgegen der Beteuerung ihrer Propheten. Ich bezweifle, daß das Denken vom Menschen beim Lösen von nichttrivialen Problemen in dieses Schema eingepreßt werden kann oder sollte. Stattdessen wird man sie sinnvoll als Richtschnur für die Struktur des zu erstellenden Programmes sehen, also als Zielvorstellung.

Die Erarbeitung der Programmstruktur aus der Datenstruktur im Sinne von Michael Jackson ist eine reine Topdown-Methode. Als solche ist sie nur ein Baustein in einer ausgereiften Software-Methodik. Sie setzt zum Beispiel eine Modularisierung etwa

nach der Geheimnisprinzip schon voraus, die nicht nur für die rationelle Entwicklung großer Programmsysteme erforderlich ist, sondern auch im Hinblick auf Datenschutz erhöhte Bedeutung gewonnen hat. Somit ist die Michael-Jackson-Methode ein wichtiger Gesichtspunkt, mit dem sich eine Auseinandersetzung lohnt, sie ist kein Allheilmittel.

Dr. ReinholdThurner - Softwarewissenschaftler an der Universität Zürich und Autor von DETAB/6T und DELTA.

"Die Software-Kosten werden weitersteigen - Tools wirken nur bedingt als Kostenbremse - In 10 Jahren Hardware-Kosten gleich 10 Prozent der Software-Kosten".

So klang es in den letzten Monaten nach der "Methoden- und Hilfsmittel-Tagung" in Hamburg. Ich glaube jedoch, daß diese Meinung auf der linearen Extrapolation bestehender Einzelkonzepte beruht und strukturellen Wandel, einen Quantensprung der Ideen negiert. Zweifellos besteht diese Meinung zu Recht, wenn man davon ausgeht, daß es weiterhin lautet: "Entweder Strukturierte Programmierung oder Normierte Programmierung oder Entscheidungstabellen". Sie besteht zweifellos zu Recht, wenn man eine unüberbrückbare Kluft zwischen functional decomposition (Meyers) und datenorientierter Programm-Strukturierung (Jackson) sieht. Sie ist nicht zu wiederlegen, wenn man eine Fülle inkompatibler Einzelhilfsmittel (NP-Generator, SP-Generator, ET-Generator, Reportwriter etc.) als gegeben hinnimmt.

Sie wird weiterhin traurige Wirklichkeit bleiben, solange jedes Programm bei Null begonnen und Befehl um Befehl von Hand geschrieben wird, Mehrfachverwendung von Code fehlt.

Ich sehe jedoch Anzeichen dafür, daß diese Abnahmen nicht zutreffen, daß sich in den letzten zwei bis drei Jahren Ansatzpunkte ergeben haben, die einen neuen Faktor in de Software-Kalkulation bedeuten können. Zum Teil sind es konkrete, praktikable Resultate, zum Teil nur Trends, Symptome für den, der sie sieht.

Methoden-Kompatibiltät

Die verschiedenen Methoden in der Systementwicklung wurden von ihren Promotoren immer viel zu sehr im Gegensatz zur "Konkurrenz-Methode" gesehen. Jeder konnte zeigen, daß jedes Problem auch mit seiner Methode lösbar sei. Ich erinnere mich an das

Votum, daß mit Entscheidungs-Tabellen alle Konstrukte der Strukturierten Programmierung befriedigend abgedeckt sind. Und die Antwort von SP-Anhägern, die die Entscheidungstabelle als veraltet abqualifizierten. Heute scheint sich doch die Erkentniss durchzusetzen, daß die Entscheidungstabelle innerhalb der SP ihren Platz findet.

Durch diese Verschmelzung gewinnen beide Methoden, da keine genötigt ist, sich in Fällen unter Beweis zu stellen, in denen die anderen geeigneter sind. Die Strukturierte Programmierung wurde häufig mit dem Hinweis angegriffen, daß sie noch keineswegs einen Beitrag leiste für die Strukturierung eines Programmes und deshalb untauglich sei.

In Tat und Wahrheit kümmert sich die SP im wesentlichen um die Micro-Struktur eines Programmes, die Code-Struktur. Darüber hinaus entstehen Verfahren für die Makro-Strukturierung von Programmen, für das Zerlegen eines Programmein Bausteine nach einem lehrbaren, reproduzierbaren Verfahren. Also Beherrschung der Progamm-Struktur und des Kontrollpfades. Den ersten Schritt zu einer solche? verallgemeinerten Makro-Struktur stellte die "Normierte Programmierung" dar. Die NP legt auf Grund der Struktur der Eingabe-Daten

-eine Struktur funktionaler Bausteine und

-deren Ansteuerung fest.

Der Anwender-Code kann dann unabhängig von der Steuerung geschrieben werden. Doch die Normierte Progammierung deckt nur einen Spezialfall ab - die sequentielle, nach einem Schlüssel sortierte Datei.

Parallele zur Datenbank-Idee

Mit dem Ansatz von Michael Jacksons datenorientierter Programm-Strukturierung besteht nun eine allgemeine Methode zur Strukturierung datengetriebener Programme. Impulse für die Makro-Strukturierung von Programmen gehen auch von der Transition-Graph-Technik aus (LSS und Heureka, Interaktions-Diagramme).

Ich sehe in dieser Entwicklung eine starke Parallele zur Datenbank-Idee:

-Trennung der physischen und der logischen Programm-Struktur.

-Trennung von Anwender-Code (Problem-Code) und Steurungs-Code.

Eine Syntax-Erweiterung der Programmiersprachen, die die Beschreibung der Programm-Steuerung auf hoher Ebene, die Definition von Programm-Bausteinen gestattet, könnte noch mehr Effizienzsteigerung in der Programmierung bringen als die Datenbank-Idee. Diese Methode der Beschreibung eines Programmes oder Programmteiles, in der Bausteine für den Anwender offen gelassen sind gestattet die Grund-Idee der Normierten Programmierung auf viel breiterer Ebene anzuwenden.

Globalstruktur - Basis für Mehrfach-Verwendung

Programme, die nach dem Verfahren der "offenen Modular-Technik" (nach J. Liedel, Univac) geschrieben sind, lassen sich in großem Umfang mehrfach verwenden. Es gibt viele Ansätze für solche mehrfach verwendbare Programme, die generativ und durch Einfügen von Anwendungs-Code erstellt werden: das UNIS-System von UNIVAC, die für das IBM-System 34 generierten Anwendungsprogramme, PAISY von Lammert. Die programmierte Varianten-Bildung, die heute im wesentlichen für Anwendungs-Software von Software-Häusern angewendet wird, dürfte zum festen Bestandteil der Programm-Entwicklung werden.

Hilfsmittel, Generatoren, Compiler

Die Generator-Technik hat bedeutende Fortschritte erzielt: Generator-Systeme lösen die Einzelgeneratoren ab. Das Zusammenwirken mehrerer Generator-Funktionen bringt bessere Resultate als nur deren Summe. Zu den Standardfunktionen solcher Generatorpakete zählen:

- Programm-Struktur-Generator zur Unterstützung der offenen Modular-Technik. Innerhalb eines solchen allgemeinen Generators die Normierte Programmierung, die Jackson-Programm-Strukturierung

- Makro-Generator: Automatisierung anwenderbezogener Funktionen. Besondere Bedeutung besitzt ein solcher Makro-Generator zusammen mit der Programm-Struktur-Generator-Funktion

- Dokumentations-System für funktionale Dokumentation und Querverweise

-Strukturierte Programmierungs-Unterstützung einschließlich Entscheidungstabellen

-Reportwriter.

Diese Funktionen und weitere werden in einem einzigen Paket integriert, so daß auch kombinierte Anwendungen möglich sind. So kann durch kombinierte Anwendung der Funktionen Programm-Struktur-Definition, Makro-Generator, Reportwriter, Datei-Definitions-System, zum Beispiel ein Standard-Datei-Pflege-Programm als Makro geschrieben werden.

Weiterentwicklung der Generator-Systeme in Richtung auf interaktive Generatoren ist ein weiterer Schritt.

Online-Programmierung mit interaktiven Generatoren

Programm-Entwicklung im Batch wird abgelöst durch interaktives Erstellen und Pflegen von Programmen, Dokumentation, Testdaten. Dabei steht eindeutig die Verwaltung der Datenbestände im Vordergrund, während der "Online Debug" erst in zweiter Linie von Bedeutung ist. Wir selbst setzen seit fünf Monaten ein System PRIME 300 als Programm-Entwicklungs-Maschine ein. Der Einsatz eines solchen Systems als Ergänzung zur Produktions-Maschine und mit dieser verbunden, bringt "Computerleistung auch an den Arbeitsplatz des Programmierers". Die Verfügbarkeit solcher "Minis" mit leistungsfähigen Betriebssystemen, guten Editor- und Utility-Funktionen dürfte in den nächsten Jahren manchem Anwender das Umsteigen auf Online-Programmierung erleichtern.

Der Einsatz interaktiver Programm-Generatoren auf solchen Systemen könnte aber durchaus jenen Quantensprung bewirken, der Hardware- und Software-Kosten wieder ins Gleichgewicht bringt.

Dr. Jan Witt - Fachabteilungsleiter ,,Systemarchitektur Software" im Forschungslabor der Siemens AG.

Wer einmal den verklärten Blick eines Michael-Jackson-Bekehrten gesehen hat, wenn er von seiner Methode, von "Backtracking" und "Program Inversion" spricht, der weiß, daß er die schwierigste Aufgabe der Software-Pädagogik, die der Rückerziehung des "erfahrenen Programmierers" zum gesunden Menschenverstand, meisterlich beherrscht.

Der erste Titel des chinesischen Kaisers war "Verkünder der Grundprinzipien", und so nennt er (Jackson) denn auch sein Buch "Principles of Program Design", obwohl es besser "Some Useful Principles for the Design of COBOL Programs" heißen sollte.

Knuths monumentale algorithmische Enzyklopädie heißt demgegenüber etwas bescheidener: "The Art of Computer Programming", N. Wirth spricht schlicht von "systematischem Programmieren" und E. W. Dijkstra, von dem seine Jünger auch als von ihm sprechen, nannte sich vor fünf Jahren in seiner ACM Turing Award Lecture "The Humble Programmer", den bescheidenen Programmierer. Sein brillantes Buch von 1976 trägt einen ebenso bescheidenen Titel: "A Discipline of Programming", eine Disziplin des Programmierens. Die geistigen Väter der strukturierten Programmierung, Dijkstra, Floyd, Hoare, Wirth sind bescheiden, sind skeptisch. M. Jackson ist ein Dogmatiker, aber hat er nicht recht?

Der kommerzielle Anwendungsprogrammierer, das ungeliebte Stiefkind der erlauchten "Computer Science", hat endlich seinen Propheten und Lehrer, einen Mann, der die Probleme der kommerziellen Praxis kennt und den Programmierer sachgemäß und verständlich anzuleiten weiß. Datenstrukturen sind nun einmal das A und O der kommerziellen Datenverarbeitung, und natürlich soll man sich durch sie beim algorithmischen Entwurf leiten lassen, vor allem, wenn die Datenstrukturen von außen vorgegeben sind. Aber

sind sie das wirklich immer? Muß man wirklich "Backtracking" betreiben, auch wenn man keine sequentiellen Band-Dateien verarbeitet?

Und wie vermeidet man das Einschmuggeln von Implementierungsvorschlägen in ein Pflichtenheft für ein Software-Produkt? Ist datenstruktur-orientierter Programmentwurf wirklich ein Universalrezept? Das schönste Reißbrett ersetzt nicht den Zeichner; aber man zeichnet besser damit.

M. Jackson hat jetzt eine Professur in London bekommen. Bravo! Aufgaben der Hochschule sind Lehre und Forschung, für die Software bestimmt auch in dieser Reihenfolge. Jackson ist einer der besten Lehrer der Software-Praxis.

Lernen wir von ihm!