Computer gecrasht

Solange es sich nur um den PC am Schreibtisch handelt, reicht ein Neustart. Schlimmstenfalls sind mühsam erarbeitete Daten weg. Software steuert aber auch sehr komplexe Systeme und unter Umständen hängen Sicherheit und Leben von ihrem guten Funktionieren ab.

Univ.-Prof. Dr. Gustav Pomberger, Leiter des Institutes für Wirtschaftsinformatik sowie des Christian-Doppler-Laboratoriums für Software Engineering (Universität Linz) über die noch immer sehr mangelhafte Qualität von Softwareprodukten.

Software ist zu einem wichtigen Wirtschaftsfaktor geworden, und die Softwareindustrie ist eine aus unserem Wirtschaftsleben nicht mehr wegzudenkende Wachstumsbranche. Softwareprodukte werden immer häufiger zentrale Bestandteile komplexer Systeme, die technische oder betriebswirtschaftliche Prozesse steuern oder unterstützen. Aber auch im täglichen Leben werden wir immer stärker - meist unbemerkt - abhängig von funktionierender Software. In einzelnen Bereichen, wie etwa in der Flugsicherung oder in der Energietechnik, kann Sicherheit und Leben vom richtigen Funktionieren der dort eingesetzten Software abhängen. Die Funktionsfähigkeit und Zuverlässigkeit von Software ist Voraussetzung für die Funktionsfähigkeit des Gesamtsystems, dessen Bestandteil sie ist.

Die rasante Entwicklung auf dem Gebiet Informationstechnik führte im Bereich der Softwareentwicklung aber zu solchen Schwierigkeiten, daß man bereits Mitte der sechziger Jahre den Begriff "Softwarekrise" geprägt hat. Das heißt zwar nicht, daß die Hardware stets fehlerfrei ist, die Praxis zeigt jedoch, daß der Grund für die Schwierigkeiten, die oft auftreten, wenn man Computersysteme einsetzen will, meist in einer fehlerhaften Software zu suchen ist. Es ist leicht nachzuweisen, daß Softwareprodukte fast immer eine wesentlich niedrigere Qualität aufweisen als andere technische Produkte. Daher erhebt sich die Frage nach den Ursachen der oft miserablen Qualität von Softwareprodukten.

Software ist in bezug auf Konstruktion komplexer als vielleicht jedes andere vom Menschen errichtete Gebilde. Die Vergrößerung der Funktionalität eines Softwaresystems ist keine Wiederholung der gleichen Elemente in einem größeren Maßstab, sondern immer eine Vergrößerung der Anzahl unterschiedlicher Elemente. In den meisten Fällen ist die Beziehung zwischen den Elementen äußerst vielschichtig. Die Komplexität des Gesamtsystems steigt daher bei Erweiterungen viel stärker als linear. Die Komplexität ist eine unvermeidbare Eigenschaft von Software. Zu ihrer Meisterung reicht der gesunde Hausverstand nicht aus. Nur wer über ausreichende theoretische, technische und organisatorische Kenntnisse auf dem Gebiet der Softwaretechnik verfügt, ist in der Lage, die Probleme der Softwareentwicklung zu meistern.


Komplizierte Gebilde

Eine der Hauptursachen für die mangelnde Qualität von Softwareprodukten besteht darin, daß die in der Praxis eingesetzten Methoden und Techniken zur Konstruktion von Software oft weit hinter dem Stand der Technik, das heißt den wissenschaftlichen Erkenntnissen auf dem Gebiet, hinterherhinken. Obwohl in den letzten zwanzig Jahren eine Reihe von Methoden und Techniken mit beträchtlichem Rationalisierungs- und Qualitätssicherungspotential entwickelt wurde, wird in vielen "Softwarefabriken" mit wenigen Ausnahmen noch immer gearbeitet wie vor 10 Jahren. Konzepte, wie formale Spezifikationstechniken, Prototyping, abstrakte Datentypen, information hiding, objektorientierte Programmierung finden nur in Ausnahmefällen Anwendung. Die Methodenkenntnisse der Organisatoren, Analytiker und Programmierer sind selten auf dem aktuellen Stand, weil - nicht zuletzt als Folge des Einsatzes unfachmännischer Techniken - der Entwicklungs- und Wartungsaufwand unnötig hoch ist und dadurch kaum Zeit bleibt für eine entsprechende "Nach- und Umrüstausbildung" der Softwareentwickler. Statt saubere, fundierte Konstruktionsprinzipien zur Meisterung der Komplexität und zur Qualitätssicherung anzuwenden, blicken Softwareentwickler nicht selten mit Stolz auf ihre komplizierten Gebilde. Je undurchschaubarer das Ganze wird, desto wertvoller erachten sie es (und rechtfertigen damit oft auch den astronomischen Preis für ihr Produkt): Das führt meist dazu, daß nur mehr der Autor selbst das Ganze versteht, ja manchmal versteht nicht einmal mehr er selbst seine Lösung. Daß dies in einem Betrieb zu nicht verantwortbaren Abhängigkeiten führt, versteht sich von selbst.

Eine weiter nicht zu unterschätzende Quelle für schlechte Produktqualität sind die sogenannten "De-facto-Standards". Diese umfassen Programmiersprachen, Betriebssysteme, Datenbanken und Kommunikationsprotokolle. Nichts als Ironie bleibt, wenn man bedenkt, daß gerade die aus heutiger Sicht ungeeignetsten Lösungen zu De-facto-Standards geworden sind.

Die meisten der etablierten De-facto-Standards sind veraltet, unnötig kompliziert und ungeeignet für einen sparsamen Umgang mit Ressourcen und, vom heutigen Standpunkt der Softwaretechnik aus betrachtet, unfachmännisch. Sie stehen damit einfachen, fachmännischen und qualitativ hochwertigen Lösungen im Wege. Ihr unvermeidbarer Einfluß neutralisiert vielfach die erhöhte Leistungsfähigkeit moderner Hardware. Nicht viel besser steht es mit den Werkzeugen für den Softwareentwickler. Die Qualität eines Produktes ist auch davon abhängig, ob Werkzeuge zu dessen Herstellung zur Verfügung stehen, und wie gut diese Werkzeuge sind. Weil auch die Werkzeuge selbst Softwareprodukte sind, leiden sie unter dem gleichen Qualitätsmangel.


Kinderkrankheiten

Die Softwaretechnik unterscheidet sich von anderen technischen Branchen auch dadurch, daß der Anteil an verwendeten Halbfabrikaten und bereits vorgefertigten Komponenten bei der Produktherstellung äußerst gering ist. Das heißt, die meisten Produkte werden neu konstruiert und sind deshalb immer wieder mit den bei neuen Produkten üblichen Kinderkrankheiten und Qualitätsmängeln behaftet. Wegen des geringen Einsatzes vorgefertigter, bereits mehrfach bewährter Komponenten, greift der daraus resultierende Qualitätssteigerungseffekt für das Endprodukt nicht. Das müßte nicht so sein, denn auch auf diesem Gebiet wurden (zum Beispiel durch die objektorientierte Programmierung) bereits beträchtliche Fortschritte erzielt, die aber von der Praxis nur sehr zögernd genutzt werden.

Eine der wichtigsten Maßnahmen zur Herstellung von Qualitätsprodukten, nämlich die Institutionalisierung von Qualitätssicherungsmaßnahmen im Entwicklungsprozeß, fehlt bei vielen Softwareproduzenten gänzlich. Beobachtet man den Herstellungsprozeß von Produkten, die sowohl aus Hardware- und aus Softwarekomponenten bestehen, wie dies etwa im Maschinen- und Anlagenbau der Fall ist, so fällt auf, daß die Hardwareteile des Systems den üblichen Qualitätskontrollen und -sicherungsmaßnahmen unterzogen werden, während die Softwarekomponenten lediglich auf ihre Funktionsfähigkeit getestet werden. Qualitätsmängel, die das Design und die Struktur betreffen, und sich später bei änderungen und Erweiterungen katastrophal auswirken können, bleiben meist unerkannt.

Umorientierung

Dies sind nur einige der Ursachen für schlechte Qualität von Softwareprodukten, die Liste ließe sich durchaus noch verlängern. Da die Softwaretechnik eine Schlüsseltechnologie für unsere hochtechnisierte Gesellschaft darstellt, kann und darf man sich mit dem schlechten Qualitätsstandard von Software (der sich für so manche Anwender, aber auch Hersteller bereits zu einem existentiellen Problem ausgewachsen hat) nicht abfinden. Im Gegenteil, man muß alles dransetzen, diesen Zustand zu verbessern.

Dazu muß in erster Linie die Aus- und Weiterbildung der Softwareentwickler verbessert, eine Umorientierung im Bereich der eingesetzten Methoden, Techniken und Standards eingeleitet, die Entwicklung problemadäquater Werkzeuge gefördert und eine Institutionalisierung von Qualitätssicherungsmaßnahmen gefordert werden. Da die wirtschaftliche Bedeutung von immateriellen Produkten gerade in rohstoffarmen Ländern nicht hoch genug eingeschätzt werden kann, die erforderlichen Maßnahmen zur Verbesserung der Softwaretechnologie aber mit hohen Kosten verbunden sind, sind staatliche Förderungsprogramme für die Softwareindustrie nicht nur angebracht, sondern lassen durchaus eine hohe Umwegrentabilität erwarten.