Discussion:Vérification formelle

message: Discussion déplacé depuis la page de discussion du Wikipédia:Portail Informatique Epommate 13 jun 2005 à 20:43 (CEST)
replies: text: Bonjour, sans être spécialiste, je peux te dire que la "vérification formelle" n'est qu'une facette de la "méthode formelle" - plutôt que la fusion, on peut présenter dans l'article méthode formelle (informatique) un lien vers un développement plus poussé de la vérification. 13 jun 2005 à 20:46 (CEST)

text: Bha c'est tout l'article qu'il faut compléter, et le modèle checking c'est pas ici mais la : Model checking Outs 6 juin 2006 à 17:50 (CEST)
thread_title:  fusion vérification formelle et methodes formelles 

message: J'ai fusionné la page avec Méthode formelle (informatique) Outs 30 juillet 2006 à 20:53 (CEST)
thread_title: Fusion

message: Je viens juste d'arriver en tant qu' éditeur sur Wikipédia.
Je ne suis pas un expert du domaine, mais j'ai travaillé pendant prés de 3 ans sur le développement d'outils sur le sujet.
Je vais donc tenter d'apporter une vision industrielle sur le sujet. Avant tout il semble y avoir une confusion sur ce que recouvre le terme Model Checking.
En effet, il est sous entendu dans l'article, ainsi que dans les discussions précédentes que les techniques de preuves ne sont pas du model checking, qui se restreindrait à de la vérification algorithmique.
Ceci est contraire à la classification commerciale dans le cas de la conception électronique.
Dans l'industrie électronique, nous distinguons deux grandes familles d'outils :
# Les model checkers : tout outil qui se base sur la présence d'une seule modélisation du système
# Les equivalent checkers : tout outil qui se base sur la présence d'un modèle référent, on va comparer le nouveau modèle avec cette référence.
Que la technique de vérification, ou de conception, est une approche algorithmique ou par preuve n'est pas essentiel.
En effet, la véritable problématique en pratique est au niveau de la spécification et de la validation en français (Verification en anglais).
Si l'on prend la représentation abstraite de ce qu'est un programme (P(x)), on peut parfaitement le représenter sous la forme d'une boite noire avec un vecteur d'entrée I(t), et un vecteur de sortie S(t).
Nous avons alors la représentation S=P(I). La fonction P(x) étant déterministe.
Dans le cas de l'approche algorithmique le problème est double : est-il correct ? est-il correctement implémenté ?
Dans le cas de l'approche par preuve c'est un peu plus complexe : ai-je la preuve de tous les états atteignables du système ? combien de temps ai-je besoin pour établir cette preuve ?
Si je reprends les deux techniques présentées (BDD et SAT), on peut voir qu'elles permettent de vérifier principalement l'approche par preuve :
* BDD : définit l'espace de tous les états atteignables. Cet espace défini, il devient simple de vérifier si notre état à prouver fait parti de cette liste.
* SAT : ne définit pas tout l'espace des états (E(x)) possibles, mais vérifie selon le principe mathématique :
*:\forall t, si E(t)=TRUE alors E(t+1)=TRUE
*:Il ne reste plus qu'alors à vérifier que E(0)=TRUE
Mais dans les applications électroniques, on peut utiliser ces deux techniques dans le cadre de la vérification algorithmique par equivalence checking.
L'implémentation de l'algorithme étant fait à l'aide d'un langage formel, il est donc possible d'établir un modèle de BDD de celui-ci. Si nous avons un autre modèle avec les mêmes fonctionnalités et que l'on considère correct. Il reste qu'à le convertir sous la forme d'un BDD. Il ne restera alors plus qu'à comparer les deux BDDs obtenus pour conclure.
Dans le cas de la vérification algorithmique par SAT, cela se fait grâce à la simplification de la logique booléenne en XOR:
Soit P(x) le programme à tester, et R(x) le programme référent. S=P(I) et S'=R(I)
P(x)=R(x)\mapsto \forall t, S(t) \otimes S'(t)=0
Utilisateur:R.Saltarelli
:Salut et bienvenu sur Wikipedia. Comme tu a pu le voir les articles sur les méthodes formelles sont encore largement améliorables. Ne te gêne surtout pas pour apporter des modifications sur les textes existants. N'oublie pas de signer tes discussion avec un ~~~~ sinon les pages de discussions ne sont pas lisibles. Dernièrement j'ai essayé de rassembler les articles existants dans la catégorie Catégorie:Méthode formelle cela permet d'avoir une vue d'ensemble. Bonne rédaction et A+ --Outs 24 mars 2007 à 18:27 (CET)
thread_title:  Méthode formelle : Model Checking vs. Equivalence Checking