# EN 50128

Die EN 50128 war eine Europäische Norm für sicherheitsrelevante Software der Eisenbahn, sowohl strecken- als auch zugseitig. Zusammen mit der EN 50129 für die Hardware und den Zulassungsprozessen ist die EN 50128 eine Spezialisierung der EN 61508. Die EN 50128 ist eine Prozessnorm. Sie stellt dar, welche Verfahren, Prinzipien und Maßnahmen anzuwenden sind, damit die Software als sicher gilt. Die Norm wurde im September 2024 zurückgezogen und durch die EN 50716:2024-09 ersetzt.
Die erste Fassung der EN 50128 wurde im Jahr 2001 veröffentlicht und nach einer dreijährigen Übergangsfrist im April 2014 zurückgezogen. Die nächste Fassung wurde vom VDE in Deutsch erstellt und im März 2012 von CENELEC in Kraft gesetzt. Der volle Name lautet: DIN EN 50128; VDE 0831-128:2012–03: Bahnanwendungen – Telekommunikationstechnik, Signaltechnik und Datenverarbeitungssysteme – Software für Eisenbahnsteuerungs- und Überwachungssysteme; Deutsche Fassung EN 50128:2011. Im September 2014 wurde eine Berichtigung herausgebracht und im Juli 2016 ein Beiblatt, das zu Themen SIL 0, Tools, Rollen/Unabhängigkeiten, Dokumente, Methoden und Prozessen Hilfestellung gibt.
Im April 2014 wurde die Gültigkeit dieser Version für Bahnfahrzeuge auf Ende April 2017 festgelegt. Das Eisenbahnbundesamt verlängerte die Übergangsfrist bis zur Ratifizierung der Nachfolgenorm EN 50657, die im August 2017 erschien und auf Bahnfahrzeuge spezialisiert ist. Darin wurden Bestimmungen gestrichen, die auf die streckenseitige Ausrüstung gemünzt und auf Fahrzeugausrüstung nicht sinnvoll anwendbar waren. Zuständig ist das DKE/UK 351.1 „Fahrzeuge“.
Für Bahn-Signalanlagen erschien im September 2019 die EN 50128/A1 und im Dezember 2020 die EN 50128/A2. Zuständig ist das DKE/UK 351.3 „Bahn-Signalanlagen“.
Im November 2023 wurde die Nachfolgenorm EN 50716 veröffentlicht, die wieder für Fahrzeuge und Signalanlagen gilt, besser mit der RAMS-Norm EN 50126 harmoniert, bezüglich der Rollen und Aufgaben verständlicher ist, weniger enge Vorgaben zu Programmiersprachen macht und Richtlinien gibt zur Verwendung von AI und maschinellem Lernen.
In Österreich wurde die Norm als OEVE/OENORM EN 50128 und in der Schweiz als SN EN 50128 veröffentlicht.

## Prinzipien der Norm

Folgende Prinzipien sind unter anderem anzuwenden:
* Top-Down-Entwurfsverfahren
* Modularität
* Verifikation jeder Phase des Entwicklungslebenszyklus
* Verifizierte SW-Komponenten und SW-Komponenten-Bibliotheken
* Klare Dokumentation und Rückverfolgbarkeit
* Auditierbare Dokumente
* Validierung
* Begutachtung
* Konfigurationsmanagement und Änderungsmanagement
* Geeignete Betrachtung von Fragen der Organisation und der Kompetenz des Personals

## Inhalte
### Software-Entwicklungsprozess

Der Entwicklungsprozess beginnt mit einer Sicherheitseinstufung der Funktion, die der EN 50126-2 entnommen ist. Die Norm unterscheidet fünf Sicherheits-Integritätslevel, „Basisintegrität“ und SIL 1 bis SIL 4.
Die EN 50128 schreibt das Erstellen einer Software-Anforderungsspezifikation vor. Das Dokument muss u. a. vollständig, eindeutig und testbar sein. Die Software-Anforderungsspezifikation ist schrittweise zur Software-Architektur, dann zum Software-Entwurf und schließlich zum Software-Modulentwurf zu verfeinern. Die Codierung schließt sich an. Jeder Schritt muss dokumentiert überprüft werden (Verifikation).
Der fertige Code muss schrittweise getestet werden. Zuerst werden die Software-Module einzeln getestet, danach das Zusammenwirken der einzelnen Software-Module (Software-Integrationstest), anschließend das Zusammenwirken von Software und Hardware (Software-Hardware-Integrationstest). In einer abschließenden Validierung muss die Software auf der Zielhardware gegen die Software-Anforderungsspezifikation geprüft werden. Die Software muss im Falle von SIL ≥ 1 durch einen von einer europäischen Sicherheitsbehörde zertifizierten Gutachter begutachtet werden.
Einer der in der EN 50128 beschriebenen Entwicklungsprozesse wird auch als V-Modell bezeichnet. Er besteht wie der Buchstabe „V“ aus einem absteigenden Ast (Verfeinern der Spezifikation bis zur Codierung) und einem aufsteigenden Ast, der aus dem Zusammensetzen, Testen und Validieren der Software besteht.

### Prozessübergreifende Anforderungen

Die EN 50128 enthält neben den Anforderungen an den Software-Entwicklungsprozess noch Vorgaben zur Qualifikation des Personals, zur Dokumentation, zum Qualitätsmanagement und zum Vorgehen bei Änderungen an der ausgelieferten Software (Software-Wartung, Kapitel 9.2 der EN 50128).

### Techniken und Maßnahmen

Die EN 50128 empfiehlt oder verlangt: „Eine angemessene Auswahl von Werkzeugen, einschließlich Entwurfsmethoden, Sprachen und Compilern muss für die geforderte Software-Sicherheitsanforderungsstufe über den gesamten Lebenszyklus der Software ausgewählt werden.“ Der Umfang, die Verbindlichkeit und die Qualität dieser Techniken und Maßnahmen nehmen mit steigender SIL zu.
Für Basisintegrität zum Beispiel empfiehlt die Norm Funktionstests. Für SIL 1 und 2 werden zusätzliche, weitere Testtechniken wie z. B. Leistungstests empfohlen, für SIL 3 und 4 unter anderem die Verwendung einer Programmiersprache mit starker Typisierung.

## Geltungsbereich

Die EN 50128 gilt für jegliche sicherheitsrelevante Software der Eisenbahn. In Deutschland hat das Eisenbahn-Bundesamt (EBA) mit seiner Verwaltungsvorschrift für die Abnahme von Eisenbahnfahrzeugen gemäß § 32 Abs. 1 EBO im Zuständigkeitsbereich des Eisenbahn-Bundesamts (VwV Abnahme § 32) die Anwendung der EN 50128 ausdrücklich für sicherheitsrelevante Software an Bord der Eisenbahn-Fahrzeuge verbindlich gemacht (siehe Anhang 1, Nr. 13 der VwV Abnahme § 32). Das EBA hat in Zusammenarbeit mit dem Verband der Bahnindustrie in Deutschland (VDB) und der Deutschen Bahn die Anforderungen der EN 50128 leicht modifiziert, sofern es um die Abnahme von Fahrzeug-Software geht:
* Es wird nur zwischen nicht sicherheitsrelevanter Software (SIL = 0) und sicherheitsrelevanter Software (SIL > 0) unterschieden.
* Bei Änderungen an ausgelieferter Software ist nicht nur Kapitel 16 der EN 50128, sondern deren gesamter Forderungskanon einzuhalten.