Expertise Software

 

La Sûreté de Fonctionnement des logiciels intégrés dans un système complexe dépend quasi exclusivement de la complétude
de la définition des besoins, de la conception, des Tests Unitaires, d'Intégration et de la validation dans le système.
Nous proposons un ensemble de méthodes pour :



> Spécifier
les exigences de Sûreté de Fonctionnement du logiciel,
> Mettre en œuvre les tests du logiciel,
> Auditer le processus de développement du logiciel,
> Détecter l'impact des dysfonctionnements du logiciel sur le système


Une erreur bénigne dans un module enfoui dans le logiciel, une mauvaise interprétation des besoins fonctionnels du système, une interface erronée du logiciel avec son environnement, peuvent entraîner des risques nuisant gravement à la Sécurité Fonctionnelle du système.
C'est pourquoi notre métier est de mettre en œuvre les Techniques d'Évaluation de Vérification et de Validation de la Sûreté de Fonctionnement du logiciel pour :

> Contrôler la complétude du code d'un logiciel (LCC),
>
Vérifier la couverture des tests du logiciel,
>
Analyser l'impact des modifications du logiciel,
>
Analyser les Modes de Défaillance du logiciel et
leurs Effets sur le système (AMDE, AEEL),
>
Prouver formellement un logiciel.

SPECIFIER

Aider le Maître d’Ouvrage d'un système logiciel qui doit satisfaire à des critères de sûreté de fonctionnement (Fiabilité, Maintenabilité, Disponibilité, Sécurité), à :
Sélectionner les exigences les plus pertinentes compte tenu du type de système, de la criticité des fonctions de ce système, du référentiel normatif applicable,
Exprimer les exigences de sûreté du logiciel (produit, processus) devant figurer dans le Cahier des Charges ou la Spécification technique,
Préparer l'analyse des réponses des constructeurs à ces exigences.


ANALYSER

"Analyser les modes de défaillance et leurs effets"

Lors de la mise en œuvre de systèmes dont certaines fonctions critiques (en terme de FMDS) sont portées par du logiciel, cette méthode permet au Maître d'Ouvrage et au Maître d'Oeuvre d'identifier les défaillances du logiciel pouvant aboutir aux "Événements Redoutés" du système, mais aussi d'évaluer l'architecture du logiciel vis-à-vis de la Sûreté de Fonctionnement et de la tolérance aux fautes.
Elle permet également à l’Évaluateur/Certificateur d’identifier, de façon indépendante, les risques résiduels des fonctions logicielles susceptibles d’aboutir à l’occurrence d’Événements Redoutés sur le système.

Les AMDE du logiciel s'appuient sur une analyse fonctionnelle formalisée établie à partir d'éléments tels que :

  • la Spécification Technique des Besoins du Logiciel (STBL),

  • le Document d'Architecture Logiciel (DAL) ou Document de Conception Préliminaire (DCP),

  • le Document de Conception Détaillée (DCD),

  • le Code du logiciel

Le comportement fonctionnel est déterminé à partir du code source à l'aide de nos outils APRLS® et AGFL® qui fournissent l'architecture du logiciel jusqu'aux chemins fonctionnels des composants logiciels.


AUDITER

L’objectif de l’audit des processus de développement du logiciel est de fournir au Maître d'Ouvrage une confirmation objective de la conformité des processus de développement de l'entité auditée (Maître d'Œuvre, Fournisseurs, Sous-Traitants,…) vis-à-vis des exigences définies par l'état de l'art et les règlements normatifs (CEI61508-3, CENELEC 50128, CEI 880, DO 178B,…)

La conformité des processus aux normes de la Sûreté de Fonctionnement est évaluée au travers :

  • du Cycle de vie du logiciel,
  • de la Spécifications des prescriptions du logiciel,
  • de la Conception et du développement du logiciel
  • du V&V (Vérification et Validation) du logiciel,
  • de la planification et de la documentation du logiciel,
  • de l'organisation des équipes (Responsabilités, indépendance des équipes, circuits d'informations,…),
  • de la gestion de projet (planning, revues, gestion de configuration, gestion des modifications, mesures de la qualité,…).

Nous utilisons son outil Audit_SdF® de checklists des exigences de la norme à évaluer. Une métrique est évaluée pour chacun de ces thèmes en fonction de critères d'importance adaptés au contexte des processus audités.


TESTER

Fournir au Maître d'Œuvre les moyens, méthodes, outils pour faire réaliser, par une équipe indépendante, les Tests Unitaires, d'Intégration (logiciel/logiciel, logiciel/matériel), de Validation des logiciels intégrés dans le système dont il a la charge.
Réaliser les plans et dossiers de Tests Unitaires, d'Intégration et de Validation.
Établir le dossier justificatif de vérification des tests effectués vis-à-vis des exigences de couverture du référentiel normatif applicable au projet.


VERIFIER

Aider le maître d'ouvrage, l'exploitant ou l'évaluateur d'un système comportant du logiciel, à vérifier la couverture fonctionnelle des Tests Unitaires, d'Intégration et de Validation et leur complétude vis-à-vis des exigences de sûreté.

Identifier, par utilisation de l’outil AGFL® (Analyse par Graphe Fonctionnel du Logiciel), les scénarios de tests fonctionnels, de robustesse, de tolérance aux fautes et de tests par injection de fautes, qui doivent compléter les dossiers de tests pour aboutir à une couverture de type "classe d'équivalence".

"Classe d'équivalence" : La partition du domaine d'entrée d'un programme, de telle sorte qu'un test utilisant une valeur représentative d'une classe est équivalent à un test utilisant une autre valeur de cette classe. (Source : norme DO 178 B).


CRITIQUER

La Lecture Critique de Code permet au Maître d'Oeuvre d'un système logiciel devant satisfaire à des exigences de qualité et de Sûreté de Fonctionnement de contrôler l'application des règles de l'état de l'art en matière de qualité et de sûreté du code des logiciels (C, ADA, Modula2, Assembleurs) comme par exemple :

  • les constructions peu sûres (switch case sans clause default, code mort, …),
  • les anomalies du flot de contrôle (récursivité, sorties multiples de composant, …),
  • les anomalies du flot de données (mémoires/sorties non rafraîchies sur un chemin d'exécution,
  • relation d'ordre sur les entrées erronée sur un chemin d'exécution, variable globale entre
  • traitements parallèles, entrées non initialisées, variables non utilisées, …),
  • les anomalies du flot de dépendance des données (effets de bord des composants appelés, …),
  • la conformité des chemins fonctionnels du code aux spécifications du logiciel (STBL, DAL),
  • la traçabilité du code à ses exigences de conception (DCP, DCD).

L'ensemble de ces contrôles est réalisé à l'aide de nos outils AGFL® et APRLS® appliqués sur le code.


VALIDER

La méthode de Validation Formelle de la spécification permet au Maître d'Ouvrage ou au Maître d'Œuvre d'avoir au plus tôt l'assurance de la complétude et de la cohérence des fonctionnalités portées par le logiciel décrites dans les spécifications du logiciel. Cette assurance est apportée par l'établissement du modèle formel de ces fonctionnalités et la démonstration sous forme de preuves mathématiques du respect des propriétés de sûreté des fonctions du logiciel dans le système.
(Cette démarche est "Hautement Recommandée" (HR) pour les logiciels de niveau SIL 4 dans la norme CEI 61508).