EN 50128 : Répondre aux exigences de la norme de Sûreté de Fonctionnement Logiciel Ferroviaire
La norme EN 50128 traite de la sûreté de fonctionnement des logiciels de commande et de protection ferroviaire pour les Systèmes de signalisation, de télécommunication et de traitement.
Assurer la conformité d’un projet à l’EN 50128, c’est mettre en place, dès son démarrage, une méthodologie délimitée et rigoureuse dont l’objectif est la diminution des risques à un niveau acceptable.
Assurer la conformité d’un projet à l’EN 50128, c’est mettre en place, dès son démarrage, une méthodologie délimitée et rigoureuse dont l’objectif est la diminution des risques à un niveau acceptable.
EN 50128 : Généralités de la norme
Après une première version en 2001, l’EN 50128 a été mise à jour en 2011. Celle-ci se compose de 9 parties :
L’EN 50128 est associée aux normes ferroviaires EN 50126 (Spécification et démonstration de la fiabilité, de la disponibilité, de la maintenabilité et de la sécurité) et EN 50129 (Système de Signalisation, de télécommunication et traitements – Communication de sécurité sur les systèmes de transmission), définissant les niveaux de SIL.
De plus, dans sa version 2011, l’EN 50128 définit comme un préalable quel que soit le niveau de SIL, la conformité à la norme d’Assurance Qualité ISO 9001:2008.
4 – Objectifs, conformité et niveaux d'intégrité de sécurité du logiciel
5 – Organisation et gestion du développement logiciel
6 – Assurance du logiciel
7 – Développement de logiciel générique
8 – Développement de données d'application ou d'algorithmes d'application
9 – Déploiement et maintenance du logiciel
5 – Organisation et gestion du développement logiciel
6 – Assurance du logiciel
7 – Développement de logiciel générique
8 – Développement de données d'application ou d'algorithmes d'application
9 – Déploiement et maintenance du logiciel
L’EN 50128 est associée aux normes ferroviaires EN 50126 (Spécification et démonstration de la fiabilité, de la disponibilité, de la maintenabilité et de la sécurité) et EN 50129 (Système de Signalisation, de télécommunication et traitements – Communication de sécurité sur les systèmes de transmission), définissant les niveaux de SIL.
De plus, dans sa version 2011, l’EN 50128 définit comme un préalable quel que soit le niveau de SIL, la conformité à la norme d’Assurance Qualité ISO 9001:2008.
Niveaux de SIL
A l’instar de l’IEC 61508, la norme EN 50128 utilise les niveaux SIL (« System Integrity Level ») de criticité des systèmes, mais en ajoute un cinquième, le niveau SIL 0. Ils sont donc numérotés de 0 (le moins critique) à 4 (le plus critique). Plus la criticité est élevée, plus les tâches et vérifications à effectuer seront nombreuses.
Il est à noter qu’au niveau logiciel, les niveaux SIL 1 et SIL2 sont strictement identiques, tout comme les niveaux SIL 3 et SIL 4.
Il est à noter qu’au niveau logiciel, les niveaux SIL 1 et SIL2 sont strictement identiques, tout comme les niveaux SIL 3 et SIL 4.
Au sein de l’EN 50129, le niveau de SIL se définit de manière analogue à l’IEC 61508: suivant la criticité d’une défaillance pour les utilisateurs ou l’environnement du système, et un taux de diminution de défaillance souhaité. Cependant, l’EN 50128 les définit, pour le logiciel, sans référence aux taux de défaillance.
Utilisation d’outils logiciels
Dans le cadre de l’utilisation d’outils logiciels pour une ou plusieurs tâches de développement ou vérification, l’EN 50128:2011 définit les trois mêmes classes d’outils que l’IEC 61508, à savoir:
De plus, l’un des fondements de l’EN 50128 est que lorsqu’un outil remplace une opération manuelle, les preuves de l’intégrité des résultats de l’outil devraient être apportées selon le même processus que celui de l’opération manuelle, ou des méthodes alternatives montrant que l’intégrité du logiciel n’est pas diminuée par l’utilisation de l’outil en lieu et place d’une opération manuelle. La section 1.4 indique d’ailleurs que la norme peut aussi être appliquée au développement d’outils.
La suite d’outils LDRA (analyse statique et dynamique, tests unitaires et d’intégration) dispose d’un pack de qualification EN 50128 jusqu’à SIL 4 (LDRA TBrun).
De plus, les outils LDRA (TBvision Static) et l’outil d’analyse statique avancée GrammaTech CodeSonar ont obtenu une certification EN 50128 (outils T2) permettant leur utilisation jusqu’à SIL 4.
- T1 : Ne génère aucune sortie susceptible de contribuer, directement ou indirectement, au code exécutable
- T2 : Ne peuvent pas directement créer des erreurs dans le code exécutable, mais peuvent empêcher de détecter des défauts (outils de tests)
- T3 : Génèrent des sorties susceptibles de contribuer, directement ou indirectement, au code exécutable
De plus, l’un des fondements de l’EN 50128 est que lorsqu’un outil remplace une opération manuelle, les preuves de l’intégrité des résultats de l’outil devraient être apportées selon le même processus que celui de l’opération manuelle, ou des méthodes alternatives montrant que l’intégrité du logiciel n’est pas diminuée par l’utilisation de l’outil en lieu et place d’une opération manuelle. La section 1.4 indique d’ailleurs que la norme peut aussi être appliquée au développement d’outils.
La suite d’outils LDRA (analyse statique et dynamique, tests unitaires et d’intégration) dispose d’un pack de qualification EN 50128 jusqu’à SIL 4 (LDRA TBrun).
De plus, les outils LDRA (TBvision Static) et l’outil d’analyse statique avancée GrammaTech CodeSonar ont obtenu une certification EN 50128 (outils T2) permettant leur utilisation jusqu’à SIL 4.
EN 50128 : Comment automatiser la réponse aux exigences ?
L’EN 50128 définit 46 documents à élaborer (hors SIL 0), et implique la mise en place d’un Plan d’Assurance Qualité Logiciel, contenant a minima les éléments suivants :
- Gestion de la configuration et des versions
- Suivi de la traçabilité des exigences (fonctionnelles, méthodologiques, normatives)
- Mise en place et vérification de règles de codage et de métriques de qualité de code
- Analyse statique de code, notamment pour la détection d’erreurs au plus au plus tôt dans le cycle de développement et la mise en place de programmation défensive
- Tests unitaires, d’intégration et système liés aux exigences
- Analyse dynamique de code, mesure de la couverture structurelle
EN 50128 : Exigences
L’EN 50128 exige la mise en place d’un cycle de vie logiciel quel que soit le niveau de SIL, composé de plusieurs étapes contenant chacune plusieurs exigences méthodologiques, ainsi que des contraintes d’indépendance entre les différentes parties prenantes du projet (chef de projet, équipe de validation, testeurs, évaluateurs, …) :
En addition, l’annexe A liste plus de 150 « mesures et techniques » pouvant être effectuées suivant l’étape du cycle de vie ci-dessus, ainsi que le niveau de SIL du système logiciel. Voici un résumé des exigences les plus importantes :
- 7.2 : Phase d’exigences du logiciel
- 7.3 : Phase d’architecture et de conception du logiciel
- 7.4 : Phase de conception des composants logiciels
- 7.5 : Phase de réalisation et tests des composants logiciels
- 7.6 : Phase d’intégration du logiciel
- 7.7 : Phase de validation du logiciel
- 9.2 : Phase de maintenance du logiciel
L’application des techniques et mesures définies dans la norme est graduée selon le niveau d’intégrité du logiciel, de la manière suivante :
- M : Mandatory (obligatoire)
- HR : Hautement Recommandé (obligatoire sauf justification et accord de l’évaluateur)
- R : Recommandé mais non obligatoire
- - : L’utilisation de la technique n’est ni recommandée, ni déconseillée
- NR : Non Recommandé (interdit sauf justification et accord de l’évaluateur)
ISIT propose un ensemble de solutions produits et services, allant de la sensibilisation à l’automatisation des réponses aux exigences de l’EN 50128, en passant par l’accompagnement projet :
- Formation EN 50128
- Accompagnement à la certification EN 50128 d’un projet, rédaction du Plan d’Assurance Qualité Logiciel
- Suivi de la traçabilité des exigences au travers de l’outil de Gestion des Exigences Polarion ALM - SIEMENS ou du module de la suite LDRA TBmanager
- Vérification de règles de codage et de métriques de qualité de code par l’Analyse Statique Syntaxique de LDRA TBvision Static / LDRArules
- Détection de bugs et d’erreurs « Runtime » grâce à l’Analyse Statique Avancée de GrammaTech CodeSonar
- Automatisation des tests unitaires (lien vers « Qu’est-ce que le test unitaire ») et d’Intégration avec LDRA TBrun / LDRAunit
- Analyse dynamique de code et mesure de la couverture structurelle avec LDRA TBvision Dynamic / LDRAcover (lien vers page LDRA TBvision Dynamic)
- Audits de code source et binaire