Qualität mit Brief und Siegel Zertifizierung industrieller Systeme gemäß IEC 61508

Wir erleben es leider täglich: Software gehört zu den fehleranfälligsten Produkten unserer digitalen Welt. Das müsste nicht so sein. Denn die Norm IEC 61508 beschreibt, wie man Software nach bestimmten Qualitäts- und Sicherheitsstandards entwickelt. Um den Standard einzuhalten, muss die Entwicklung strengen Vorgaben folgen. Selbst wenn eine Zertifizierung nicht notwendig ist - das Vorgehensmodell eignet sich für jede qualitativ hochwertige Software.

Als Folge der jüngsten Fortschritte im Bereich der Automatisierungstechnik stellt die Software inzwischen mehr als nur eine untergeordnete Komponente elektromechanischer Systeme dar, sie ist von grundlegender Bedeutung für die Funktionssicherheit vieler Produkte. Die Forderung nach Funktionssicherheit der Software ist deshalb in der industriellen Automatisierungstechnik, im Verkehrsbereich, auf dem Gebiet der Kernkraftwerke und in anderen Bereichen von kritischer Bedeutung. Als Basis der Funktionssicherheit hat sich die Norm IEC 61508 eingebürgert, von der sektorspezifische Lösungen abgeleitet werden.

Damit ein Standard effektiv umgesetzt werden kann, ist es entscheidend, diesen Standard zu einem integralen Bestandteil des gesamten Entwicklungszyklus zu machen, der vom Erstellen des Lastenhefts bis zum Test reicht. Dieser Artikel zeigt, wie ein automatisierter Prozess diese Lücke schließen und sowohl den Entwicklern als auch den IEC-61508-Regulierungsbehörden die Gewähr geben kann, dass der Code von der Festlegung der Anforderungen bis zum Test rückverfolgbar ist und als regelkonform verifiziert wurde.

In einer ganzen Reihe von Anwendungen werden elektrische, elektronische und programmierbare elektronische (E/E/PE) sicherheitsrelevante Systeme eingesetzt. Welche Sicherheitsmaßnahmen in den einzelnen Applikationen erforderlich sind, hängt von vielen Faktoren ab. Dank ihres allgemeingültigen Wesens ist die Norm IEC 61508 das ideale Gerüst für die Umsetzung dieser Sicherheitsmaßnahmen.

In den meisten Fällen wird die Sicherheit mit einer Reihe von Systemen erreicht, die sich auf viele unterschiedliche Technologien (z.B. Mechanik, Hydraulik, Pneumatik, Elektrik, Elektronik, programmierbare Elektronik) stützen. Eine Sicherheits-Strategie muss aus diesem Grund nicht nur sämtliche Elemente des Systems (z.B. Sensoren, Steuergeräte und Aktoren) berücksichtigen, sondern auch alle Subsysteme einbeziehen, aus denen sich das sicherheitsrelevante System insgesamt zusammensetzt.

Die zunehmende Abhängigkeit industrieller Systeme von Software führt dazu, dass der Fokus bei der Zertifizierung von Software gemäß IEC 61508 auf IEC 61508 Teil 3 (hier geht es um die Software-Anforderungen) und auf IEC 61508 Teil 7 liegt. Letzterer beschreibt verschiedene Techniken und Maßnahmen zum Erreichen der für die jeweilige Anwendung relevanten Sicherheitsstufe (Safety Integrity Level - SIL).

Sicherheit als integraler Software-Bestandteil

Die Norm IEC 61508 beschreibt einen Software-Sicherheitslebenszyklus, der den systematischen Entwicklungsprozess, die Rückverfolgbarkeit der Anforderungen, die Software-Validierung und Modifikationen einschließt. Wie Bild 1 deutlich macht, unterteilt der Software-Sicherheitslebenszyklus die Software-Entwicklung in definierte Phasen und Aktivitäten. Neben dieser Skizzierung der verschiedenen Phasen definieren die folgenden Abschnitte den Entwicklungsprozess, der für die Konformität zur Norm IEC 61508 erforderlich ist:

  • 7.2 Anforderungsbeschreibung Software-Sicherheit
  • 7.3 Validierungsplan für die Software-Aspekte der Systemsicherheit
  • 7.4 Software-Design und -Entwicklung
  • 7.4.3 Anforderungen an das Design der Software-Architektur
  • 7.4.4 Anforderungen an Tools (einschl. Programmiersprachen)
  • 7.4.5 Anforderungen an das detaillierte Design und die Entwicklung - Design des Software-Systems
  • 7.4.6 Anforderungen an die Code-Implementierung
  • 7.4.7 Anforderungen an das Testen der Software-Module
  • 7.4.8 Anforderungen an das Testen der Software-Integration
  • 7.5 Integration programmierbarer Elektronik (Hard- und Software)
  • 7.6 Prozeduren für Betrieb und Modifikation der Software
  • 7.7 Software-Aspekte der Systemsicherheits-Valiedierung
  • 7.8 Software-Modifikation
  • 7.9 Software-Verifikation

Beginnend mit der Anforderungsbeschreibung, müssen die Entwickler die Anforderungen an die sicherheitsrelevante Software eines jeden elektrischen, elektronischen oder programmierbaren elektronischen sicherheitsrelevanten Systems spezifizieren und den für die einzelnen Sicherheitsfunktionen des Systems vorgegebenen SIL (Safety Integrity Level) erreichen. In der IEC 61508 sind vier SILs spezifiziert, von SIL 1 mit den niedrigsten Sicherheitsanforderungen bis SIL 4 mit den strengsten Sicherheitsanforderungen. Zu jeder Technik oder Maßnahme gehört ein Empfehlungsgrad, der zur Wahl einer Sicherheitsanforderungsstufe verwendet wird. Je höher der Sicherheitslevel, umso dringender ist der Empfehlungsgrad einer Verfahrensweise.

Alles rückverfolgbar

Im Plan zur Validierung der Software-Sicherheit ist im Detail aufgeführt, wie mit dem Design und der Entwicklung der Software, der Integration von Hard- und Software sowie etwaigen erforderlichen Modifikationen die Konformität zum Standard erreicht wird. Grundlegendes Element des Validierungsprozesses für IEC 61508 ist die bidirektionale Rückverfolgbarkeit. Damit ist ein Prozess gemeint, der sämtliche Elemente des Software-Lebenszyklus miteinander verknüpft. Die bidirektionale Rückverfolgbarkeit stellt sicher, dass jede Systemanforderung mit dem zugehörigen Code, den Tests, der Verifikation und der Dokumentation verknüpft ist und dass jede Änderung, die an einem der verknüpften Elemente vorgenommen wird, den Transfer von Informationen nach vorn und nach hinten durch sämtliche Phasen der Entwicklung hindurch anstößt. Spezifikationen sowie sämtliche Pläne für die Software-Validierung, die Software-Modifikation, die Software-Design-Spezifikation und die Software-Verifikation (einschließlich der Datenverifikation) werden aktualisiert, wann immer Informationen hinzugefügt oder entfernt werden.

Der Entwicklungsprozess beginnt, wie in Bild 2 gezeigt, mit der detaillierten Ausarbeitung der Sicherheitsanforderungen. Die Softwaresicherheits-Prozesse bestimmen die Anforderungen an Sicherheitsfunktionen und die Sicherheitsintegrität. Die Sicherheitsfunktions-Anforderungen wiederum beeinflussen die I/O-Sequenzen, die sicherheitskritische Operationen (z.B. Erkennung von Fehlern in Sensoren, Aktoren, programmierbarer Elektronik-Hardware usw.) ausführen.

Die Sicherheitsintegritäts-Anforderungen eines Systems setzen sich aus Dia-gnosen und anderen ausfallsicheren Mechanismen zusammen, die gewährleisten, dass Fehlfunktionen des Systems erkannt werden und das System in einen sicheren Zustand fällt, wenn es unfähig ist, eine Sicherheitsfunktion auszuführen.

Ebenso wie beim Design sicherheitskritischer System-Software wird das Design auch hier von Sicherheitsanforderungen hergeleitet (diese beziehen sich gleichermaßen auf die sicherheitskritischen und die nicht sicherheitskritischen Komponenten), die die erforderlichen Sicherheits- und Sicherheitsintegritäts-Stufen bezeichnen. Wird während des Designs eine Sicherheitsfunktion auf der Anforderungs-Ebene übersehen, so kann dies potentiell die Kritikalität eines jeden entwickelten Software-Moduls beeinträchtigen. Um dies zu vermeiden, verlangt die IEC 61508 nach Rückverfolgbarkeit zwischen den Anforderungen der Software-Architektur und der Software-Design-Spezifikation.

Im Laufe des Entwicklungsprozesses folgt dann die Phase der Software-Implementierung. Die implementierte Software muss die gesamten Sicherheitsfunktionen erfüllen, die in der Software-Architektur- und Software-Design-Spezifikation beschrieben sind (einschließlich der uneingeschränkten Rückverfolgbarkeit).