Vérification et validation

Deux activités. Deux séries de preuves. Les deux sont obligatoires.

La vérification et la validation portent sur des questions différentes, nécessitent des activités distinctes et fournissent des éléments de preuve différents. Dans les secteurs réglementés, elles sont également soumises à des exigences de documentation obligatoires différentes, conformément aux normes ISO 26262, DO-178C et CEI 61508. Les équipes de développement qui les considèrent comme des synonymes découvrent généralement cette distinction au pire moment possible : lors d'un audit.

La distinction fondamentale

La manière la plus simple de les distinguer :

Vérification

Avons-nous développé le logiciel correctement ?

Validation

Avons-nous développé le bon logiciel ?

La vérification permet de s'assurer que le logiciel met correctement en œuvre ses spécifications. La validation permet de s'assurer que les spécifications reflètent correctement les besoins de l'utilisateur final ou du système.

La vérification dans la pratique

Les activités de vérification portent sur la correction interne du logiciel. Elles comprennent :

  • Analyse statique du code : examen du code source à la recherche de défauts et de non-conformités aux normes sans l'exécuter
  • Tests unitaires : tester chaque composant individuellement et de manière isolée par rapport à ses spécifications
  • Mesure de la couverture du code : vérifier que les tests couvrent le code de manière adéquate
  • Tests basés sur les exigences : établir un lien entre chaque cas de test et une exigence spécifique
  • Révisions par les pairs et inspections : examen structuré du code et de la documentation

Le résultat de la vérification est constitué de preuves documentées : résultats de tests, rapports de couverture et matrices de traçabilité indiquant quelles exigences ont été vérifiées et de quelle manière.

La validation dans la pratique

Les activités de validation permettent de vérifier que le système remplit effectivement les fonctions requises, et pas seulement celles décrites dans le cahier des charges. Elles interviennent généralement à un stade avancé du cycle de vie du développement et comprennent notamment :

  • Tests du système par rapport aux exigences des utilisateurs finaux ou à des scénarios opérationnels
  • Tests « Hardware-in-the-loop » (HIL) pour les systèmes embarqués
  • Tests de réception en collaboration avec le client ou les autorités réglementaires

La validation permet de s’assurer qu’un système correctement construit est également le système adéquat.

Pourquoi ces deux éléments sont-ils indispensables dans les secteurs réglementés ?

Les normes telles que ISO 26262, DO-178C, CEI 61508 et CEI 62304 exigent explicitement la mise en œuvre d’activités de vérification et de validation, accompagnées de preuves documentées pour chacune d’entre elles. Les preuves de vérification comprennent généralement des rapports de tests unitaires, des résultats d’analyse statique et des données de couverture. Les preuves de validation comprennent quant à elles les résultats des tests au niveau du système et les procès-verbaux de réception.

VectorCAST et PC-lint Plus sont conçus pour prendre en charge le volet « vérification » de ce processus, en générant les preuves vérifiables exigées par ces normes.