Sanierung von Altsystemen Beim Re-Engineering schliessen sich 4GL und CASE nicht aus Von Franz Fasching*

25.02.1994

Ein wichtiges Ziel des Re-Engineerings ist die Ueberfuehrung bestehender Programme in Umgebungen, bei denen Anwendungsoberflaeche, Programmlogik und Datenhaltung klar getrennt sind. Entwicklungssysteme auf einer 4GL-Basis bieten dafuer ein bewaehrtes Modell.

Die in den DV-Abteilungen der Unternehmen vorhandenen Programmierkapazitaeten sind haeufig dadurch blockiert, dass die Entwickler den groessten Teil ihrer Zeit auf die Pflege bestehender Applikationen verwenden. Das ist die Hauptursache fuer den immer wieder beklagten Anwendungsstau. Fuer Neuentwicklungen steht allerdings mittlerweile eine Vielzahl von Tools zur Verfuegung, mit denen sich strukturierte Programme erstellen lassen, die weit komfortabler zu warten sind als Anwendungen im herkoemmlichen Code.

Syntaktische und semantische Analyse

Wuenschenswert ist neben einer an Engineering-Prinzipien orientierten Neuentwicklung vor allem die Ueberfuehrung der riesigen Mengen kaum strukturierten und in der Regel schlecht dokumentierten Codes in Programme, die mit angemessenem Aufwand gepflegt werden koennen. Mit Methoden des Re-Engineerings lassen sich die vorhandenen Programmbestaende sanieren und in eine neue technologische Umgebung portieren, wo sie nicht nur besser gewartet, sondern auch auf ein hoeheres Qualitaetsniveau gehoben werden koennen.

Bei Betrachtung der Kosten fuer eine Anwendung wird haeufig nur die Phase bis zu ihrer Uebernahme in die Produktion beruecksichtigt. Vernachlaessigt wird die Tatsache, dass vor allem in Grossunternehmen die Software viel stabiler ist als die schnellebige Hardware. Anwendungen, die mehr als zehn Jahre im Einsatz sind, stellen keineswegs Ausnahmen dar. In diesem Lebenszyklus sind immer wieder Anpassungen an die veraenderten Anforderungen durchzufuehren, die letztlich weit mehr Geld verschlingen als die urspruengliche Entwicklung.

Unter dem Begriff Re-Engineering werden alle Vorgaenge zusammengefasst, die im Kontext mit Softwarewartung auftreten. Abgedeckt werden von den Methoden des Re-Engineerings verschiedene Phasen der Software-Entwicklung von der Fehlerbeseitigung ueber die funktionale Erweiterung bis zur umfassenden Qualitaetssteigerung der Software.

Unter Reverse Engineering versteht man den Prozess, nachtraeglich aus dem Code vorhandener Softwaresysteme Informationen ueber Kontroll- und Datenstrukturen zu gewinnen. Die beim Re-Engineering durch syntaktische und semantische Analyse des Altsystems anfallenden Metadaten liefern Aussagen ueber den Ist-Zustand der vorhandenen Daten und Funktionen sowie deren Beziehungen zueinander.

Diese Metadaten bilden die Basis fuer die Weiterbenutzung (Re-Use) der Altsysteme in neuen Umgebungen. Zur Verwaltung dieser Informationen lassen sich Entwicklungsdatenbanken einsetzen, wie sie im Rahmen von CASE-Systemen angeboten werden. In einem solchen Repository koennen Informationen ueber Funktionen und Daten abgelegt werden, die im Prozess des Re-Engineerings anfallen. Das Repository stellt ein Data-Dictionary dar, das die Abhaengigkeiten der Strukturinformationen untereinander wiedergibt.

Beim Re-Engineering ist es vor allem wichtig, eine in herkoemmlich programmierten Systemen nicht vorhandene Trennung von Anwendungsoberflaeche, Logik und Datenhaltung einzurichten. Wenn dies einmal geschehen ist, lassen sich die Anwendungssysteme auf ein neues Qualitaetsniveau bringen und ihre Wartung wesentlich vereinfachen. So kann man mit Hilfe eines Maskengenerators Oberflaechen fuer verschiedene Rechner- und Betriebssystem- Plattformen wie etwa Unix, OS/2 oder DOS erzeugen. Die Programmlogik wird mit Analyse-Tools nachstrukturiert. Bei der Isolierung der Datenhaltung von anderen Systemkomponenten kann es sinnvoll sein, ein neues Datenbank-Management-System (DBMS) einzurichten, das, vor allem wenn es SQL-faehig ist, die Anwendungsprogrammierung weitgehend entlastet.

Relationale DBMS zeichnen sich dadurch aus, dass sie dem Endbenutzer einen unkomplizierten Ad-hoc-Zugriff auf die Daten ermoeglichen. Mit einem interaktiven Editor lassen sich Abfragen erstellen, ohne dabei Befehle, Syntax, Tabellen- und Feldnamen auswendig wissen zu muessen. Die Entwicklungsabteilung wird dadurch weitgehend von der Aufgabe entlastet, Auswertungen zu programmieren.

Zur Effizienzsteigerung koennen Entwicklungsumgebungen auf Basis einer Sprache der vierten Generation (4GL) nachhaltig beitragen. Sie reduzieren die Kosten fuer Entwicklung, Pflege und Wartung der Programme erheblich. Die Zusammenhaenge zwischen Datenstrukturen und Anwendungen lassen sich jederzeit nachvollziehen, wodurch man bei der Planung von Aenderungen oder Erweiterungen schnell die daraus resultierenden Folgen abschaetzen kann. Sprachen der vierten Generation sind heute weit mehr als Programmiersprachen. Sie sind integriert mit Data-Dictionaries und enthalten Masken- und Report- Generatoren.

Mit einem Data-Dictionary laesst sich ein unternehmensumfassendes Datenmodell realisieren. Strukturen von Programmen, Ressourcen, Datensichten, Bildschirmmasken und Reports werden darin fixiert und fuer den Anwender transparent vorgehalten. Dadurch ist der Einsatz von Programmier-Tools erst wirklich effizient zu gestalten.

Moderne Entwicklungsumgebungen koppeln die Anwendung so weit von Betriebssystem- und TP-Monitor-Spezifika ab, dass sich der Programmierer auf die Loesung der sachlichen Probleme konzentrieren kann. Durch die Lernfaehigkeit dieser Systeme erreicht der einzelne Programmierer in kurzer Zeit eine hohe Produktivitaet. In der gesamten Entwicklungsgruppe wird sehr schnell ein Erfahrungslevel erzielt, auf dem eine exakt auf die spezifischen Anforderungen abgestimmte Arbeit moeglich ist.

4GL-Systeme sind inzwischen in der Lage, wichtige Funktionen einer an Engineering-Prinzipien orientierten Entwicklungsumgebung zu erfuellen. Umgebungen, die in den 70er und 80er Jahren unter dem Schlagwort 4GL auf den Markt kamen, haben sich inzwischen von ihren urspruenglichen Modellen sehr weit wegentwickelt. Begonnen hatte es mit Mitteln zur Effizienzsteigerung beim Codieren. Heute enthalten solche Umgebungen ein komplettes Arsenal von Unterstuetzungsmechanismen fuer Programmierer, System- und Datenbankadministratoren.

Wenn heute von Anwendungsgeneratoren als Umgebungen der fuenften Generation gesprochen wird, so uebersieht man dabei, dass moderne Entwicklungsumgebungen bereits seit langem Generatorprinzipien enthalten. Mit ihnen lassen sich beispielsweise aus Datendefinitionen Standard-Reports und Bildschirmmasken erzeugen. Sie beinhalten eine automatische Dokumentation und eignen sich hervorragend, um komplexe Geschaeftsregeln in ausfuehrbaren Code umzusetzen.

4GL-Entwicklungssysteme dekken einen wichtigen Teilbereich des Software-Engineerings ab. Wenn zu entscheiden ist, mit welchen Hilfsmitteln eine Anwendung realisiert werden soll, dann nehmen diese Systeme in der Angebotspalette sicherlich einen hervorragenden Platz ein. Sie decken ein breites Spektrum von Aufgaben ab und koennen heute als ausgereift und bewaehrt gelten.

Methodisches Vorgehen als die Basis fuer CASE

Die Anwender, die bereits Erfahrungen mit 4GL- Entwicklungsumgebungen gemacht haben, sind sich einig, dass man methodisch vorgehen muss, um solche Produkte erfolgreich einzusetzen. Wo dies konsequent durchgehalten wird, bildet sich auch die Infrastruktur heraus, auf der sich CASE-Umgebungen optimal einrichten lassen. CASE-Umgebungen loesen 4GL-Systeme keineswegs ab. Letztere bilden vielmehr einen wesentlichen Bestandteil von CASE. Im Rahmen eines umfassenden Unternehmenskonzepts fuer die Software-Entwicklung kommt es darauf an, dass fuer die verschiedenen Aufgaben jeweils die optimalen Hilfsmittel herangezogen werden. Vor allem bei kommerziellen Anwendungen bieten sich haeufig 4GL-Systeme an.

Die Frage, ob die Konzepte von 4GL und CASE sowie die damit zusammenhaengenden Prinzipien des Re-Engineerings in Widerspruch zueinander stehen oder sich sogar gegenseitig ausschliessen, kann ganz klar verneint werden.

Ingenieurmaessiges Vorgehen besteht darin, mit dem jeweils geringstmoeglichen Aufwand das angestrebte Ziel zu erreichen. Von daher ergibt sich automatisch die Rolle von 4GL-Systemen in CASE- Umgebungen. Sie bieten sich in vielen Faellen als das optimale Realisierungsmittel an. Ferner liefern sie ein Konzept fuer den gesamten Lebenszyklus einer Anwendung - ein Modell fuer das Re- Engineering von Altsystemen.