Qualitäts-Check für Safety-Software

Die Steuerung sicherheitsrelevanter Funktionen von Maschinen und Anlagen erfolgt zunehmend per Software. Doch wie „sicher“ ist diese Software? Mit den entsprechenden Werkzeugen lässt sich deren Qualität beziehungsweise Robustheit anhand definierter Kriterien ermitteln.

Die Steuerung sicherheitsrelevanter Funktionen von Maschinen und Anlagen erfolgt zunehmend per Software. Doch wie „sicher“ ist diese Software? Mit den entsprechenden Werkzeugen lässt sich deren Qualität beziehungsweise Robustheit anhand definierter Kriterien ermitteln.

Seit Beginn der 90er-Jahre dringen rechnergesteuerte Systeme verstärkt in die Sicherheitstechnik ein. Handelte es sich dabei zunächst um maßgeschneiderte Systeme mit einem Hardware-Kanal, so kommen spätestens seit Einführung der sicheren Speicherprogrammierbaren Steuerung mehr und mehr standardisierte Hardware- Plattformen zum Einsatz, auf denen die Sicherheitsfunktionen im Wesentlichen in Software realisiert sind. Für zentrale sicherheitsrelevante Funktionen existieren heute fertige Funktionsbausteine, die aber richtig parametriert und sinnvoll eingesetzt werden müssen.

Die Disziplin des Software-Engineering hat in den letzten 20 Jahren zahlreiche Maßnahmen und Methoden entwickelt, die Qualität von Software systematisch zu untersuchen und zu verbessern. Grundsätzlich lassen sich dabei analytische und testende Verfahren unterscheiden. Zu den analytischen Verfahren gehören neben der Fagan-Inspektion (informale, manuelle Prüfung und Bewertung eines Programms, um Unvollständigkeiten und Inkonsistenzen aufzudecken, bei der der Prüfer aktiv und der Autor reaktiv ist) und dem Walk-Through (Prüfung und Bewertung durch gedankliches Ausführen des Programms Steuerungsebene mit aktivem Autor und reaktivem Prüfer) die Animation und die statische Analyse. Die statische Analyse ist unter Zuhilfenahme von so genannten Software-Metriken (Maßzahlen) für die Qualität der Software rechnerunterstützt durchführbar. Sie hilft, Schwachstellen im Software-Quellcode frühzeitig zu erkennen beziehungsweise komplexe Algorithmen zu identifizieren, die dann durch testende Verfahren in ihrem Echtzeit-Verhalten detailliert untersucht werden können. Ein Beispiel hierfür sind White-Box-Tests, bei denen die Testdaten aus der Programmstruktur abgeleitet werden, mit dem Ziel, möglichst viele Programmteile zu durchlaufen.

Eine schlecht kommentierte Software, die zudem ein umfangreiches Vokabular benutzt und komplexe Rechenoperationen einsetzt, ist erfahrungsgemäß sehr fehleranfällig und kaum zu warten; insbesondere dann, wenn sie unübersichtlich strukturiert ist. Damit sind bereits einige Kriterien angesprochen, die bei einem Qualitäts-Check von Software zu berücksichtigen sind.

Obwohl der Trend in Richtung grafische Programmierung geht, gibt es immer noch zahlreiche und zum Teil sehr umfangreiche SPS-Programme, die in Anweisungsliste geschrieben sind. Im Rahmen eines Forschungsvorhabens ist daher im Fachbereich Informatik der Fachhochschule Bonn-Rhein-Sieg seit einigen Jahren das Thema Softwarequalitätssicherung durch Einsatz von Metriken und Qualitätskriterien für sehr hardwarenahe Sprachen wie Assembler oder AWL, aber auch für Hochsprachen wie C oder C++ und Java ein Thema. Dabei hat sich früh gezeigt, dass kommerziell erhältliche Tools auf die Besonderheiten der Sicherheitstechnik praktisch keine Rücksicht nehmen.

In verschiedenen Abschlussarbeiten an der Fachhochschule wurden deshalb nicht nur die altbekannten linguistischen Metriken von Halstead oder strukturellen Metriken von McCabe angepasst und erweitert, sondern auch neue Metriken insbesondere für Speicherprogrammierbare Software entwickelt. Diese stützten sich auf vier zentrale Qualitätskriterien: Selbstbeschreibung, Testbarkeit, Einfachheit und Lesbarkeit. Aufsetzend auf diesen Kriterien ist schließlich im Rahmen einer gemeinsamen Entwicklung der Fachhochschule Bonn-Rhein-Sieg und dem BGIA ein Werkzeug entstanden, mit dem sich die Qualität eines sicherheitsrelevanten Quellcodes „messen“ lässt. Im Detail funktioniert dies wie folgt: