IEC 61508 : Répondre aux exigences de la norme de Sûreté de Fonctionnement Industriel
La norme IEC 61508 traite de la sûreté de fonctionnement des systèmes électriques, électroniques et électroniques programmables (comme l’électronique numérique et les logiciels) pour l’industrie. Régulièrement déclinée en normes spécifiques pour différents secteurs d’activité, elle est la référence en termes de safety.
Assurer la conformité d’un système à l’IEC 61508, 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, et construire une architecture qui répond à des exigences structurelles.
Assurer la conformité d’un système à l’IEC 61508, 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, et construire une architecture qui répond à des exigences structurelles.
IEC 61508 : Généralités de la norme
L’IEC 61508 se compose de 7 parties, dont les trois premières uniquement contiennent des exigences normatives (les parties 4 à 7 étant des aides et lignes directrices à leur mise en place) :
La première version de l’IEC 61508, parue entre 1998 et 2000 et reconnue dès 2002 par l’organisme européen de normalisation CENELEC, a été amendée en 2010, principalement dans le but de clarifier certaines exigences (la liste des changements plus importants est disponible sur le site du consortium IEC). L’IEC 61508:2010 (ou IEC 61508 Ed. 2) est la version actuellement applicable.
- Partie 1 (ou IEC 61508-1) : Prescriptions générales
- Partie 2 (ou IEC 61508-2) : Prescriptions pour les systèmes électriques / électroniques / électroniques programmables relatifs à la sécurité
- Partie 3 (ou IEC 61508-3) : Prescriptions concernant les logiciels
- Partie 4 : Définitions et abréviations
- Partie 5 : Exemples de méthodes pour la détermination des niveaux d’intégrité de sécurité
- Partie 6 : Lignes directrices pour l’application de la IEC 61508-2 et la IEC 61508-3
- Partie 7 : Présentation de techniques et mesures
Niveaux de SIL
La norme IEC 61508 introduit 4 niveaux de criticité des systèmes, appelés SIL (« System Integrity Level ») et numérotés de 1 (le moins critique) à 4 (le plus critique). Plus la criticité est élevée, plus les tâches et vérifications à effectuer seront nombreuses, et dans le cadre du logiciel, plus la rigueur exigée dans la réalisation de chaque tâche sera importante (ce concept est appelé « Capabilité Systématique du logiciel »).
Le niveau de SIL se définit 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é (voir la liste des taux de défaillance par niveau de SIL) ; le niveau peut aussi être augmenté par un fabricant dans un but de reconnaissance de la maturité de ses processus de maitrise des risques.
Le niveau de SIL se définit 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é (voir la liste des taux de défaillance par niveau de SIL) ; le niveau peut aussi être augmenté par un fabricant dans un but de reconnaissance de la maturité de ses processus de maitrise des risques.
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’IEC 61508 introduit la notion d’outil support logiciel direct (susceptible d’avoir une influence directe sur le système de sûreté pendant son exécution) et d’outil de support logiciel autonome (prenant en charge une partie du cycle de vie, et n’ayant pas une influence directe sur le système pendant son exécution).
Les premiers doivent suivre l’IEC 61508 comme tout composant logiciel de sûreté ; les seconds sont dissociés en trois niveaux :
Alors qu’un outil T1 ne nécessite aucune méthode de qualification, un outil T2 doit disposer d’une spécification produit et faire l’objet d’une évaluation pour documenter le niveau de confiance pouvant lui être accordé, ainsi que les défaillances potentielles. Un outil T3 doit en addition démontrer qu’il est conforme à sa spécification et documenter les résultats de sa validation.
La suite d’outils LDRA (analyse statique et dynamique, tests unitaires et d’intégration) et CodeSonar de GrammaTech (Analyse statique avancée) disposent d’un pack de qualification IEC 61508 jusqu’à SIL 4.
De plus, les outils LDRA (lien vers LDRA TBvision Static) et l’outil d’analyse statique avancée GrammaTech CodeSonar ont obtenu une certification IEC 61508 (outils T2) permettant leur utilisation jusqu’à SIL 4.
Les premiers doivent suivre l’IEC 61508 comme tout composant logiciel de sûreté ; les seconds sont dissociés en trois niveaux :
- 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
La suite d’outils LDRA (analyse statique et dynamique, tests unitaires et d’intégration) et CodeSonar de GrammaTech (Analyse statique avancée) disposent d’un pack de qualification IEC 61508 jusqu’à SIL 4.
De plus, les outils LDRA (lien vers LDRA TBvision Static) et l’outil d’analyse statique avancée GrammaTech CodeSonar ont obtenu une certification IEC 61508 (outils T2) permettant leur utilisation jusqu’à SIL 4.
IEC 61508 : Comment automatiser la réponse aux exigences logicielles ?
L’IEC 61508-3 implique la mise en place d’un Plan d’Assurance Qualité Logiciel, contenant a minima les éléments suivants :
De plus, l’analyse statique avancée et la détection de bugs et erreurs « Runtime » au plus tôt dans le cycle de développement a pour but, comme l’IEC 61508, la diminution de la probabilité d’occurrence de défaillance du système, et incite à la programmation défensive.
- 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
- Tests unitaires, d’intégration et système liés aux exigences
- Mesure de la couverture structurelle
IEC 61508 : Exigences au niveaux logiciels
L’IEC 61508-3 exige, dans son chapitre 7, la mise en place d’un cycle de vie logiciel quel que soit le niveau de SIL, composé de 9 étapes contenant chacune plusieurs exigences méthodologiques :
Le chapitre 8, quant à lui, définit les dispositions nécessaires pour la conduite d’une évaluation de sécurité fonctionnelle pour juger de la conformité du système développé à la norme.
En addition, les annexes A et B listent, entre autres, plus de 150 techniques de tests et de vérification pouvant être effectuées suivant l’étape du cycle de vie ci-dessus, ainsi que suivant le niveau de SIL du système logiciel.
Voici un résumé des exigences les plus importantes :
- 7.1 : Généralités ;
- 7.2 : Spécifications de sécurité du logiciel ;
- 7.3 : Planification de la validation de sécurité du logiciel ;
- 7.4 : Conception et développement du logiciel (contenant les exigences relatives à l’architecture du système, aux langages de programmation et outils supports, à la conception détaillée, au codage, au test des modules logiciels et à l’intégration du logiciel) ;
- 7.5 : Intégration de l’électronique programmable ;
- 7.6 : Procédures d’exploitation et de modification du logiciel ;
- 7.7 : Validation de sécurité du logiciel ;
- 7.8 : Modification du logiciel ;
- 7.9 : Vérification du logiciel.
En addition, les annexes A et B listent, entre autres, plus de 150 techniques de tests et de vérification pouvant être effectuées suivant l’étape du cycle de vie ci-dessus, ainsi que suivant le niveau de SIL du système logiciel.
Voici un résumé des exigences les plus importantes :
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 :
- 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 logicielles de l’IEC 61508, en passant par l’accompagnement projet :
- Formation IEC 61508
- Accompagnement à la certification IEC 61508 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 et d’Intégration avec LDRA TBrun / LDRAunit
- Mesure de la couverture structurelle avec LDRA TBvision Dynamic / LDRAcover
- Audits de code source et binaire