Was macht Software sicher? Was man von der Luftfahrt für Bildverarbeitungssysteme lernen kann Dr. Thomas Münsterer, Airbus Defence and Space, Friedrichshafen Die Softwareentwicklung für Anwendungen in Luftfahrzeugen unterliegt seit vielen Jahren strengen Entwicklungsstandards, die die Sicherheit und Zuverlässigkeit von Software in Flugzeugen und Hubschraubern sicherstellen sollen. Der aktuell gültige Entwicklungsstandard für die Zulassung von Software in Luftfahrzeugen ist die RTCA/DO-178C. Diese definiert je nach Auswirkung von auftretenden Fehlern unterschiedliche Sicherheitsklassen, sogenannte Design Assurance Level (DAL), die anzuwenden und für eine Luftfahrtzulassung zu erfüllen sind. . Beispiele für unterschiedlich sicherheitskritische Software sind dabei aktive Fluglageregelungen und Autopilotenfunktionen und andererseits Pilotenassistenzsysteme. Während dieser rigide Prozess für die Luftfahrt fraglos anzuwenden ist, stellt sich die Frage, was von der Erfahrungen der Luftfahrt effektiv auch in anderen Bereichen angewandt werden kann, in denen komplexe Algorithmen in Software realisiert werden. Das Verfahren in der Luftfahrt erkennt klar eine Analyse der möglichen Sicherheitsrisiken der jeweiligen Softwareanwendung. Diese Analyse betrachtet neben der detaillierten Anwendung auch mögliche Fehlerbäume. Sicherheit wird dabei immer durch das schwächste Glied in der Prozesskette bestimmt. Es macht wenig Sinn die in Software umgesetzten Algorithmen extrem sicher zu machen, wenn z.B. die Hardware oder das Betriebssystem sicherheitskritische Schwächen haben. Ist eine bestimmte notwendige Sicherheitsklasse festgelegt beginnt der eigentliche Entwicklungsprozess. Dabei ist vor allem der Bereich der lückenlosen Dokumentation der Algorithmen und der SoftwareEntwicklung zu nennen. Sicherheitskritische aber auch hoch zuverlässige Software muss bestimmte, wohl definierte Anforderungen, sogenannte Requirements erfüllen. Diese müssen vor dem Design und der Realisierung der Software aufgestellt und dokumentiert werden. Gegen diese Requirements wird die realisierte Software dann abgenommen. Das heißt, dass die korrekte Funktion jedes Requirements durch einen Prüffall nachgewiesen werden muss. Diese Abnahme der SW geschieht auf allen Ebenen der SW und selbstverständlich auf der operationellen HW. In der Luftfahrt haben sich aber auch bestimmte andere Praktiken bewährt, z.B. die Trennung der unterschiedlichen Ebenen der Software, wie z.B. Betriebssystem, Board Support Package, Low Level Softaware, Applikationssoftware usw. Dies soll zum Beispiel sicherstellen, dass nur wohl definierte und getestete Hardwarezugriffe und Hardwarefunktionen genutzt werden. Ein anderes Prinzip ist die fachliche Trennung zwischen Algorithmenentwicklung und Softwareumsetzung. Algorithmen werden zunächst in eigenen Entwicklungs- und Testumgebungen entwickelt und lückenlos dokumentiert. Diese Dokumentation dient wiederum als Basis für die Umsetzung in die eigentliche Software. Ein Nachweis hoher Software Sicherheit, d.h. Zuverlässigkeit kann in Einzelfällen auch über den Nachweis der Fehlerfreiheit über eine bestimmte Anwendungszeit in einer Vielzeit von Systemen stattfinden. Dies setzt allerdings eine lückenlose Dokumentation der Anwendungszeiten und eine rigides Fehlermanagement voraus. Auch die Anwendung von Design und Coding-Regeln hat sich bewährt. Zum Beispiel ist die Nutzung von dynamischer Speicherallokierung für Luftfahrtanwendungen grundsätzlich untersagt. Ebenfalls vermieden werden sollte das Vorhandensein von ungenutzten Codefragmenten. Diese und auch die Abdeckung von allen Codeteilen lässt sich mit Toolunterstützung verifizieren. © Dr. Thomas Münsterer, Airbus Defence and Space, Friedrichshafen Kurzfassung für 56. Heidelberger Bildverarbeitungsforum am 07.10.2014
© Copyright 2025 ExpyDoc