Parasoft-Logo

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

Geometrischer Hintergrund mit einem Hauch von Blau und Grün
Leitfaden zur Erreichung funktionaler Sicherheit in Bahnsoftware: Wie die Anforderungen der EN 50128 erfüllt werden (Whitepaper-Titelbild)

Whitepaper

Leitfaden zur Erzielung funktionaler Sicherheit in Bahnsoftware: So erfüllen Sie die Anforderungen von EN 50128

Neugierig, was der Leitfaden beinhaltet? Beginnen Sie mit der Vorschau unten.

Zum Abschnitt springen

Einführung

Mit der zunehmenden Abhängigkeit von Software in eingebettete SystemeDie Sicherstellung der Qualität wird zunehmend schwieriger. Viele Entwickler können Testprogramme nicht ohne Weiteres in realen Produktionsumgebungen ausführen, da ihnen der Zugriff auf die finale Systemhardware fehlt. Um dieser und anderen Herausforderungen zu begegnen, muss die Codequalität während des gesamten Entwicklungszyklus durch eine Kombination bewährter Techniken zur frühzeitigen Fehlervermeidung und die Automatisierung von Implementierung und Überwachung gewährleistet werden.

Mit zunehmender Softwarekomplexität EisenbahnsystemeDamit einhergehend bestehen Risiken systematischer und zufälliger Ausfälle. Die Norm EN 50128 definiert Anforderungen und Prozesse, um diese Risiken auf ein tolerierbares Maß zu reduzieren. Parasofts C- und C++-Entwicklungstests Die Lösung unterstützt die Anwendung von EN 50128 und deren Nachfolger EN 50716Sie ermöglichen es Teams, qualitativ hochwertigere Embedded-Software zu entwickeln, effizienter zu testen und den Fortschritt in Richtung der Qualitätsziele konsequent zu verfolgen.

Parasoft automatisiert wichtige Qualitätsaktivitäten – darunter statische Analyse, Unit- und Komponententests sowie Codeabdeckung – über den gesamten Entwicklungszyklus hinweg, beginnend auf dem Desktop des Entwicklers, um die Einführung fehleranfälliger Codierungsmuster zu verhindern.

Dieses technische Whitepaper erklärt, wie funktionale Sicherheit in Bahnsoftware durch die Erfüllung der Anforderungen der EN 50128/EN 50716 erreicht werden kann und wie Parasoft C/C++test Teams dabei unterstützt, SIL 0–4 durch automatisierte statische Analyse, dynamische Tests, Abdeckung und umfassende Berichterstattung zu erreichen.

Über EN 50128

EN 50128 gehört zu einer Gruppe verwandter europäischer Normen, die Anforderungen für Bahnanwendungen definieren. Weitere Normen dieser Gruppe sind:

  • EN 50126 „Spezifikation und Nachweis von Zuverlässigkeit, Verfügbarkeit, Wartbarkeit und Sicherheit (RAMS)“
  • EN 50129 „Kommunikations-, Signal- und Verarbeitungssysteme – Sicherheitsbezogene elektronische Systeme für die Signalisierung“

Die Norm EN 50128 mit dem Titel „Kommunikations-, Signal- und Verarbeitungssysteme – Software für Eisenbahnsteuerungs- und -schutzsysteme“ befasst sich speziell mit dem Softwareaspekt von Eisenbahnanwendungen. Die Norm definiert fünf Sicherheitsintegritätsstufen (SIL) für Software. Die niedrigste SIL ist 0, die höchste 4.

Der Softwareintegritätsgrad (SIL) hängt vom potenziellen Risiko eines Softwarefehlers ab. Software mit einem höheren Sicherheitsrisiko im Fehlerfall wird einem höheren SIL zugeordnet. Die erforderlichen Techniken und Maßnahmen sind für jeden SIL in den normativen Tabellen des Anhangs A der EN 50128 definiert.

Beachten Sie, dass EN 50716 Ersetzt sowohl EN 50128 (Signalisierung/Steuerung) als auch EN 50657 (Bordsoftware für Schienenfahrzeuge), indem er sie zu einem einzigen, einheitlichen Standard für Eisenbahnsoftware zusammenführt und eng an EN 50126 (RAMS) und EN 50129 (Sicherheit) angelehnt ist.

Über Parasoft C/C++test

Parasoft C / C ++ Test ist eine integrierte Entwicklungstestlösung zur Automatisierung einer Vielzahl von Best Practices, die nachweislich die Produktivität und Softwarequalität des Softwareentwicklungsteams verbessern, darunter:

  • Statische Analyse. Die Einhaltung von Codierungsstandards überwachen und Fehler frühzeitig im Softwareentwicklungszyklus (SDLC) verhindern.
  • Unit Testing. Erstellen und Ausführen von Tests auf dem Host oder Zielsystem.
  • Berichterstattung und Analyse. Identifizieren Sie Lücken in der Test- und Codeabdeckung.
  • Rückverfolgbarkeit von Anforderungen. Verknüpfe Anforderungen mit Tests und Code.
  • Laufzeitfehlererkennung. Erkennen Sie Speicherzugriffsfehler, Speicherlecks, Datenbeschädigungen und mehr.

Dies bietet Teams eine praktische Möglichkeit, Fehler zu vermeiden, aufzudecken und zu beheben, um sicherzustellen, dass ihr C- und C++-Code wie erwartet funktioniert. Um eine schnelle Behebung zu fördern, wird jedes erkannte Problem anhand konfigurierbarer Schweregrade priorisiert, automatisch dem Entwickler zugewiesen, der den zugehörigen Code geschrieben hat, und in dessen IDE mit direkten Links zum problematischen Code und einer Beschreibung der Fehlerbehebung bereitgestellt.

Testdurchführung und umfassende Berichtserstellung

Abbildung von Eisenbahnschienen

Test auf Host, Simulator und Zielsystem

C/C++test automatisiert den gesamten Testablauf, von der Testfallerstellung über die Cross-Kompilierung und Bereitstellung bis hin zur Ausführung. Anschließend werden die Ergebnisse, einschließlich der Abdeckungsmetriken, in die grafische Benutzeroberfläche (GUI) geladen. Tests können interaktiv über die GUI oder über die Kommandozeile für die automatisierte Testausführung sowie für Batch-Regressionstests gestartet werden.

Im interaktiven Modus können Benutzer Tests einzeln oder in ausgewählten Gruppen ausführen, um das Debuggen oder die Validierung zu vereinfachen. Bei der Stapelverarbeitung lassen sich Tests entweder anhand des zugehörigen Benutzercodes, ihres Namens oder ihres Speicherorts auf der Festplatte gruppieren.

Konfigurierbare detaillierte Berichtsfunktion

Berichte im HTML-, PDF- und benutzerdefinierten Format lassen sich über die grafische Benutzeroberfläche oder eine Optionsdatei konfigurieren. Die Standardberichte enthalten eine Zusammenfassung der Codeanalyse und der Testergebnisse (bestanden/nicht bestanden), eine Liste der analysierten Dateien sowie eine Übersicht der Codeabdeckung.

Die Berichte lassen sich individuell anpassen und enthalten eine Liste aktiver statischer Analysen, erweiterte Testausgaben mit dem Status „bestanden/nicht bestanden“ einzelner Tests, Parameter von Trenddiagrammen für wichtige Kennzahlen sowie vollständige Code-Listings mit farblicher Kennzeichnung aller Codeabdeckungsergebnisse. Generierte Berichte können basierend auf verschiedenen rollenbasierten Filtern automatisch per E-Mail versendet werden. Zusätzlich zur direkten Bereitstellung der Daten für die Entwickler, die für den als fehlerhaft markierten Code verantwortlich sind, sendet C/C++test zusammenfassende Berichte an Manager und Teamleiter.

Berichte & Analysen

Codeanalyse und Testergebnisse, Abdeckungsanalysen und andere C/C++-Testdaten können an Parasoft DTP gesendet werden. Dort werden sie mit Daten von Drittanbieter-Analysetools, Versionskontrollsystemen, Fehlerverfolgungssystemen und anderen Infrastrukturkomponenten korreliert und anschließend verarbeitet. Das Ergebnis sind handlungsrelevante, intelligente Analysen, die Einblick in die mit der zu testenden Anwendung verbundenen Risiken sowie die erforderliche Rückverfolgbarkeit bieten. Nachweis der Einhaltung der Norm EN 50128.

Die Fehlerprüfung und -behebung werden durch automatisierte Aufgabenzuweisung und -verteilung erleichtert. Jeder erkannte Fehler wird priorisiert, dem Entwickler zugewiesen, der den zugehörigen Code geschrieben hat, und mit allen Daten und Querverweisen zum Code an dessen Entwicklungsumgebung (IDE) verteilt. Um Managern die Bewertung und Dokumentation von Trends zu erleichtern, gewährleistet ein zentrales Berichtswesen Echtzeit-Einblicke in den Qualitätsstatus und die Prozesse. Diese Daten helfen auch dabei, festzustellen, ob zusätzliche Maßnahmen erforderlich sind, um interne Ziele zu erreichen oder die Einhaltung gesetzlicher Bestimmungen nachzuweisen.

Erfüllung der EN 50128-Anforderungen mit Parasoft

Die Norm EN 50128 definiert Anforderungen an Werkzeuge zur Entwicklung und Verifizierung von Bahnsoftware. Parasoft C/C++test gehört zur Werkzeugklasse T2. Diese Klasse definiert Werkzeuge, die „das Testen oder Verifizieren des Entwurfs oder des ausführbaren Codes unterstützen, wobei Fehler im Werkzeug zwar keine Fehler aufdecken, aber auch keine direkten Fehler in der ausführbaren Software verursachen können.“ Wie für Werkzeuge der Klasse T2 erforderlich, bietet C/C++test eine Bedienungsanleitung, die das Verhalten des Werkzeugs klar beschreibt und Anweisungen zu seiner Verwendung gibt.

Die folgenden Tabellen enthalten die in Anhang A der Norm EN 50128 empfohlenen und/oder vorgeschriebenen Techniken und Maßnahmen, die mit Parasoft C/C++test ganz oder teilweise erfüllt werden können. Für jede Technik und Maßnahme bietet die Tabelle eine kurze Beschreibung, wie diese mit den Funktionen von Parasoft C/C++test ganz oder teilweise erfüllt werden kann. Die folgenden Markierungen zeigen an, dass dies für die jeweilige SIL gilt:

  • M – Die richtige Technik ist unerlässlich.
  • R – Die Technik wird empfohlen
  • HR Die Technik wird dringend empfohlen.
  • - – Keine Empfehlung

EN 50128 Konformitätsmatrix

Die folgenden Tabellen zeigen detailliert, wie die Testfunktionalität von Parasoft C/C++ den Anforderungen der EN 50128 in verschiedenen Softwareentwicklungs- und Verifizierungskategorien entspricht. Jede Tabelle enthält die entsprechenden Empfehlungen zum Sicherheitsintegritätslevel (SIL).

Tabelle A.4 – Software-Design und -Implementierung

C/C++-Testfunktionalität SIL 0 SIL 1 SIL 2 SIL 3 SIL 4
Modularer Ansatz HR M M M M
Verwenden Sie die Codierungsstandards und Code-Metrik-Module, um zu überprüfen, ob der Code eine ordnungsgemäße Modularität aufweist, indem Sie die Kopplung zwischen Objekten, die Verwendung globaler Variablen, die Anzahl der Funktionsparameter, die Code-Dokumentation und mehr überprüfen.
Komponenten HR HR HR HR HR
Verwenden Sie das Modul für Codierungsstandards, um die Robustheit und Wartbarkeit der Softwarekomponenten zu überprüfen. Einzelheiten finden Sie in Tabelle A.20.
Design- und Codierungsstandards HR HR HR M M
Verwenden Sie eine der vordefinierten Testkonfigurationen für Codierungsstandards (MISRA C, MISRA C++, JSF++ usw.) oder erstellen Sie eine benutzerdefinierte Testkonfiguration anhand geeigneter integrierter und benutzerdefinierter Codierungsstandards – einschließlich Best Practices für C/C++, Vermeidung von gefährlichem Code, Einhaltung von Namens- und Formatierungskonventionen für bessere Lesbarkeit und vielem mehr. Details finden Sie in Tabelle A.12.
Strukturierte Programmierung R HR HR HR HR
Verwenden Sie die Codierungsstandards und Code-Metrik-Module, um die strukturelle Komplexität der Softwarekomponenten zu überprüfen (z. B. indem Sie die Werte für die zyklomatische und die essentielle Komplexitätsmetrik für Funktionen auf einem angemessenen Niveau halten).
Sprachteilmenge - - - HR HR
Verwenden Sie das Modul für Codierungsstandards mit einer anpassbaren Konfiguration von Codierungsstandardregeln, um zu überprüfen, ob der Code die gewünschte C/C++-Sprachteilmenge anwendet – verwenden Sie eine der vordefinierten Konfigurationen (z. B. MISRA C/C++, CERT C/C++, JSF++, Ellemtel Coding Standards und mehr) oder erstellen Sie eine benutzerdefinierte C/C++-Teilmenge.
Objekt orientierte Programmierung R R R R R

Tabelle A.5 – Verifizierung und Prüfung

C/C++-Testfunktionalität SIL 0 SIL 1 SIL 2 SIL 3 SIL 4
Statische Analyse - HR HR HR HR
Führen Sie eine statische Analyse mithilfe eines anpassbaren Satzes von Codierungsstandards sowie Kontrollfluss- und Datenflussanalyseregeln durch. Details finden Sie in Tabelle A.19.
Dynamische Analyse und Tests - HR HR HR HR
Führen Sie Unit-Tests (auf verschiedenen Ebenen: von der Dateiebene bis zur Projektebene) und Anwendungsüberwachung durch – jeweils mit Codeabdeckungsanalyse. Details finden Sie in Tabelle A.13.
Metrik - R R R R
Mithilfe von Codemetriken und Codierungsstandards-Modulen können Sie eine breite Palette von Codemetriken berechnen, darunter Komplexitätsmetriken, Kopplung zwischen Objekten, Vererbungstiefe usw.
Rückverfolgbarkeit R HR HR M M
Verknüpfen Sie Unit-Tests mit Anforderungen, Entwicklungsaufgaben oder Fehlern, indem Sie die entsprechenden Informationen als Metadaten in Codekommentare einfügen.
Testabdeckung für Code R HR HR HR HR
Verwenden Sie das Coverage-Modul, um die Codeabdeckung für die ausgeführten Unit-Tests und die durch Überwachung der laufenden Anwendung ausgeführten Funktionstests zu ermitteln. Details finden Sie in Tabelle A.21.
Funktions-/Black-Box-Test HR HR HR M M
Führen Sie die vorbereiteten Unit-Tests aus, um die Funktionalität des entwickelten Codes zu überprüfen. Einzelheiten finden Sie in Tabelle A.14.
Schnittstellentests HR HR HR HR HR
Führen Sie die automatisch generierten Unit-Tests mit einer breiten Palette von Eingabewerten für die getesteten Funktionen aus (Grenzwerte, charakteristische Parameterwerte, benutzerdefinierte Werte für bestimmte Typen usw.). Verwenden Sie externe Datenquellen, um einen einzelnen Unit-Test mit einer Reihe von Eingabekombinationen zu definieren.

Hinweis: Zusätzliche Konformitätstabellen (A.6, A.7, A.8, A.12, A.13, A.14, A.19, A.20, A.21, A.22, A.23) folgen derselben Struktur und ordnen C/C++-Testfunktionen den SIL-Anforderungen in den Kategorien Integration, Softwaretests insgesamt, Softwareanalysetechniken, Codierungsstandards, dynamische Analyse und Tests, Funktions-/Black-Box-Tests, statische Analyse, Komponenten, Testabdeckung für Code, objektorientierte Softwarearchitektur und objektorientiertes Detaildesign zu. Jede Tabelle enthält detaillierte Beschreibungen, wie spezifische Anforderungen der EN 50128 mithilfe von Parasoft-Tools erfüllt werden können.

Zusammenfassung

Parasoft C/C++test unterstützt Softwareentwicklungsteams im Eisenbahnwesen dabei, die Anforderungen des Standard EN 50128 an den Softwareentwicklungs- und Verifizierungsprozess ganz oder teilweise zu erfüllen. und deren Nachfolger EN 50716Teams gewinnen wichtige Erkenntnisse, wenn DTP die Ergebnisse zusammenführt von automatisierte Tests und Codeanalyse in C/C++test. Die intelligente Analyse und die kontinuierliche Überwachung der Tests reduzieren den Aufwand für die Softwareverifizierung erheblich.

Entwicklerteam

Bereit, tiefer einzutauchen?

Vollständiges Whitepaper anfordern