Durch neue Sprachen geraten bewährte Methoden nicht ins Abseits, denn:

4GL-Systeme können nicht als Wunderwaffe wirken

10.07.1987

Der Einsatz bewährter Methoden der SW-Technik ist für die Entwicklung einer tragfähigen Softwarearchitektur zwingende Voraussetzung. Nur auf dieser Basis ist es möglich, mit Sprachen der vierten Generation qualitativ hochwertige Systeme schnell und sicher zu bauen. Fazit: Gute Methoden lassen sich durch nichts ersetzen.

"Sprache der vierten Generation" ist zweifellos eine geschickte Marketing-Bezeichnung für Systeme, die eigentlich mit der Zielrichtung entwickelt wurden, endbenutzernahe Programmierung und einfach handhabbare Entwicklungssysteme anzubieten. Mit diesen Produkten verfolgte man nicht primär das Ziel, unbedingt eine neue Sprache zu schaffen. Vielmehr war damit die Absicht verbunden, die heterogene Welt der Mainframe-Systeme durch eine neue Softwareschicht leicht zugänglich zu machen. Das war auch bitter nötig, denn Anfang der 80er Jahre war eine wilde Sstemlandschaft herangewachsen, die für die Softwareentwicklung zunehmend zum Problem wurde.

In diesem Szenario reichte es bei weitem nicht mehr aus, Programmiersprachen wie Cobol oder PL/1 zu beherrschen; vielmehr drängten immer stärker die systemnahen Komponenten in den Vordergrund. Um ein Anwendungssystem zu programmieren, war es notwendig, umfangreiche Kenntnisse des TP-Monitors zu besitzen, die Bildschirmschnittstelle über ein Maskensystem zu bedienen und die Datenbankzugriffe über ein weiteres eigenständiges System zu realisieren. Neben den Programmiersprachen mußte man die zahlreichen Komponenten dieser heterogenen Welt beherrschen, um zu einer effizienten und sicheren Softwarerealisierung zu kommen.

Selbst wenn es nur darum ging, einfache Auswertungen in endbenutzernaher Programmierung oder kleine, überschaubare Anwendungen zu entwickeln, war doch immer wieder die Kenntnis dieser systemnahen Software erforderlich. Anfang der 80er Jahre mußten etwa 50 Prozent des Entwicklungsaufwands großer Anwendungssysteme in die Bedienung der Systembasis gesteckt werden. Es blieben also nur 50 Prozent Kapazität übrig, um sich auf die Anwendung, das heißt den eigentlich produktiven Teil der Arbeit, zu konzentrieren. Die Anwendung kam also zu kurz.

Mit diesem umständlichen und zeitraubenden System-Wirrwarr aufgeräumt zu haben, ist der eigentliche große Verdienst der Sprachen der vierten Generation. Ihr wesentlicher Vorteil war und ist, daß sie über diese vom Hersteller angebotene heterogene Systemwelt durch eine weitere Softwareschicht eine homogene und komfortable Schnittstelle anbieten. Denn zusätzlich zu einer neuen Sprache offerieren diese Systeme eine integrierte Bedienung des TP-Monitors, der Bildschirmschnittstelle, des Datenbanksystems, darüber hinaus aber auch die Integration eines Datenlexikons, einer Objekt-Source-Verwaltung, Compiler/Interpreter, integrierte Binder/Lader und das Editor-System. Für den Softwareentwickler wird damit eine neue einheitliche Welt zur Verfügung gestellt, die es ihm erlaubt, ohne detaillierte Kenntnisse der Systembasis relativ schnell zu Ergebnissen zu kommen. Das ist zweifellos ein wesentlicher Fortschritt.

Solide Systemarchitektur muß vorhanden sein

Natürlich muß der leichte, schnelle Umgang mit dem System bezahlt werden. Der Preis, den man bei der Anwendung der Systeme der vierten Generation zweifellos zahlt, kommt nicht zuletzt durch den hohen Betriebsmittelbedarf (CPU-Zeit) und die eingeschränkte Strukturierungsmöglichkeit der eigenen Software zustande. Denn oft sind die Unterprogrammtechniken nur schwach ausgeprägt und begrenzt verwendbar. Es fehlen Copy-Mechanismen und weitere Hilfsmittel, die eine gute Modularisierung einer größeren Softwareanwendung unterstützen.

Der Einsatz von Tools oder Generatoren erleichtert die Arbeit erheblich. So kann beispielsweise die Menge des zu schreibenden Codes um die Hälfte bis zwei Drittel reduziert werden Durch das Verpacken von Regeln, Methoden und Richtlinien werden andererseits Sicherheit und Qualität der Software wesentlich verbessert. Und noch ein Vorteil: Durch geschicktes Bündeln von Schnittstellen in Makros läßt sich das System-Know-how auf wenige Teile des Systems und auf wenige Mitarbeiter konzentrieren.

So sinnvoll und nützlich der Einsatz von Systemen der vierten Generation ist, wenn sie dazu beitragen, ein System in hoher Qualität mit hoher Produktivität zu entwickeln - keines dieser Systeme oder dieser Sprachen wird dem Entwickler die Aufgabe abnehmen, die Anwendung, für die das System konzipiert ist, gründlich zu verstehen. Es führt kein Weg daran vorbei, das Anwendungsproblem, das es zu lösen gilt, genau zu analysieren, das Softwaresystem detailliert und präzise zu spezifizieren und eine solide Systemarchitektur zu entwickeln. Deswegen lautet die entscheidende Frage: Wie läßt sich eine sichere und gute Systemarchitektur realisieren? Und hier sind es die Methoden, die zählen, und nicht die Werkzeuge. Methoden, die helfen, zu denken, zu strukturieren und Logik in Systeme umzusetzen.

Wichtige Methoden im Überblick

- In der Problemanalyse die Datenmodellierung mit Hilfe des Entity-Relationship-Verfahrens vorzunehmen, stellt sicher, daß die Anwendung detailliert und präzise verstanden und niedergeschrieben wird. Die Ergebnisse sind durch ihre grafische Darstellung trotz der hohen Formalisierung auch für den Anwender verständlich. Damit ist der wichtigste Input für die Modularisierung gegeben.

- Durch das Standard-Schichtenmodell wird eine klare Systemstruktur geschaffen. Die Zerlegung in virtuelle Maschinen sorgt dafür, daß zusammengehörendes Know-how auch in der Software zusammenbleibt und ist damit eine wesentliche Voraussetzung

für die spätere Wartbarkeit des Systems.

- Die Modularisierung nach Datenabstraktion stellt für jedes Modul eine Reihe von (Export-)Operationen zur Verfügung, die auf "seinen" Daten operieren und von den "Importeuren" genutzt werden können und müssen. Die physische Repräsentation der Moduldaten bleibt das "Modulgeheimnis" und braucht den Aufrufer nicht zu kümmern. Die Leistungsstärke eines Moduls wird präzise definiert, die Integrität der Daten kann sichergestellt werden, und nicht zuletzt schafft die Regel "Ein Bearbeiter = ein Modul" klare Verantwortlichkeiten bei den Entwicklern.

- Selbst große Systeme können durch eine systematische und durchgängige Systemfehlerbehandlung stabilisiert werden. Insbesondere eine Prüfung der Daten an den Schnittstellen führt zu einer frühen Fehlererkennung. Bereits während der Entwicklung wird konsequent versucht , alle vorhersehbaren aber unerwünschten Ereignisse im Programm zu erkennen. Solche Situationen ("Parameter außerhalb seines Wertebereichs") werden dann über die gesamte Aufrufhierarchie hinweg protokolliert.