Warum Codequalität in regulierten Märkten von Bedeutung ist
Software in Fahrzeugen, Flugzeugen, Medizinprodukten und industriellen Steuerungssystemen wird in Umgebungen eingesetzt, in denen ein Fehler unmittelbare physische Folgen hat. Die Aufsichtsbehörden in diesen Branchen begegnen dieser Gegebenheit mit verbindlichen Anforderungen an die Verifikation: ISO 26262 für die Automobilindustrie, DO-178C für die Luft- und Raumfahrt, IEC 62304 für Medizinprodukte und IEC 61508 für industrielle Systeme. Ohne einen dokumentierten Konformitätsnachweis darf das Produkt nicht ausgeliefert werden.
Was in sicherheitskritischen Branchen auf dem Spiel steht
Automobilindustrie
Moderne Fahrzeuge enthalten über 100 Millionen Zeilen Softwarecode, verteilt auf Hunderte elektronischer Steuergeräte (ECUs). Ein Fehler in sicherheitsrelevanter Software, darunter Bremssysteme, Lenkung und Airbag-Auslösung, kann unmittelbare physische Folgen haben. Die Norm ISO 26262 definiert ein risikobasiertes Framework für die funktionale Sicherheit elektrischer und elektronischer (E/E) Systeme in Straßenfahrzeugen und schreibt eine systematische Verifikation auf allen Entwicklungsstufe vor.
Luft- und Raumfahrt
Software für den Einsatz in Luftfahrzeugen muss die in DO-178C festgelegten strengen Anforderungen erfüllen, bevor sie von der Zertifizierungsbehörde freigegeben wird. Die Norm sieht für Software Sicherheitsstufen (Assurance Level) von D (geringfügig) bis A (katastrophale Folgen bei Ausfall) vor, wobei die Anforderungen an die Verifikation mit steigender Stufe immer strenger werden. Für Software der Stufe A ist eine MC/DC-Abdeckung erforderlich.
Medizinische Geräte
Die Norm IEC 62304 regelt den Software-Lebenszyklus für Medizinprodukte und schreibt strukturierte Verifikationsmaßnahmen für alle Softwarekomponenten vor, die die Patientensicherheit beeinträchtigen könnten. Die Folgen eines Softwarefehlers in einem Herzschrittmacher, einer Infusionspumpe oder einem Bildgebungssystem sind unmissverständlich.
Industrielle Automatisierung
Die Norm IEC 61508 ist die grundlegende Norm für die funktionale Sicherheit programmierbarer elektronischer Systeme in industriellen Anwendungen. Sie gilt für Fabrikleitsysteme, die Prozessautomatisierung in chemischen Anlagen und vieles mehr. Zudem dient sie als Basis, von der zahlreiche branchenspezifische Normen abgeleitet sind.
Die Kosten schlechter Codequalität
Abgesehen von den Auswirkungen auf die Sicherheit verursacht schlechte Code-Qualität erhebliche wirtschaftliche Kosten.
- Die Behebung von Fehlern, die während der Systemintegration entdeckt werden, ist 10- bis 100-mal teurer als die Beseitigung von Fehlern, die bereits beim Unit-Testing entdeckt wurden
- Ausfälle im laufenden Betrieb können in regulierten Branchen Rückrufe, behördliche Sanktionen und Rechtsstreitigkeiten nach sich ziehen
- Nicht bestandene Audits oder die Verweigerung von Zertifizierungen verzögern Produkteinführungen und schaden den Kundenbeziehungen
- Technische Schulden, die sich durch Abstriche bei der Qualität angehäuft haben, verlangsamen die zukünftige Entwicklung und erhöhen das Risiko
Was Qualität in der Praxis bedeutet
Für Softwareteams in regulierten Branchen definiert sich Qualität durch die Fähigkeit, anhand dokumentierter und rückverfolgbarer Nachweise darzulegen, dass die Software korrekt entwickelt, gründlich getestet und anhand der Anforderungen verifiziert wurde.
Das bedeutet, über Prozesse und Tools zu verfügen, die Folgendes leisten können:
- Fehler frühzeitig erkennen, bevor sie sich im Entwicklungslebenszyklus ausbreiten
- die Code-Coverage-Messung im von der geltenden Norm geforderten Umfang durchführen und dokumentieren
- Jedes Testergebnis mit einer spezifischen Anforderung verknüpfen
- Auditfähige Berichte generieren, die den Anforderungen der Zertifizierungsstellen entsprechen