Schlussfolgerung: Es ist sowohl im Interesse des Lieferanten als auch im Interesse des Einkäufers, die Anforderungen an die Software möglichst exakt zu erfassen. Und zwar so exakt, dass die Anforderungen auch nur so interpretiert werden können, wie es der Autor des Dokuments gemeint hat. Nachdem das gar nicht immer so leicht ist, werden von Beraterfirmen einschlägige Kurse angeboten, und zum Formulieren von Anforderungen erschien auch in der Elektronik bereits ein Artikel [2].
Vertragliche Gewährleistung und Haftung bei Software-Mängeln
Liegt ein Software-Fehler vor, haben die Abnehmer der Software gegenüber ihren Lieferanten Gewährleistungsrechte. Diese beschränken sich im EU-Raum zunächst auf
Gerade die Nachbesserung kann bei Eingebetteter Software beträchtliche Kosten verursachen, denn das Einspielen der korrigierten Software in das Zielsystem ist oft nur durch Fachkräfte möglich und erfordert im schlimmsten Fall eine Rückrufaktion der betroffenen Endprodukte.
Hat der Lieferant den Fehler fahrlässig verursacht – d.h., hätte der Lieferant den Fehler bei Auslieferung durch dem Stand der Wissenschaft und Technik entsprechende Tests erkennen und beseitigen können – oder beseitigt der Lieferant einen Fehler nicht innerhalb einer angemessenen Frist, so ist der Lieferant zur Zahlung von Schadensersatz verpflichtet. Zum Erkennenkönnen ist zu erwähnen, dass die Prüfpflichten desjenigen Lieferanten, der zugleich der Entwickler der Software ist, höher sind als bei einem Wiederverkäufer.
Die Haftung auf Schadensersatz ist dabei unbeschränkt, soweit nicht im Vertrag zwischen Lieferant und Abnehmer eine wirksame Haftungsbeschränkung vereinbart ist. Wird beispielsweise eine Software im Produktivbereich zur Steuerung eines Fließbandes eingesetzt und verursacht der Fehler einen Stillstand der Produktion, muss der Lieferant – bei Fehlen einer Haftungsbeschränkungsvereinbarung – den Gewinnausfall wegen des Stillstands ersetzen. Ein solcher Haftungsfall kann ein Unternehmen sehr schnell ruinieren, insbesondere da auch eventuell bestehende Versicherungen den Schaden, wenn überhaupt, erst nach langwierigen juristischen Prüfungen übernehmen.
Kannte der Lieferant einen Fehler bei Auslieferung, so kann er seine Haftung für durch diesen Fehler verursachte Schäden vertraglich nicht beschränken. Er kann den Fehler in diesem Fall allenfalls in die vertraglich vereinbarte Spezifikation aufnehmen, sodass der Fehler kein Fehler mehr ist, sondern eine vertraglich vereinbarte (negative) Eigenschaft der Software.
Zu beachten ist, dass der Abnehmer im Streitfall zur Durchsetzung seiner Schadensersatzansprüche nur beweisen muss, dass ein Fehler vorliegt. Um der Haftung zu entkommen, muss der Lieferant nachweisen, dass er den Fehler trotz Anwendung jeder möglichen Sorgfalt nicht hat erkennen können. In der Praxis ist dies oft ein Ding der Unmöglichkeit. Die Vereinbarung von rechtlich wirksamen Haftungsbeschränkungen ist daher unerlässlich. Damit eine solche Haftungsbeschränkung auch rechtswirksam ist, sind allerdings einige juristische Rahmenbedingungen zu erfüllen. In diesem Punkt unterscheidet sich die Gesetzeslage in Deutschland, Österreich und der Schweiz. So darf etwa in Österreich und der Schweiz in vorformulierten Verträgen die Haftung weit mehr beschränkt werden als in Deutschland, wo die Beschränkungsmöglichkeiten in vorformulierten Verträgen sehr gering sind [3].
Beispiel: Der folgende Haftungsfall eines Software-Herstellers wird in [14] beschrieben: Ein bereits im Einsatz befindliches, selbst entwickeltes Programm wird von den Programmierern geringfügig verändert. Dabei passiert ein Stellenfehler in einer Berechnung. Dieser Fehler führt in weiterer Folge zu einem Millionenschaden für den Betreiber der Software. Augenscheinlich wurde die Software-Änderung durch die Programmierer schlecht getestet. Selbst wenn die Programmierer verlangten, dass auch der Betreiber der Software diese vor der Inbetriebnahme testen muss, so ist jedenfalls eine Verletzung der Sorgfaltspflicht anzunehmen und zumindest leichte Fahrlässigkeit anzulasten. Voraussetzung dafür ist, dass eine entsprechende Testspezifikation und ein Testprotokoll vorliegen. Wenn garnicht getestet wurde, etwa weil es sich ja „nur um eine kleine Änderung handelte“, oder wenn die Testprotokolle nicht mehr auffindbar sind, so kann dies als grobe Fahrlässigkeit bewertet werden.