Wer nicht haften will, sollte seine Software besser testen
Artikel erschienen in Swiss IT Magazine 2006/06
Fehlerfreie Software gibt es nicht, war kürzlich am ersten «Swiss Testing Day» im Zürcher Technopark zu hören. Da erstaunt es auch nicht, wenn das «Testing» die Hälfte der Projektzeit in Anspruch nehmen kann. Rechtlich sieht die Situation allerdings etwas anders aus: Wer eine Software kauft oder nach bestimmten Vorgaben anfertigen lässt, hat einen vertraglichen Anspruch darauf, dass die Software mängelfrei ist. Das gilt selbst dann, wenn es mit vernünftigem Aufwand überhaupt nicht möglich ist, eine fehlerfreie Software herzustellen.
So hart, wie dies auf den ersten Blick erscheinen mag, ist es freilich nicht: Der vertragliche Anspruch auf mängelfreie Software bedeutet normalerweise nur, dass der Kunde das Recht hat, dass ein Fehler nach der Entdeckung auf Kosten des Lieferanten korrigiert wird oder dass er bei besonders gravierenden Fehlern oder Unvermögen des Lieferanten vom Vertrag zurücktreten kann. Daran ändern auch Klauseln wie «Der Lieferant übernimmt keine Verantwortung für die Fehlerfreiheit der Software» nichts.
Relevant wird die Erkenntnis der «ewigen» Fehlerhaftigkeit von Software erst dann, wenn ein Mangel einen Schaden verursacht, der über den Defekt an der Software hinausgeht: Für solche Folgeschäden muss der Lieferant nur dann geradestehen, wenn ihn ein Verschulden trifft. War der Mangel auch unter Anwendung der erforderlichen Sorgfalt nicht zu vermeiden, fehlt ein solches Verschulden.
Entscheidend ist somit der Sorgfaltsstandard, der von einem Softwareentwickler erwartet werden kann. Der Jurist wird in einem Schadensfall die Frage stellen, was ein gewissenhafter Entwickler getan hätte, um den Fehler zu vermeiden oder zumindest rechtzeitig zu erkennen. An einen «Profi» werden dabei höhere Anforderungen gestellt. Mit anderen Worten: Das erforderliche Mass an Sorgfalt ist ein «moving target»: Ein Softwarehaus wird zwar nicht jede neue Methode zur Vermeidung und zum Erkennen von Fehlern sogleich umsetzen müssen, doch die Anforderungen steigen stetig.
Die oft vorhandene vertragliche Begrenzung der Haftung schützt dabei nur zum Teil: Für grobe Fahrlässigkeit («das hätte er nicht tun dürfen») ist im Gegensatz zur leichten Fahrlässigkeit («das hätte er besser nicht getan») eine Begrenzung oder Wegbedingung der Haftung nicht möglich, und je höher die Sorgfaltsstands sind, desto eher neigen die Gerichte dazu, von einem groben Verschulden auszugehen, vor allem wenn ausgewiesene Spezialisten zum Einsatz gekommen sind. Dass auch auf Seiten des Kunden in einem Schadenfall meist das eine oder andere schief gelaufen ist, wird dem Lieferanten dabei oft nicht helfen.
Für die Praxis bedeutet dies, dass in Softwareprojekten dem Testen von Software auch aus rechtlichen Gründen genügend Zeit eingeräumt werden sollte. Es ist ein Irrglaube, dass Software erst im Rahmen ihrer Abnahme durch den Kunden überprüft werden muss; die Abnahme sollte nur noch eine Bestätigung der durch den Lieferanten bereits in eigener Regie durchgeführten Tests sein. Lässt sich jedoch ein Lieferant wie so oft auf einen Terminplan ein, der ihm keine entsprechenden eigenen Tests erlaubt, kann bereits dies ein grobes Verschulden darstellen. Oder anders formuliert: Wenn es fehlerfreie Software in der Tat nicht gibt, kommt am Testen auch keiner vorbei.