Neue Entwicklungen versprechen bessere Software in kürzerer Zeit

Mit Hilfe von CASE aus der Softwarekrise

17.11.1989

Die wachsende Komplexität von Softwareprojekten sowie die rapide steigenden Entwicklungs- und Wartungskosten haben in jüngster Zeit ein Schlagwort immer stärker in den Vordergrund geschoben: CASE.

Das schon sei Jahren umhergeisternde Schreckgespenst der Softwarekrise erhält ständig neue Nahrung: Zum einen verschlingen die Wartungskosten einen immer größeren Teil des Budgets, womit weniger Geld für die Entwicklung neuer Software bereitsteht. Zum anderen steigt der Bedarf nach neuer Software weiter. Während vor wenigen Jahren noch 80 Prozent der DV-Investitionen in die Hardware gingen und nur 20 Prozent in die Software, hat sich dieses Verhältnis inzwischen umgekehrt. Hinzu kommt, daß es weiterhin an Informatikern wie auch an qualifizierten Anwendungs- und Systemprogrammierern fehlt.

Umfaßten Softwareprojekte noch vor wenigen Jahren in der Regel einige Tausend Codierzeilen, so liegen sie heute bei großen Projekten in der Regel bei drei bis fünf Millionen Lines-of-Code. Mittelgroße Projekte erreichen bereits Hunderttausende von Programmzeilen.

Nach einer Untersuchung von GE Aerospace waren 1960 rund zehn Prozent der Funktionen eines von ihr betreuten Waffensystems in Software implementiert, was weniger als 5000 Zeilen Sourcecode ergab. Heute sind es bis zu 90 Prozent der Systemfunktionen und bis zu fünf Millionen Zeilen Quellcode. Für die Zukunft ist eine weitere Verschärfung dieses Zustandes zu erwarten.

Das gilt im kommerziellen Bereich durch die Konzentration wirtschaftlicher Macht und die zunehmende Globalisierung der Märkte wie auch im militärischen oder wissenschaftlichen Sektor. Mit strukturierter Programmierung allein ist es heute nicht mehr getan.

Eine Produktivitätssteigerung ist unerläßlich. Die Software muß wieder überschaubar werden, die Projektzeiten müssen verkürzt, die Kosten gesenkt und die Programme sollen fehlerfrei werden. Abhilfe

verspricht man sich von CASE. CASE steht für Computer Aided Software Engineering (statt "Software" wird neuerdings oft der Begriff "System" verwendet) die ingenieurmäßige Softwareerstellung mit Unterstützung durch den Computer. Das bedeutet ein planmäßiges, nach bestimmten Regeln vorgehendes Arbeiten in aufeinanderfolgenden, präzise definierten Projektphasen. Eines der Ziele ist die Überschaubarkeit der Systeme, ein anderes die Wartbarkeit und Wiederverwendbarkeit der erstellten Software.

Den Software-Entwicklungsprozeß unterteilt man heute in fünf wichtige Phasen. Die Teilschritte sind ins einzelnen die Phasen der Analyse, des Designs, der Codierung, des Tests und der Wartung. Für CASE bilden die Methoden der strukturierten Analyse das entscheidende Fundament.

In der Systemanalyse spielen dabei Flußdiagramme, Blockdiagramme, Organigramme etc. eine wichtige Rolle. Sie verschaffen dem Verantwortlichen zunächst einen visuellen Überblick. Die Grafiken sind das Ergebnis einer Analyse; viel wichtiger jedoch sind die Methoden, die hinter den Diagrammen stehen. Jede Methode, egal ob nach Yourdon und DeMarco oder die in Frankreich gebräuchlichen nach Merisse, weist drei Charakteristika auf, eine Notation, Regeln und Managementpraktiken.

Die Methoden, die in der zweiten Hälfte der siebziger Jahren aufkamen, stehen heute in ihrer Blüte. Zirka 55 Prozent aller amerikanischen Systemanalytiker arbeiten gegenwärtig mit datenflußorientierten Methoden. Ein Problem liegt darin, daß keine Methode den gesamten Entwicklungszyklus abdeckt, sondern in der Regel nur eine einzige Phase, etwa die Analyse oder das Design. Die Folge ist, daß die Software-Entwicklung nicht nur aus einer Vielzahl von Phasen, sondern auch aus unterschiedlichen Methoden, Verfahren, Techniken und Tools besteht. Der Markt ist wenig transparent, zumal die Hersteller ihr Produkt zunehmend mit dem Attribut "CASE" versehen, womit eine ähnliche Tendenz stattfindet wie im Datenbankbereich, wo die Marketiers schnell das Wort "relational", oder jetzt "verteilt", als verkaufsfördernd entdeckten.

Nach Studien des US-Magazins Fortune werden rund 75 Prozent aller Softwareprojekte niemals fertiggestellt. Nach einer Untersuchung von amerikanischen Bundesbehörden sind es sogar 90 Prozent. Zu einem hohen Grad, so Tom de Marco Ende September auf einem Seminar der GEI in Düsseldorf, werden die Projekte aber erst relativ spät in der Endphase abgebrochen, wenn entweder das Geld aufgebraucht ist oder sich die Undurchführbarkeit der geplanten Software-Entwicklung zeigt.

In den meisten Fällen werden die Fehler im Anfangsstadium gemacht und zwar aufgrund falscher Anforderungsspezifikationen. Das Carnegie-Mellon-Software-Institute hat festgestellt, daß dies rund zwei Drittel aller Softwaresysteme betrifft. Die Fehler werden dann durch die einzelnen Phasen mitgeschleppt Lind ziehen oft neue, noch schwerwiegendere Fehler, nach sich. Viele Projekte sind damit schon zum Tode verurteilt, noch bevor sie überhaupt richtig beginnen.

Auch wenn ein Entwicklungsprojekt erfolgreich abgeschlossen wurde, enthält die Software mit großer Wahrscheinlichkeit noch immer Programmierfehler. Die Frage ist nur, wie viele. Je später ein Fehler entdeckt wird, desto teurer wird es, ihn zu beseitigen. Wie eine Studie der Bell Labs ergab, kostet die Korrektur eines Fehlers unmittelbar nach der Codierung rund 100 Dollar. Wird der "Bug" aber erst nach der Produktfreigabe gefunden und bereinigt, so schlägt er mit zirka 10 000 Dollar zu Buche. Zum Vergleich: Wird er bereits in der Planungsphase entdeckt, ist dies praktisch mit keinen Kosten verbunden.

Die Domäne der CASE-Tools sind die Analyse- und die Designphase. Für die Codierphase gibt es vielfach bereits integrierte Programmgeneratoren. Oft kann auch der Test- und Debuggingzyklus in dieser Umgebung vollzogen werden.

Das Problem ist, daß meist die ersten beiden Phasen in einer CASE-Umgebung stattfinden, die nachfolgenden Teilschritte aber in einer Anwendungs-Entwicklungsumgebung. Und zwischen beiden gibt es derzeit keine tragfähigen Brücken. Bei isolierten Änderungen in einer der beiden Umgebungen ergibt sich eine Inkonsistenz, die sich später, in der Wartungsphase rächt.

Sollen die Tools der verschiedenen Phasen integriert werden, geht das nur mit Hilfe von Projekt-Dictionaries, in denen die verwendeten Datenstrukturen und alle Projektparameter zentral und für alle Tools zugänglich abgelegt sind. Ein Beispiel für eine integrierte Umgebung, die sowohl die Entwurfs- als auch die Implementierungsphasen abdeckt, ist die geplante Kombination der CASE-Tools von Cadre Technologies mit dem Datenbanksystem Ingres von Relational Technology und dessen Anwendungsentwicklungsumgebung. Kernstück ist ein Data-Dictionary, an das weitere Dictionaries angeschlossen werden können. Das Data-Dictionary kontrolliert die in der Datenbank abgelegten Datenbestände. Der Zugriff auf die Dictionaries erfolgt über die SQL-Schnittstelle des Datenbank-Managers - entweder ganz direkt mit einem SQL-Interpreter oder auch mit einer zu diesem Zweck entwickelten Benutzeroberfläche. Durch die Projekt-Dictionaries im Zentrum der CASE-Umgebung bleibt die Konsistenz der Daten über alle Phasen des Softwarezyklusses gewährleistet.

Ein ähnliches System bietet seit kurzem Oracle für die Entwicklung größerer Datenbank-Anwendungen an. Auch für die Klassiker ist gesorgt: Die Kombination von Micro Focus Cobol-Workbench mit dem CASE-Tool Excelerator oder die Information Engineering Workbench von Knowledgeware bieten integrierte Entwicklungsumgebungen für die Cobol-Welt.

Vor allem an den Universitäten wird derzeit diskutiert, ob das "Herumbasteln" an bestehenden Softwareansätzen und -lösungen Sinn macht. Hohe Aufwendungen für die Anpassung der Schnittstellen und die Ungewißheit des Erfolgs sprechen dagegen. Der andere Weg wäre die Erstellung einer Softwarefabrik quasi "auf der grünen Wiese". Diese Positionen wurden auf der 1. International Conference on System Development Environments & Factories im Mai in Berlin von DV-Management, Industrie- und Universitätsvertretern diskutiert. Praktiker allerdings räumen solchen, bislang noch eher theoretischen Planspielen nur geringe Chancen ein.

Einen in absehbarer Zeit gangbaren Mittelweg beschreitet das Forschungsprojekt ESF, die European Software Factory. Dieses, von der Industrie und der Europäischen Gemeinschaft gemeinsam geförderte Projekt, soll, ausgehend von der Erarbeitung europäischer Standards, eine intelligente Software-Bibliothek, Benutzerdienste und Benutzerschnittstellen hardwareunabhängig entwickeln.

Eine kurzfristig nutzbare Chance, der Misere der Software-Entwicklung zu begegnen, bieten neue Programmiersprachen wie Ada, die Konzepte zur sauberen Projektabwicklung bereits in den Sprachumfang integrieren. Dazu gehört auch die sich langsam durchsetzende objektorientierte Programmierung (Smalltalk, C+ +, Actor, Objective Pascal, Turbo Pascal). Ein zusätzlicher Schub ist in Teilbereichen durch den Einsatz von Expertensystemen zu erwarten.