So gehen Sie Softwaretests und die Einhaltung gesetzlicher Vorschriften für IEC 61508 . an
Industrielle Softwaresysteme, die Fertigungsroboter, elektrische Aufzüge und sogar Ihre Straßenampeln steuern, sind sehr komplex geworden. Da die Funktionalität dieser Art von Systemen zunimmt, sie vernetzter und intelligenter werden, ist Sicherheit nicht mehr die einzige Herausforderung, die es zu bewältigen gilt. Ebenso wichtig ist der Schutz vor Bedrohungen und Schwachstellen durch Sicherheitskontrollen.
Entwickeln Sie Software für ein programmierbares elektronisches Sicherheitssystem? Die Entwicklung sicherheitskritischer Software ist nicht einfach, aber es gibt einen Weg, die Herausforderungen zu meistern. Automatisierung durch CI/CD moderne Softwareentwicklungspraktiken kann ein Teil davon sein. Erfahren Sie, wie Sie die Bereitstellung von Software, die sicher und zuverlässig sein muss, beschleunigen und Kosten senken können. konform zu IEC 61508.
Key Take Away
das Verständnis der IEC 61508 Standard und zugehörige sichere Codierungsstandards.
Nutzung statischer Analysen, Komponententests und Codeabdeckung für programmierbare elektronische Systeme.
Integration gesetzlicher Sicherheitsanforderungen in den gesamten Softwareentwicklungszyklus (SDLC).
Sicherheit und Qualität: Eine miteinander verflochtene Herausforderung
Bei der Entwicklung von Software für sicherheitskritische Systeme steht die Sicherheit an erster Stelle. Ein Gerät muss im Normalbetrieb und auch bei Störungen sicher sein. Darüber hinaus müssen wir potenziellen Missbrauch und externe Angriffe berücksichtigen. Interessanterweise verbessern Praktiken, die die Sicherheit erhöhen, oft auch die allgemeine Softwarequalität und -zuverlässigkeit. Häufige Programmierfehler wie Überläufe, Speichermissbrauch und fehlerhafte Autorisierung sind die Hauptursachen für Sicherheits- und Qualitätsprobleme.
Verständnis von IEC 61508
IEC 61508 ist ein grundlegender Standard für funktionale Sicherheit, der branchenübergreifend anwendbar ist. Er bietet einen systematischen Ansatz zur Integration von Sicherheitsfunktionen in Designs und stellt sicher, dass Systeme vorhersehbar und sicher ausfallen. Der Standard basiert auf zwei Kernprinzipien:
Befolgen eines Safety Engineering-Lebenszyklusprozesses: Dies beinhaltet die Einhaltung bewährter Verfahren während des gesamten Entwicklungslebenszyklus, von der Anforderungserfassung bis hin zur Wartung und Entsorgung.
Probabilistischer Fehleransatz: Bei diesem Prinzip werden Metriken verwendet, um die Auswirkungen von Geräteausfällen auf die Sicherheit zu messen und zu berücksichtigen. Diese werden häufig durch Sicherheitsintegritätsstufen (SIL) quantifiziert.
Die sieben Teile der IEC 61508
IEC 61508 ist in sieben Teile sowie einen technischen Bericht (Teil 0) gegliedert:
Teil 0: Stellt Konzepte und Herausforderungen der funktionalen Sicherheit vor.
Teil 1: Bietet einen Überblick über den Lebenszyklus der Produktsicherheit, einschließlich der Analyse-, Realisierungs- und Betriebsphasen.
Teile 2 und 3: Detaillierte Anforderungen für die Lebenszyklen der Hardware- und Softwareentwicklung, einschließlich der Bestimmung der Sicherheitsintegritätsstufen (SIL).
Teil 4: Enthält im Standard verwendete Definitionen und Abkürzungen.
Teile 5-7: Bieten Sie Richtlinien und Beispiele für die Entwicklung an, einschließlich Methoden zur Bestimmung des SIL und unterstützender Dokumentation.
Integration von Sicherheit und Schutz in den SDLC
Die Anwendung der IEC 61508 erfordert einen strukturierten Ansatz für den Softwareentwicklungszyklus. Dazu gehören:
Anforderungsphase: Erfassen Sie alle Anforderungen, einschließlich gesetzlicher und kundenbezogener Anforderungen, und führen Sie eine Gefahren- und Risikoanalyse durch. Aus Sicherheitsgründen sollte außerdem eine Bedrohungs- und Risikobewertung durchgeführt werden, die Anforderungen wie sichere Zugriffskontrolle und Datenschutz berücksichtigt.
Realisierungsphase: Dies umfasst die eigentliche Implementierung und Verifizierung des Geräts. Bei Hardware (Teil 2) folgt dies einem V-Modell-Ansatz. Bei Software (Teil 3) liegt der Schwerpunkt auf Anforderungen, Design, Entwicklung, Integration, Verifizierung und Validierung.
Betriebsphase: Diese Phase umfasst die Wartung und Entsorgung des Systems.
Wichtige Techniken und Tools für die Compliance
Um die Anforderungen der IEC 61508 zu erfüllen, werden mehrere Techniken empfohlen, wobei der Grad der Strenge von der SIL-Einstufung abhängt:
Rückverfolgbarkeit: Die bidirektionale Rückverfolgbarkeit zwischen Anforderungen, Design, Code und Testfällen ist unerlässlich. Tools können diesen Prozess automatisieren und so helfen, Lücken zu identifizieren und sicherzustellen, dass alle Anforderungen erfüllt werden.
Codierungsstandards: Übernahme von Kodierungsstandards wie MISRA or AUTOSAR C ++ 14 hilft, häufige Programmierfehler zu vermeiden. Aus Sicherheitsgründen werden Standards wie CERT und UL 2900 empfohlen.
Statische Analyse:Tools zur Durchführung statischer Analysen können potenzielle Probleme wie Überläufe, Speicherlecks und Zeigerfehler frühzeitig im Entwicklungszyklus erkennen. Diese Tools sollten idealerweise für den Einsatz in sicherheitskritischen Anwendungen zertifiziert sein.
Dynamische Analyse und Prüfung: Unit-Tests, Integrationstests und Systemtests sind entscheidend. Testfälle sollten für Regressionstests wiederverwendet werden, um sicherzustellen, dass Änderungen keine neuen Probleme verursachen. Codeabdeckungsmetriken, einschließlich Anweisungs-, Verzweigungs- und Modified Condition/Decision Coverage (MCDC), helfen dabei, die Gründlichkeit der Tests zu bestimmen.
Zertifizierte Werkzeuge: Eine wichtige Voraussetzung ist die Verwendung von Tools, die für sicherheitskritische Anwendungen zertifiziert sind. Dadurch wird sichergestellt, dass die Tools selbst keine Fehler in den Entwicklungsprozess einbringen.
Fazit
Die Entwicklung von Software für sicherheitskritische Systeme nach Normen wie IEC 61508 stellt erhebliche Herausforderungen dar. Mit einem strukturierten Ansatz, der Integration von Sicherheit und Schutz von Anfang an und dem Einsatz geeigneter Tools und Techniken können Unternehmen jedoch erfolgreich zuverlässige, sichere und konforme Software bereitstellen. Automatisierung durch CI/CD-Praktiken kann diesen Prozess weiter optimieren und so Kosten und Markteinführungszeiten reduzieren.