Der Software-Wartungsaufwand steigt ständig:

Programm-"Sanierung" - ein unerfüllbarer Traum?

20.04.1979

NEUESTING/MÜNCHEN (hö) - Bestehende Programme sanieren zu können, statt sie neu schreiben zu müssen, wünschen sich heute viele Anwender. Die meisten EDV-Abteilungen klagen darüber, daß mehr und mehr alte Programme unwartbar werden, jedoch weiter verwendet und laufend neuen Anforderungen angepaßt werden müssen. Oft kommt die Entwicklung dringend benötigter neuer Systeme durch immer schwieriger werdende Wartungsaufgaben völlig zum Erliegen. Das muß nicht so sein, behaupten Christoph Röttger und Wolf Osterberg der S & O Software-Technik, Neuesting. Ihre Methode, aus alten, "verwarteten" Programmen neue zu machen, ohne sie neu schreiben zu müssen, stellen sie hier vor.

Niemand, der mit viel Elan und Begeisterung eine EDV-Abteilung aufgebaut hat, rechnete damit, daß für jeden Monat Programmentwicklung später durchschnittlich vier Monate Pflege und Wartung anfallen. Seitdem neuerdings die Wartungsfreundlichkeit von Programmen besonders groß geschrieben wird kann man annehmen, daß neu entwickelte Programme später einmal wartungsfreundlicher sind. Aber was tun mit alten Programmen? Wer kann sie schon einfach wegwerfen? Sie werden weiter benötigt und müssen weiter gewartet werden. Jede Änderung wird jedoch schwieriger, aufwendiger, fehlerhafter. Wenn es eines Tages gar nicht mehr anders geht, werden alte Programme schließlich neu geschrieben. Zu wirklichen Neuentwicklungen kommt man immer seltener.

Eine Methode, aus alten Programmen "neue" zu machen, Wartungsfreundlichkeit nachträglich einzubauen, und das ohne Neuprogrammierung, wäre der Ausweg aus diesem Dilemma.

Eine Utopie?

Keineswegs! Wir wenden eine solche Methode mit Erfolg an. Sanierungsreife Programme werden wieder wie neu und wartungsfreundlicher als sie je gewesen sind.

Die Unübersichtlichkeit, die durch Verflechtung von Steuerungs- und Verarbeitungsfunktionen, unerwünschte Redundanzen, Schalter und Weichen zur Bewältigung von "Ausnahmesituationen", nachträgliche Einbauten vergessener oder neuer Steuer- und Verarbeitungsteile entsteht.

Meistens sind es Batch-Programme. Sie verarbeiten eine oder mehrere sequentielle Dateien, oft werden zusätzlich DA- und ISAM-Dateien gelesen oder upgedatet. Die wichtigsten Steuerungsaufgaben sind dabei das Mischen sequentieller Eingaben und die Steuerung für die Verarbeitung von - oft vielfach geschachtelten - Satzgruppen. Wenn diese Steuerungsfunktionen - nach Feld-Wald-Wiesen-("Natur-")Methode programmiert - mit den Verarbeitungsfunktionen verflochten sind, entstehen Programme, die mit jeder Änderung immer unwartbarer werden, bis man sich schließlich kaum noch an sie herantraut.

So wird ein Programm saniert

Niemand sollte seine Zeit bei dem Versuch vertun, den Steuerfluß solcher Programme zu durchschauen. Nach unserer Methode wird im ersten Schritt mit einem narrensicheren Verfahren in wenigen Minuten ein vorgegebener Programmübersichtsplan ergänzt. Der Übersichtsplan gliedert sich in Blöcke und Abschnitte für vorbereitende und abschließende. Verarbeitungen auf Programm- und Gruppenebene sowie die Verarbeitungen pro Satz. Beim ersten Schritt braucht man nur zu wissen, wie viele Dateien gemischt und wie viele Gruppen verarbeitet werden. Das weiß man auch beim schlimmsten Programm.

Danach erst - beim zweiten Schritt - wird die Programmliste angeschaut. Alle Steuerungsanweisungen (nach einfachen Regeln leicht zu erkennen) werden weggestrichen. Was übrig bleibt - das Programm ist inzwischen kräftig geschrumpft - sind Verarbeitungsfunktionen, die nun den Blöcken und Abschnitten im Übersichtsplan zugeordnet werden.

Die Regel dafür ist: Wie oft und wann ist eine Verarbeitungsfunktion auszuführen. Die Antwort: Einmal zu Beginn oder am Ende des Programms beziehungsweise, einer Gruppe, oder einmal pro Satz, führt eindeutig zur richtigen Stelle im Übersichtsplan.

Der Datenteil des Programms wird zunächst unverändert übernommen. Der Befehlsteil wird nach dem Übersichtsplan neu zusammengestellt. Die Steuerungsfunktionen fallen weg.

Die Hauptsanierungsarbeit ist damit erledigt. Die Änderungen, deretwegen das Programm ja saniert werden mußte sind in das jetzt klar gegliederte, übersichtliche Programm leicht einzufügen.

Jetzt fehlt nur noch der Steuerteil, der dafür sorgt, daß die Verarbeitungen zum richtigen Zeitpunkt und in der richtigen Reihenfolge ablaufen. Diesen Steuerteil schreiben wir nicht jedesmal neu, er ist vorgefertigt und für beliebig viele Dateien und Gruppenstufen verwendbar. Wir fügen ihn einfach am Ende des Programms an. Die Verbindung zwischen dieser Steuerung und der Verarbeitung erfolgt über eine einfache, schon im Übersichtsplan vorgegebene Schnittstelle. Falsch machen kann man dabei nichts.

Nach der ersten Umwandlung finden wir in der Cross Reference die Hilfsfelder der alten Steuerung, die jetzt ebenfalls wegfallen.

Die Ablauflogik des sanierten und geänderten Programms ist durch die vorgefertigte Steuerung sofort fehlerfrei, der Test des neuen Programms ist einfach und wird dadurch viel kürzer. Fehler können höchstens noch in der Verarbeitung sein und sind sofort erkennbar, denn sie werden nicht mehr von Fehlern in der Steuerung verdeckt. In dem neuen übersichtlich gegliederten, wartungsfreundlichem Programm sind sie leicht aufzufinden und zu beheben.