Sind Programmgeneratoren eine Antwort auf die Software-Krise?

28.01.1977

Harry Sneed,

Programmierer im Hause Siemens und Referent für die G.E.S., Gesellschaft für die elektronische Systemforschung mbH, Insel Reichenau

Es entspricht einem uralten Wunsch der Menschen, einen Sklaven zu haben, der ihnen alle unangenehmen Aufgaben abnimmt und auf den sie sich 100prozentig verlassen können. In Mississippi war es früher der Neger, in Deutschland war es früher vielleicht die Ehefrau. In der Miniwelt der Datenverarbeitung ist das heute der Programmgenerator. Denn es hat sich inzwischen herumgesprochen, daß Programmieren eine unangenehme Tätigkeit und daß Programmierer nicht gerade zuverlässig sind. Also braucht man einen Sklaven.

Aber hier irrt man sich. Erstens generieren Programmgeneratoren keine Programme, sondern nur Code. Das Programm, also die detaillierte maschinengerechte Lösung eines bestimmten Problems, muß der Mensch nach wie vor ausarbeiten. Zweitens bieten Programmoder Code-Generatoren keine Garantie, daß das, was sie generieren, das Problem richtig löst. Hier muß wieder der Mensch eingeschaltet werden, und das Schlimme ist, daß die Struktur seiner Lösung in dem generierten Code kaum wiedererkennbar ist. Drittens sind die heutigen Generatoren fast alle in einer bestimmten Methodik, wie etwa Entscheidungstabellentechnik, normierten Programmierung oder strukturierten Programmierung, eingebettet - der Generator setzt voraus, daß die Menschen die Methodik von beherrschen und konsequent anwenden. Wenn aber der Programmierer methodisch arbeitet, braucht er keinen Generator, um seinen Code zu erzeugen. Dies dürfte für ihn keine Schwierigkeit sein, und wenn er nicht methodisch arbeitet, hilft ihm auch kein Generator. Die Probleme bleiben. Unser teurer Sklave nimmt uns nur einen Bruchteil unserer unangenehmen Arbeit ab und ist nur so zuverlässig, wie wir es sind - wahrlich ein schlechter Sklavenhandel.

Nichtsdestotrotz sind Programmgeneratoren sehr im Gespräch - eine neue Wunderwaffe, um uns aus der Software-Krise herauszuhelfen. Ihre Vertreter versprechen eine beachtliche Steigerung der Programmierproduktivität bei sinkenden Kosten, und viele frustrierte DV-Manager möchten glauben, daß sie mit Hilfe der neuen Wunderwaffen ihre wachsenden Software-Probleme lösen können. Leider sind die heutigen Generatoren weit davon entfernt, den hochgesteckten Erwartungen gerecht zu werden. Sie werden zum größten Teil mißverstanden und überschätzt.

Daß ein Programmgenerator die Programmierproduktivität erhöhen kann, ist nicht bestreitbar. Aber es ist weniger der Generator selbst als sein Erziehungseffekt, der die Erhöhung verursacht. Er zwingt den Programmierer nämlich, nach einer bestimmten Methode zu arbeiten. Aber dafür gibt es auch billigere Mittel, beispielsweise Design Reviews, Code Walkthroughs und Testanalysen, mit deren Hilfe man die Softwareentwicklung steuern und kontrollieren kann.

Außerdem können Generatoren lediglich den Codierungsvorgang rationalisieren. Dieser Vorgang ist jedoch nur ein Schritt in dem langen Entwicklungsprozeß eines Programmsystems und bei weitem nicht, der schwierigste. Viel schwieriger sind die Programmplanung, der Programmentwurf und der Programmtest. Es nützt der beste Generator nichts, wenn das Programm schlecht konzipiert ist oder wenn es nicht mit einem vertretbaren Aufwand verifiziert werden kann. Das sind Aufgaben, die zur Zeit immer noch nur von hochqualifizierten Software-Ingenieuren unter Leitung eines aktiven und fähigen Programmiermanagements bewältigt werden können.

Schließlich sind Programmgeneratoren in der Regel nur Erweiterungen bestehender Programmiersprachen. Sie sind darauf gerichtet, die Schwächen dieser Sprachen auszugleichen. Eine echte, dauerhafte Lösung zum Problem der Codierung verschiedener Anwendungen bieten sie nicht. Es kommt viel mehr darauf an, die Programmiersprachen selbst zu verbessern. Man muß zum Beispiel die Entscheidungstabellenauflösung, die strukturierten Steueranweisungen und die verschiedenen Codekopplungsmechanismen direkt in die Zielsprache einbauen, statt den Umweg über einen Precompiler zu gehen. In dem Moment, wo dies geschieht, wird ein großer Teil der heutigen Generatoren überflüssig. Hinzu kommt, daß die Hersteller leistungsfähigere und komfortablere Compiler und Bibliotheksverwaltungssysteme anbieten müssen.

All dies deutet darauf hin, daß die viel gepriesenen Programmgeneratoren doch nicht die ersehnte Antwort auf die sogenannte Software-Krise, die aber meiner Meinung nach eher eine Management-Krise ist, sind. Sie können sie auch nicht sein, weil ihr Wirkungsbereich - die Codierung - zu eng ist. Die eigentlichen Ursachen der Krise liegen woanders, nämlich beim Entwurf und beim Testen der Programme sowie in der Planung, Organisation und Steuerung der Software-Entwicklung - von den Problemen der Software-Wartung noch gar nicht zu sprechen.

Gemessen an den Problemen in diesen Bereichen, ist das Problem der Codierung nach den Worten Professor Wirths wirklich zweitrangig. Gute, erfahrene Programmierer und engagierte, kompetente Programmiermanager, die bereit sind, neue Wege zu gehen, sind nach wie vor erforderlich mit oder ohne Generatoren. Demzufolge dürfen potentielle Kunden nicht allzuviel von Generatoren erwarten. Der Rationalisierungseffekt wird ohne eine Veränderung der Rahmenbedingung minimal bleiben.