Présentation du stage
description
Transcript of Présentation du stage
![Page 1: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/1.jpg)
Présentation du Présentation du stagestage
Laïka Moussa
![Page 2: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/2.jpg)
19/9/2003 Présentation du stage 2
PlanPlan
Présentation du cadre du stageSujet du stageDémarche adoptée
![Page 3: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/3.jpg)
19/9/2003 Présentation du stage 3
Présentation du stagePrésentation du stage
Les FUNDPLe CETIC
![Page 4: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/4.jpg)
19/9/2003 Présentation du stage 4
Sujet du stageSujet du stage
Conception et réalisation d’un outil d’aide à l’apprentissage à la programmation B
Destiné à des programmeurs n’ayant pas d’expérience dans le domaine des méthodes formelles
Vérifier la correction des programmes saisis
Extraction d’éventuels contre-exemples
![Page 5: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/5.jpg)
19/9/2003 Présentation du stage 5
Point de départPoint de départ
Outil d’Isabelle Dony, doctorante à l’UCLRéférence pour plus de détails :
I.Dony and B. Le Charlier, Finding Errors with Oz, Techniques for implementing constraint programming system,
Workshop held in conjunction with Cp2002, 8th international
Conference on practice of constraint programming, Cornell University, Ithaca, NY, 2002
![Page 6: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/6.jpg)
La démarche La démarche adoptéeadoptée
![Page 7: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/7.jpg)
19/9/2003 Présentation du stage 7
Les principales étapes…Les principales étapes…
Le cahier des charges, et les décisions adoptées
La formalisation
Le développement
![Page 8: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/8.jpg)
19/9/2003 Présentation du stage 8
Le cahier des chargesLe cahier des charges
![Page 9: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/9.jpg)
19/9/2003 Présentation du stage 9
Le cahier des chargesLe cahier des charges- présentation -- présentation -
La collecte des exigences : - des utilisateurs- des concepteurs- des enseignants
Comment ? Par des interviews
![Page 10: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/10.jpg)
19/9/2003 Présentation du stage 10
Le cahier des chargesLe cahier des charges
La norme IEEE Std 830-1998Les ajouts : scénarii d’exécution
![Page 11: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/11.jpg)
Forme finale de Forme finale de l’outill’outil
![Page 12: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/12.jpg)
19/9/2003 Présentation du stage 12
Les principales décisionsLes principales décisions
Le sous-ensemble de B analyséLes erreurs de syntaxeOn fournira à cet outil une machine abstraite cohérente et son implantation.Ces fichiers seront analysés.L’utilisateur recevra des messages d’erreurs pertinents et des contre-exemples
![Page 13: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/13.jpg)
19/9/2003 Présentation du stage 13
L’interfaceL’interface- 1/2 -- 1/2 -
![Page 14: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/14.jpg)
19/9/2003 Présentation du stage 14
L’interfaceL’interface- 2/2 –- 2/2 –
![Page 15: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/15.jpg)
19/9/2003 Présentation du stage 15
Avec un exemple…Avec un exemple…
MACHINE
machine
OPERATIONS
xx <--
operation(yy, xx)=
PRE
Préconditions
THEN
xx : (xx = xx*yy)
% Post-conditions
END
END
IMPLEMENTATION machine_iREFINES
machineOPERATIONS xx <-- operation(xx, yy)=VAR ii, resIN ii:=xx;
res:=0;WHILE ii <= yy DO
ii:= ii+1; res:=res+xxVAR
yy-iiINV
ii <= yy & res = xx* ii ENDxx:= resEND END
![Page 16: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/16.jpg)
19/9/2003 Présentation du stage 16
Avec un exemple Avec un exemple incorrect…incorrect…
MACHINE
machine
OPERATIONS
xx <--
operation(yy, xx)=
PRE
Préconditions
THEN
xx : (xx = xx*yy)
% Post-conditions
END
END
IMPLEMENTATION machine_iREFINES
machineOPERATIONS xx <-- operation(xx, yy)=VAR ii, resIN ii:=xx;
res:=0;WHILE ii <= yy DO
ii:= ii+1; res:=res+xxVAR
yyINV
ii <= yy & res = xx* ii ENDxx:= resEND END
![Page 17: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/17.jpg)
Conception de l’outilConception de l’outil
![Page 18: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/18.jpg)
19/9/2003 Présentation du stage 18
La formalisationLa formalisation
Intérêts des méthodes formellesApporte une sémantique claire et surtout non ambiguë Des descriptions précises et concises du logiciel à produire Les démonstrations de propriétés
Difficultés de la mise en œuvre Quelles données modéliser, comment, …Quel traitement faire subir à ces donnéesComment être sûr de ne rien avoir oublié, d’être cohérent
Résultats obtenusUne plus grande assurance d’avoir un logiciel sans erreurs de fond (niveau conception et codage)
![Page 19: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/19.jpg)
19/9/2003 Présentation du stage 19
Obligations de preuve Obligations de preuve en Ben B
Preuve de cohérence de la machine abstraitePreuve de raffinement de chaque opération:
Il faut que les préconditions de la machine abstraite impliquent les préconditions de la machine implantéeIl faut que les post-conditions de la machine implantée impliquent celles de la machine abstraite
![Page 20: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/20.jpg)
19/9/2003 Présentation du stage 20
Preuve de raffinement des Preuve de raffinement des opérationsopérations
MACHINE
machine
OPERATIONS
resultat <--
operation()=
PRE
Préconditions
THEN
Substitutions
% Post-conditions
END
END
IMPLEMENTATION
machine_i
REFINES
machine
OPERATIONS
resultat <--
operation()=
% Préconditions
Instructions
% Post-conditions
END
![Page 21: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/21.jpg)
19/9/2003 Présentation du stage 21
Nos vérificationsNos vérifications
Les préconditionsLes opérations de nos implantations n’auront pas de préconditions (préconditions toujours vraies)
Les post-conditionsChercher les cas où l’on contredit la spécificationNécessite de trouver des contre-exemples, donc on cherchera l’ensemble des solutions de la formule suivante:
post-conditions(op_i) et non (post-condition(op_a) )
![Page 22: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/22.jpg)
19/9/2003 Présentation du stage 22
Principes utilisésPrincipes utilisés
L’intérêt d’utiliser la programmation par contraintes
La génération des nouvelles variables
La manipulation des environnements
La fonction GenInstr
La vérification finale
![Page 23: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/23.jpg)
La nécessité des La nécessité des contraintescontraintes
![Page 24: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/24.jpg)
19/9/2003 Présentation du stage 24
Recherche de contre-Recherche de contre-exemplesexemples
Recherche exhaustive
Domaines restreints
OZ
![Page 25: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/25.jpg)
Génération des Génération des identificateursidentificateurs
![Page 26: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/26.jpg)
19/9/2003 Présentation du stage 26
Nécessité de générer des Nécessité de générer des variablesvariables
Problèmes de masquageExemple : a:= 0; b:= a+1; a:=bSans génération de variables, on obtient:a=0 et b=a+1 et a =b Inconsistant…Nous voulons obtenir :a0=0 et b0=a0+1 et a1=b0
![Page 27: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/27.jpg)
19/9/2003 Présentation du stage 27
Avec l’exemple…Avec l’exemple…
MACHINE
machine
OPERATIONS
xx <--
operation(yy$0, xx$0)=
PRE
Préconditions
THEN
xx$1 :
(xx$1 = xx$0*yy$0)
% Post-conditions
END
END
IMPLEMENTATION machine_iREFINES
machineOPERATIONS xx <-- operation(xx0, yy0)=VAR ii, resIN ii0:=xx0;
res0:=0;WHILE ii <= yy DO
ii1:= ii0+1;res1:=res0+xx0
VARyy0-ii1
INVii <= yy0 & res = xx0* ii
ENDxx1:= res2END END
![Page 28: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/28.jpg)
19/9/2003 Présentation du stage 28
Les environnementsLes environnements
Un environnement de génération des variables, qui contient l’historique de toutes les variables générées, afin de ne pas avoir de problèmes de masquage
Un environnement d’évaluation des variables
![Page 29: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/29.jpg)
Les différents types Les différents types de contraintesde contraintes
![Page 30: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/30.jpg)
19/9/2003 Présentation du stage 30
Les contraintes dues au respect de Les contraintes dues au respect de la spécificationla spécification
MACHINE
machine
OPERATIONS
resultat <--
operation()=
PRE
Préconditions
THEN
Substitutions
% Post-conditions
END
END
IMPLEMENTATION
machine_i
REFINES
machine
OPERATIONS
resultat <--
operation()=
PRE
Préconditions
THEN
Instructions
% Post-conditions
END
END
![Page 31: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/31.jpg)
19/9/2003 Présentation du stage 31
Contraintes de Contraintes de spécificationspécification
« Traduction en contraintes » des différents changements ayant eu lieu sur les variables.
Ces contraintes sont toujours vraies
![Page 32: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/32.jpg)
19/9/2003 Présentation du stage 32
Avec l’exemple…Avec l’exemple…
MACHINE
machine
OPERATIONS
xx <--
operation(yy, xx)=
PRE
Préconditions
THEN
xx : (xx = xx*yy)
% Post-conditions
END
END
IMPLEMENTATION machine_iREFINES
machineOPERATIONS xx <-- operation(xx, yy)=VAR ii, resIN ii:=xx;
res:=0;WHILE ii <= yy DO
ii:= ii+1; res:=res+xxVAR
yy-iiINV
ii <= yy & res = xx* ii ENDxx:= resEND END
![Page 33: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/33.jpg)
19/9/2003 Présentation du stage 33
Avec la machine Avec la machine abstraite…abstraite…
MACHINE machine
OPERATIONS xx <-- operation(yy$0, xx$0)=
PRE Préconditions THEN xx$1 : (xx$1 = xx$0*yy$0) % Post-conditions
END END
Cspec_a =
(xx$1 = xx$0*yy$0)
![Page 34: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/34.jpg)
19/9/2003 Présentation du stage 34
Contraintes de Contraintes de correctioncorrection
Contraintes permettant de s’assurer que le code est bien écritCes contraintes peuvent être fausses
![Page 35: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/35.jpg)
19/9/2003 Présentation du stage 35
Avec la machine Avec la machine abstraite…abstraite…
Pour la machine abstraite, la contrainte decorrection est:
C_corr_absraite = true
![Page 36: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/36.jpg)
19/9/2003 Présentation du stage 36
Avec l’implémentation…Avec l’implémentation…
C_correction_concretes =
ii0 < yy0 =>
ii0 <= yy0 &
res0 = xx0* ii0&
ii0 < yy0 =>
ii0 <= yy0 &
res1 = xx0* ii1
&ii0 < yy0 =>
yy0-ii1 < yy0-ii0
IMPLEMENTATION machine_iREFINES
machineOPERATIONS xx <-- operation(xx0, yy0)=VAR ii, resIN ii0:= 1;
res0:=xx0;WHILE ii < yy DO
ii1:= ii0+1;res1:=res0+xx0
VARyy0-ii
INVii <= yy0 & res = xx0* ii
ENDxx1:= res2END END
![Page 37: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/37.jpg)
19/9/2003 Présentation du stage 37
Profil de la fonction Profil de la fonction GenInstrGenInstr
GenIntsr : Instr * C * Sigma * Sigma C * C * Sigma * Sigma
![Page 38: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/38.jpg)
19/9/2003 Présentation du stage 38
skipskip
![Page 39: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/39.jpg)
19/9/2003 Présentation du stage 39
Devient_egalDevient_egal
![Page 40: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/40.jpg)
19/9/2003 Présentation du stage 40
AssertAssert
![Page 41: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/41.jpg)
19/9/2003 Présentation du stage 41
Séquence: notationsSéquence: notations
![Page 42: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/42.jpg)
19/9/2003 Présentation du stage 42
Séquence : équationSéquence : équation
![Page 43: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/43.jpg)
19/9/2003 Présentation du stage 43
Les contraintes de lienLes contraintes de lien
Il faut faire le lien entre les variables de chaque machineIci, avec l’exemple , on a :
C_lien = ( xx1 = xx$1 & yy0 = yy$0)
![Page 44: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/44.jpg)
19/9/2003 Présentation du stage 44
La vérification finaleLa vérification finale
On lance la vérification suivante :
C_lien & C_spec_concretes & non (C_correction_concrete ou
C_spec_abstraites)
![Page 45: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/45.jpg)
19/9/2003 Présentation du stage 45
Etat d’avancement du Etat d’avancement du stagestage
Terminer l’implantation
Liens avec l’interface graphique
![Page 46: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/46.jpg)
19/9/2003 Présentation du stage 46
Résultats - Evolutions Résultats - Evolutions futuresfutures
Dès que la phase d’implantation sera finie : une base stableDans le futur : un outil moins restrictif, tant au niveau du langage analysé que de la forme des modules
![Page 47: Présentation du stage](https://reader035.fdocuments.fr/reader035/viewer/2022062315/56815adc550346895dc8a8d6/html5/thumbnails/47.jpg)
Merci….Merci….