Die Abhaengigkeit der Kunden ist eintraeglicher als ihre Ausbildung

22.07.1994

Professor Dr. Niklaus Wirth

Institut fuer Computersysteme, ETH Zuerich*

Der offensichtliche Wildwuchs der Software wird von der Gemeinschaft ihrer Benutzer nur dank des unglaublichen Fortschritts der Halbleitertechnik akzeptiert, die das Verhaeltnis Leistung zu Kosten in einem Grad verbessert hat, der in keinem anderen Gebiet der Technik auch nur annaehernd erreicht wurde.

Aussichten fuer eine weitere Leistungssteigerung sind nach wie vor vorhanden. Gleichzeitig gibt es keine Anzeichen dafuer, dass der Speicherbedarf neuer Software abnehmen wird. Diese Entwicklung der Dinge war bereits Anlass fuer einige Faustregeln, "Gesetze" und Korollare (Folgerungen). Sie sind - wie ueblich in solchen Faellen - eher vage und unverbindlich formuliert und weder beweis- noch widerlegbar. Obwohl sie zunaechst eher sarkastisch erscheinen moegen, stellen sie doch den Sachverhalt erschreckend klar dar:

- Software expandiert, bis der Speicher gefuellt ist (Parkinson).

- Software wird schneller langsamer, als die Hardware schneller wird (Reiser).

Zwei Faktoren lassen sich identifizieren, die die Akzeptanz aufgeblaehter Software ermoeglichen, naemlich die schnelle Leistungssteigerung der Hardware und die Nachlaessigkeit der Kunden bezueglich kritischer Evaluation. Doch wichtiger als die Gruende fuer die Akzeptanz ist die Frage

"Was macht Software komplex?"

Hier scheint mir die Tatsache ausschlaggebend, dass Hersteller kritiklos jedes Feature implementieren, das von Kunden gewuenscht wird, unabhaengig davon, wie (un)begruendet solches Verlangen sein mag. Sind die geforderten Features inkompatibel mit dem Konzept des bestehenden Systems, wird dies entweder nicht bemerkt oder geflissentlich uebersehen. Das jedoch fuehrt zu komplexen und vertrackten Konstruktionen und zu muehsamem Erlernen ihrer Verwendung. Der Grund fuer die unbesehene Uebernahme neuer Features ist letztlich die Ansicht, dass Quantitaet wichtiger sei als Qualitaet.

Eine weiterere Ursache liegt im ueblichen monolithischen Design. Beim Bau eines Systems werden alle erdenklichen Features sogleich beruecksichtigt und eingebaut. Jeder Kunde muss fuer sie alle bezahlen; er hat keine Auswahl, obwohl er in der Regel nur wenige Features benutzt.

Komplexitaet ist zu einem wichtigen Mittel geworden, um die Abhaengigkeit der Kunden vom Hersteller zu foerdern. Zu diesem Zweck haben grosse Softwarehaeuser stark in den Kundendienst investiert und Hunderte von Mitarbeitern eingestellt, die rund um die Uhr Hilferufe von Kunden beantworten und sie damit staerker an den Hersteller binden. Obwohl diese Investitionen sich offenbar bezahlt gemacht haben, glaube ich, dass ein Produkt, das auf einem systematischen Konzept basieren wuerde, begleitet von einem konzisen Manual und einem ausgefeilten Tutorial, sowohl fuer den Kunden als auch fuer den Hersteller letztlich wesentlich oekonomischer waere. Allerdings ist nicht zu bestreiten, dass ein weiterhin vom offerierten Kundendienst abhaengiger Anwender eine dauerhaftere Quelle von Einkuenften ist als einer, der sein Produkt voellig beherrscht und versteht.

Der Verdacht liegt nahe, dass in dieser Beziehung Industrie und Universitaet grundsaetzlich verschiedene Zielsetzungen haben, und ihm verdankt folgendes "Wirtschaftsgesetz" seinen Ursprung: Die Abhaengigkeit der Kunden ist eintraeglicher als ihre Ausbildung.

Manuale mit Hunderten von Seiten sind heute fuer Programmiersprachen, Betriebssysteme und alle Arten von Softwarewerkzeugen ueblich. Sie sind untruegliche Zeichen von vertracktem Design, unklarem Konzept, aber auch von der Absicht, den Kunden abhaengig zu machen. Denn wer moechte schon auf ein Konkurrenzprodukt wechseln, nachdem er endlich den Inhalt dieser Waelzer gemeistert hat.

Der Umstand, dass der Hersteller, dessen Produkt zuerst auf dem Markt erscheint, erfolgreicher sein wird als sein Konkurrent, der seinen Leuten mehr Zeit laesst und dadurch mit einem besseren Produkt Zweiter wird, hat ebenfalls einen negativen Einfluss auf die Produktqualitaet im Softwaresektor. Gutes Konstruieren zeichnet sich durch ein graduelles, schrittweises Verfeinern des Produktes aus, durch seine wachsende Leistung unter gegebenen Randbedingungen und limitierten Ressourcen.

In der Software werden Begrenzungen von Ressourcen nicht mehr ernst genommen, weil die Massstaebe von Prozessorleistung und Speicherkapazitaet ueberaus rasch wechseln. Serioese Konstruktionsdisziplin scheint kurzfristig nicht mehr lohnend zu sein, zumal die Tendenz vorherrscht, dass das zuerst auf dem Markt erscheinende Produkt zum De-facto-Standard fuer alle Zeiten erkoren wird.