Répondre aux exigences de la norme de Sûreté de Fonctionnement Logiciel Ferroviaire EN 50128

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.

Généralités de la norme EN 50128

Après une première version en 2001, l’EN 50128 a été mise à jour en 2011. Celle-ci se compose de 9 parties :

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

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.
EN50128_SIL
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.
EN50128_SIL-1

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:
  • 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.
Cependant, les exigences qui en découlent diffèrent du standard industriel. L’EN 50128 introduit 11 exigences applicables à la qualification d’outils (dépendant de la classe ci-dessus) : l’identification des outils utilisés (T1, T2 & T3), l’analyse de leurs défaillances potentielles, leur spécification ou manuel et la gestion de leur configuration (T2, T3), et enfin leur validation, basée sur le retour d’expérience, un certificat ou des tests spécifiques (T3).

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.

Exigences de l’EN 50128

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, …) :
  • 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.
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 :
EN50128_Exigences

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).

Comment automatiser la réponse aux exigences de l’EN 50128 ?

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.

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 :