Kommunaler DV-Dienstleister entwirrt Spaghetti-Code

Analysewerkzeuge helfen bei der Bewältigung von Altlasten

22.11.1991

Fast jedes Unternehmen arbeitet heute mit Programmen, die so oft manipuliert wurden, daß sie kaum mehr wartbar sind. Die Gemeinsame Kommunale Datenverarbeitungszentrale Ruhr (GKD Ruhr) hat sich nun mit Hilfe von zum Teil selbst entwickelten Analysewerkzeugen daran gemacht, die gefürchteten Spaghetti-Codes zu entwirren.

Haushaltsgeld gehört leider zu den knappen Gütern dieser Welt - korrekte Planung und Überwachung der Ausgaben sind also notwendig. Insbesondere im kommunalen Bereich ist es deshalb nicht nur demokratische Tugend, bewußt und zielgerichtet mit den Einnahmen umzugehen. Gesetzesänderungen und Verfeinerungen laufender Anwendungen verlangen intensive Wartung und Pflege der eingesetzten Software, die teils noch aus den Anfängen der DV stammt. Tools leisten hier wertvolle Hilfe.

Nicht nur in der Industrie findet sich der verwöhnte DV-Anwender, und nicht nur im Bereich der Privatwirtschaft klagen die Spezialisten der Abteilungen für Anwendungsentwicklung über zu starke Belastung - insbesondere in den Bereichen Wartung und Pflege von Software. Und auch im kommunalen Bereich stören Programmabbrüche den geordneten Arbeitsablauf.

Schnelligkeit bei der Behebung von Störungen und Fehlern ist insbesondere bei Online-Anwendungen gefragt, da sonst die Behörden-Tätigkeit rasch zum Erliegen kommt. Das gilt nicht nur für den Bereich des kommunalen Finanzwesens wie Haushaltsüberwachung und Klassenverfahren, sondern vor allen Dingen dann wenn der Bürger betroffen ist.

GKD Ruhr blickt auf eine lange DV-Historie von 25 Jahren zurück (siehe Kasten). Im Zuge der fortschreitenden Entwicklung der DV-Hard- und Softwaretechnologie nahmen die Mitarbeiter Anregungen von außen auf. So verfeinerten sie Werkzeuge zur Automatisierung und Entlastung von täglicher Routine. Gleichzeitig weckt der Blick nach vorn Wünsche nach Neuerungen und Hilfsmitteln, ohne die eine moderne kommunale DV-Zentrale schnell den Anschluß verlieren würde.

Seit 1979 entwickelt die GKD ihre Programme strukturiert nach der Jackson-Methode mit Hilfe des Programmgenerators "Diproter" von der Gesellschaft für Mathematik und Datenverarbeitung (GMD). Aufbauend auf diesem Werkzeug, das in seiner Ur-Form Jackson-Diagramme und die Steuerungselemente eines Cobol-Programmes erstellt, wurde von der GKD weiterentwickelt. Der Grund: Die Handhabung des Programmgenerators gestaltete sich im täglichen Ablauf etwas schwierig.

Nach der Generierung eines Programmrahmens mußten die Operationen von Hand an der richtigen Stelle eingefügt werden. Anderungen oder Uberarbeitungen, die nach dieser oft mehrere Tage dauernden Arbeit anfielen, erforderten die erneute Generierung eines Rahmens und Einfügung der korrigierten Statements per Hand.

Das weiterentwickelte Tool, das die Behörde jetzt "Diprogen" nennt, beseitigte diese Probleme. Zusätzlich entwickelten die GKD-Mitarbeiter noch "Diproinv" zur Unterstützung der automatisierten Programminversion.

Damit gehören die berühmt-berüchtigten Spaghetti-Programme als Ergebnis der der immer wieder vorgenommenen Pflegeeingriffe der Vergangenheit an - zumindest, was neuere Entwicklungen anbelangt. Dennoch ist der Bestand an unstrukturierten Programmen erheblich und beläuft sich auf weit mehr als 50 Prozent.

Zur Überprüfung von Programmen auf Ablaufsicherheit, Fehlerfreiheit und logische Konsistenz stehen bei der GKD Ruhr neben den Möglichkeiten der Programmiersprachen mehrere Hilfsmittel zur Verfügung. Online-Programme wurden ursprünglich mit BTS (Batch Terminal Simulator) getestet; dieses Verfahren simulierte die Online-Umgebung eines Programmes. Dabei stellten die Experten allerdings fest, daß sich die Programme häufig realiter nicht so verhielten wie im BTS.

Daher ist bei den GKD-Mitarbeitern seit geraumer Zeit ein Werkzeug mit der Bezeichnung "TIP" im Einsatz. TIP ist logisch zwischen IMS und den Anwendungsprogrammen angesiedelt und läuft zusammen mit diesen in einer IMS-Online-Region, zeigt aber nur Datenbankzugriffe an. Das Werkzeug unterbricht im Moment eines Datenbankzugriffes und gibt die I/Os sowohl vor als auch nach dem Zugriff an.

Daraufhin stellt es Information darüber zusammen, welche DB- und DC-Zugriffe in welcher Reihenfolge auf welche Datenbanken und -Sätze ablaufen und verdeutlicht so das Programmverhalten. Auch wenn auf diese Weise nicht alle Vorgänge erfaßt werden, ermöglicht das Tool doch, manuelle Breakpoints zu setzen, und zeigt darüber hinaus Variablen an. Hierfür ist jedoch immer eine Umwandlung erforderlich.

Bei mit Diprogen erstellten Programmen reicht TIP zum Testen grundsätzlich aus - aber auch die GKD leidet unter vielen fast zu Tode gepflegten Alt-Programmen, die sich im Laufe von 25 Jahren kommunaler DV ansammelten. Die Programme wimmeln also von unbenutzten Routinen und sind zudem auch noch unzureichend dokumentiert. Dazu kommen in letzter Zeit zunehmend Anwendungen, die von anderen Kommunen übernommen oder von Fremdunternehmen produziert wurden.

Die Mitarbeiter des kommunalen Dienstleisters ersticken schier in Änderungs- und Programmieraufträgen. Besonders schwierig wird es, wenn eine Gesetzesgrundlage sich geändert hat, ein Fehler aufgetreten ist oder ein Programm abgebrochen werden mußte.

In besonders schlechter Erinnerung hat die GKD ein Programm, das von einer anderen Kommune übernommen wurde: Es war von einem Assembler-Spezialisten in der entsprechenden Logik erstellt worden - allerdings unter Benutzung von Cobol.

Das Verständnis der inneren Logik wurde noch zusätzlich dadurch erschwert, daß das Programm ursprünglich für ein anderes als das jetzt benutzte Verfahren geschrieben wurde. Die Behörde hatte alle Mühe, das Programm für den jetzigen Verwendungszweck aufzubereiten.

Herkömmliche Methoden, die in Cobol existieren, wie READY TRACE oder DISPLAY/EXHIBIT erschienen für die Anpassung des Programmes nicht mehr zeitgemäß. Sie gelten als umständlich und erfordern viele Umwandlungen. Durch die Menge des erzeugten Outputs und der unübersichtlichen Riesen-Listen ist der Gebrauch dieser Methoden mit praktischen Problemen verbunden. Dazu kommt, daß Cobol-85 - bei der GKD immer intensiver eingesetzt - solche Möglichkeiten nicht mehr unterstützt

Neben der Hinwendung zu Cobol-85 testeten die Mitarbeiter des DV-Zentrums auch die Eignung des PCs als Entwicklungsplattform. Obwohl ein erster Versuch nicht zur vollen Zufriedenheit der Beteiligten ablief, wird die Entwicklung auf dieser Schiene weiterhin beobachtet. Ein Nebeneffekt: Die PC-Möglichkeiten weckten den Wunsch, auch am Großrechner direkt und komfortabel in einer Online-Umgebung zu testen und den Programmablauf nachzuverfolgen.

Bei der Auswahl eines geeigneten Tools, galt die Leistungsfähigkeit von TIP als Mindestanforderung. Neben der isolierten Anzeige von I/Os wünschten die GKD-Fachleute auch die Anzeige von Datenfeldern innerhalb eines Programmes mit Möglichkeiten zur Manipulation, um den Test nach Wunsch steuern zu können.

Mehrere komplexe Anwendungen, die aus einigen 100 Programmen in verschiedenen Unterprogrammebenen bestehen, erfordern entsprechende Behandlungsvarianten. Diprogen erzeugt, wie erwähnt, die Programmsteuerung und generiert aus diesem Arbeitsschritt heraus die Anschlußpunkte selbst. Sie unterscheiden sich voneinander durch Verwendung einer laufenden Nummer als Namensbestandteil und sind nur innerhalb einer Sektion, nicht aber für das gesamte Programm eindeutig.

Der Programmablauf ist daher anhand von Trace-Listen nur schwer nachzuvollziehen und so bedarf es hier einer Hilfe. Letztes K.o.-Kriterium für die Auswahl des Test-Werkzeuges war daher eine ausgefeilte Analysemöglichkeit, die beispielsweise auch stillgelegten Code oder Sprunganweisungen aufspürt.

Einweisung erfolgte ohne großen Aufwand

Die GKD entschied sich für die Prüfung eines Produktes aus der "Via/Center"-Reihe des in Aachener ansässigen Systemhauses GEI. Ein kleineres Team aus Bochum nahm das Werkzeug mit der Bezeichnung "Smarttest" unter die Lupe. Die Anfangsschwierigkeiten hielten sich in Grenzen. Für die Einweisung in die Grundfunktionen reichten wenige Stunden.

Der vom Werkzeug dargestellte Programmablauf anhand des Sourcecodes erleichtert jetzt die Wartungs- und Pflegearbeiten. An jeder Stelle eines Testlaufes besitzt der Bearbeiter zur näheren Überprüfung eine Stopp-Option. Die Anzeige von Variablen auch innerhalb von Tabellen und - ganz wichtig - die von Indizes in lesbarer Form steigert das leichtere Verständnis der Programme. Insbesondere bei umfangreichen Tabellen kommen diese Features besonders wirkungsvoll zum Tragen, zumal notwendige Modifikationen keine Schwierigkeiten bereiten.

Tool spart Zeit und Nerven

Hilfestellung für die Beseitigung der Altlasten, die nach Anforderung der Nutzer sukzessive abgearbeitet werden, leistet auch die Darstellung der Programmsteuerungselemente. Bei der Bearbeitung der bei der kommunalen Dienststelle vorhandenen Spaghetti-Programme spart ein Tool wie Smarttest Nerven und Zeit. Eine quantitativ meßbare Nutzenbestimmung eines derartigen Hilfsmittels bereitet Probleme, da jedes Programm in seiner Bearbeitung andere Anforderungen stellt. Der Prozentsatz an eingesparter Arbeitszeit ist jedoch in jedem Fall zweistellig.