Problématique de la sûreté de fonctionnement des logiciels

L’obtention d’un logiciel satisfaisant à des contraintes élevées en matière de sûreté de fonctionnement pour piloter ou surveiller des systèmes à forte criticité doit satisfaire à des dispositions drastiques et complexes permettant de garantir autant que faire se peut le niveau de sûreté de fonctionnement obtenu et donner confiance aux acteurs (développeurs, vérificateurs, clients, instances de contrôle ou de certification, usagers, et autres parties prenantes).

 

Les démarches de construction et de validation de la sûreté de fonctionnement d’un logiciel se doivent de viser une couverture aussi grande que possible des modes de sollicitation tant dans l’identification des comportements attendus et dans la mise en place des mécanismes appropriés que dans la démonstration du bon fonctionnement du logiciel.

Selon le niveau des exigences et les moyens disponibles, il s’agit de mettre en œuvre des techniques spécifiques pour :

  • identifier les besoins en matière de sûreté de fonctionnement,
  • éviter l’introduction de défauts dans le processus de conception et de réalisation du logiciel,
  • mettre en place des mécanismes de robustesse et de tolérance de défauts,
  • vérifier, dans le maximum de cas de sollicitation possibles, le comportement du logiciel (y compris en présence de défauts supposés),
  • évaluer le niveau de sûreté de fonctionnement atteint par un logiciel et donc par le système dans lequel il est intégré.

 

Exigences en matière de sûreté de fonctionnement du Logiciel

L’expression d’exigences de sûreté de fonctionnement pour un logiciel peut revêtir différentes formes que les responsables d’un projet doivent pourvoir mettre en exergue et qui selon le cas vont entraîner des approches différentes dans la stratégie de développement et les attendus en matière de démonstration du niveau de sûreté de fonctionnement obtenu.

Selon la formulation des exigences, les attendus en matière de construction, de vérification et d’évaluation du niveau de sûreté de fonctionnement varient.

 

Plan de sûreté de fonctionnement du logiciel

La mise en place d’une démarche de sûreté de fonctionnement lors du développement d’un logiciel (et d’un système programmé) doit pouvoir être lisible et claire. Elle doit donc être formalisée que ce soit pour définir (et faire approuver) les dispositions qui sont prises pour atteindre le résultat attendu ou pour donner confiance dans l’obtention effective de ce résultat.

Le plan de sûreté de fonctionnement (document indépendant ou partie d’un plan de management plus complet) doit définir les principaux éléments de la démarche mise en œuvre.

 

Techniques de construction

Les différentes approches qui permettent de construire la sûreté de fonctionnement sont les suivantes :

  • Mise en œuvre de méthodes de type « analyse des défaillances » qui permettent à partir des événements redoutés donnés en entrée de la spécification du logiciel (ou du système programmé) d’identifier aux différentes étapes de définition et de décomposition de l’architecture du logiciel, les fonctions, modules ou composants les plus critiques,
  • Choix d’architecture selon les niveaux de sûreté de fonctionnement et de tolérance aux fautes visés.
  • Définition et implémentation de mécanismes de sécurisation,
  • Utilisation des règles de développement orientées sûreté de fonctionnement.

Les différentes normes qui traitent de la sûreté de fonctionnement des systèmes programmés définissent des grilles d’exigences qui modulent l’utilisation de ces différentes approches selon le niveau de sûreté de fonctionnement visé.

 

Vérification et validation de la sûreté de fonctionnement du logiciel

Dans le cas des systèmes programmés critiques, les processus de vérification et de validation du logiciel sont fortement règlementés. Les normes imposent presque toutes la rédaction d’un « Plan de Vérification » et d’un « Plan de Validation ».

En termes de vérification, il s’agit essentiellement de mettre en œuvre des relectures systématiques de toute la documentation produite, qu’elle soit « projet » (comme par exemple le Plan de Validation) ou « produit » (comme par exemple le « dossier de spécification » ou le « dossier de validation ») ou enfin spécifiquement «sûreté de fonctionnement» (comme par exemple : le Plan de sûreté de fonctionnement).

En termes de validation de la sûreté de fonctionnement, il s’agit principalement de s’assurer que les exigences de sûreté de fonctionnement sont atteintes et que l’ensemble des cas de test passés apporte pour le logiciel la confiance attendue.

Cette validation est effectuée, tout au long de la branche remontante du cycle de vie en V (i.e. en tests unitaires, tests d’intégration et de validation du logiciel), en général en regard des exigences normatives qui imposent de mettre en œuvre des moyens et techniques de test plus ou moins sophistiqués.