Introduction à la validation

1. Pourquoi Valider ?

Un programme / un algorithme est un objet complexe, dont il est difficile d'estimer la validité, exactement comme c'est le cas pour un théorème de mathématiques, un postulat en physique, etc.

2. Comment valider ?

A. Ailleurs... :

1. Validation d'un modèle physique

On regarde certains faits et on vérifie s'ils sont en adéquation avec le modèle :

2. Validation d'un théorème en mathématiques

On essaie de prouver le théorème :

3. Validation d'une solution technique

"Preuve de concept" : On fait une expérience où un bout de la solution technique est réalisé :

B. En informatique

1. Test

On essaie notre algorithmes sur différentes valeurs d'entrée, et on regarde si le résultat produit par notre algorithme (notre "modèle") est conforme à nos attentes (la "réalité").

→ analogie avec la validation d'un modèle physique

2. Preuve

On essaie de vérifier formellement que notre algorithme fonctionne dans tous les cas.

→ analogie avec la validation d'un théorème mathématique

3. Prototypage

On écrit une fonction qui simule ce que devrait calculer l'algorithme.

→ analogie avec la preuve de concept

C. Comparaison entre les 3 principes de validation ci-dessus

Ce qui est vérifiéCibleAvantageInconvénient
ProtypageLa bonne compréhension du problèmeDéveloppeursIntervient très tôtAucune garantie sur le résultat final
TestUn fonctionnement correct dans des cas bien précisProgramme exécutéFacilité de mise en oeuvre, nombreux outilsIntervient à la fin, loin d'être exhaustif
PreuveLa correction par rapport aux propriétés spécifiées formellementCode et/ou conceptionGarantie obtenueLourd à mettre en place
Comparaison entre les différentes techniques de validation

III. Le cas particulier du model checking

A. Principe

Model checking = test exhaustif

B. Avantages

C. Inconvénients