Einteilung der Mängel
Softwaremängel lassen sich in verschiedene Gruppen einordnen. Die Entäuschungen von Kunden lassen sich mindern, wenn Sie man sich darüber klar ist, welche Fehler in welcher Phase auftreten können und wie diesen Fehlern vorgebeugt werden kann. Software ist ein hochkomplexes technisches System und es ist falsch zu glauben, daß die Botschaften der Werbung „Installiere es und es funktioniert“viel mit der Wirklichkeit zu tun haben. Das weiß im Grunde jeder Kunde. Die nachfolgende Typisierung ist wertvoll, um eine vernünftige Risikobewertung für den konkreten Fall erstellen zu können. Und sie hilft auch dem ITler bei nicht fernliegenden Argumentation, daß jeder Zuwachs an Sicherheit ein Mehr an Aufwand und Kosten bedeutet. Ich kann auf der einen Seite die Argumentation der Kunden verstehen, die da lautet, man hätte ihnen in leuchtenden Farben die Vorzüge eines Produktes gezeigt, ohne auf die erforderlichen Risiken und damit einhergehenden Kosten hinzuweisen. Auf der anderen Seite weiß ich, daß auch die ITler Recht haben,wenn sie feststellen, daß Kunden auch dann eine Investition in mehr Sicherheit scheuen, wenn ihnen die Risiken bekannt sind. Dies vorweg soll diese Beitragsserie Ihnen helfen, die Risiken aus einem konkreten Projekt besser zu verstehen. Die einzelnen Gruppen werden in gesonderten Blogs vertieft, die Sie über die Links erreichen.
Abweichung zwischen der Erwartung des Kunden und dem tatsächlichen Ergebnis
Diese Fehlerklasse ist besonders für die Phase der Einführung von Software von großer Bedeutung. Auftraggeber artikulieren oft die Beschwerde, die gelieferte Software entspreche nicht den Erwartungen. Diese Gruppe zeichnet sich dadurch aus, daß die Software zur Erreichung eines bestimmten Vertragszwecks angeschaft wurde, dieser Vertragszweck aber nicht durch die Software erreciht werden kann. Was die Software macht, tut sie richtig, sie ist auch verfügbar, aber das was sie macht erfüllt nicht die subjektiven Anforderungen des Kunden.
Das Problem dieser Gruppe besteht darin, daß a.) entweder kein Sollzustand beschrieben ist oder b.) ein Sollzustand beschrieben ist, dieser aber so formuliert wurde, daß die Parteien ihn unterschiedlich auslegen. Die Aufgabenstellung besteht hier darin, eine möglichst einheitliche Sichtweise der Punkte herzustellen, die nicht klar definiert wurden.
Verfügbarkeit
Wie jedes technische System kann auch Software schlicht nicht verfügbar sein. Im Rahmen der Einführung von Software kann es sein, daß die Software mit den vereinbarten Funktionen nicht rechtzeitig abgeliefert wird, im Rahmen der Pflege / des Supports von Software kann es sein, daß a.) die zur Aufrechterhaltung der Funktionsfähigkeit gelieferte Software nicht rechtzeitig geliefert wird oder b.) die gelieferte Software mit dem System des Kunden nicht kompatibel ist, so daß bestehende Funktionen der Software nicht mehr verfügbar sind.
In Bezug auf den Punkt b.) (Aufrechterhaltung der Funktionsfähigkeit) können faktisch Maßnahmen getroffen werden, die dazu dienen, die Verfügbarkeit schnell wieder herzustellen. Solche Maßnahmen bestehen gemein hin erstens in der Anfertigung von Datensicherungen. Hier ist von der Seite des Kunden die Frage angebracht, welche Methode der Datensicherung gewährleistet, daß der Kunde schnellstmöglich wieder produktiv arbeiten kann. Bei größeren Systemen werden Redundanzsysteme betrieben, die die Folgen des Ausfall eines Systems mindern.
In Bezug auf den Punkt a.) (Herstellung der Betriebsfähigkeit einer bestimmten Funktion) ist leider zu konstatieren, daß neben den juristischen Drohkulissen wie Vertragsstrafen, Schadensersatzdrohungen etc. kein faktisches Mittel vorhanden ist, daß zu annehmbaren Kosten für Versorgungssicherheit sorgt. Man macht sich als Kunden von der Leistungsfähigkeit des Anbieters abhängig. Diese Abhängigkeit kann nur dadurch beseitigt werden, daß man jederzeit zu einem anderen Anbieter wechseln kann – in den meisten Fällen ist ein solcher Wunsch getrost als utopisch bezeichnen; oder man überbrückt die fehlenden technischen Funktionen durch manuelle oder andere Tätigkeiten, was ein Unternehmen belasten oder lähmen kann.
Fehler bei der Berechnung
Diese Gruppe ist leichter als die erste zu veranschaulichen. Es gibt einen Sollzustand, dieser wird aber durch die Leistungen der Software nicht hergestellt. Die Software rechnet falsch, sie ist nicht so schnell wie vereinbart… etc.
Inkompabilität
Dem Gewährleistungsrecht des Kauf- wie Werkvertragsrechts liegt der Ansatz zugrunde, daß der Mangel zum Zeitpunkt des Gefahrenübergangs vorhanden sein muß. Der nachfolgende Verschleiß des Produktes selbst darf nicht so schnell voranschreiten, daß das Produkt innerhalb der Gewährleistungsfrist seine vertraglich vorausgesetzte oder vereinbarte Funktionsfähigkeit verliert. Das ist aber bei Software nicht das Problem. Software „altert“ deshalb, weil die Umgebungsparameter sich ständig ändern. Die technische Systemumgebung wie auch tatsächliche Anforderungen ändern sich und die Software muß entsprechend angepasst werden. Diese Kompatibilität herzustellen ist grundsätzlich kein Thema der Gewährleistung sondern eines der Formulierung von Aktualisierungsverpflichtungen des Anbieters. Die damit einhergehenden Risiken sind denen vergleichbar, die bei der Einführung von Software zu beachten sind. Aber die Kunden beachten das Thema lange nicht so aufmerksam wie in der Einführungsphase von Software.
Kapazität, Reaktionszeiten, Lastverhalten
Die Überschrift spricht für sich selbst. Ich werde auf dem Blog die vorhandene Rechtsprechung aufzeigen und entsprechende Lösungsmöglichkeiten geben.
Schutz vor Zugriffen Dritter
Schutz von Ausspähung, Datensicherheit, Datenschutz, Schutz der Integrität von Geschäftsgeheimnissen. Welche Anforderungen sind an Software zu stellen.
Fehlende Bedienerfreundlichkeit, Absicherung gegen Bedienungsfehler, Fehlende Dokumentation
Software muß nicht nur rechnen können, man muß auch wissen, wie man sie bedienen muß. Die Konzepte der ITler weichen häufig von den gerichtlichen Vorgaben ab, die das Vorhandensein einer Bedienungsanleitung fordern. Außerdem muß Software sich so bedienen lassen, daß Fehlbedienungen nicht gleich zu Katastrophen führen (wollen Sie wirklich alles löschen?) und sollte auch bedienerfreundlich sein.