La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Thierry Jéron Habilitation à diriger des recherches 16 mars 2004

Présentations similaires


Présentation au sujet: "Thierry Jéron Habilitation à diriger des recherches 16 mars 2004"— Transcription de la présentation:

1 Thierry Jéron Habilitation à diriger des recherches 16 mars 2004
Contribution à la génération automatique de tests pour les systèmes réactifs Thierry Jéron Habilitation à diriger des recherches 16 mars 2004

2 Contexte: les systèmes réactifs
Env P1 P2 Exemples: protocoles télécom, systèmes embarqués, systèmes contrôle/commande, etc. Complexité, répartition croissante, criticité Nécessité de fiabilité / maîtrise des coûts  méthodes formelles

3 Spécification comportementale: exemple du protocole du bit alterné
Env RQ(data) IND(data) CNF Receiver Transmitter d:=0 b:=0 s br = b ?DT(d,br) !IND(d) !ACK(b) b:=1-b br ≠ bit ACK(bit) s b:=0 ?RQ(d)/ !DT(d,b) br = b ?ACK(br) / !CNF b:=1-b DT(data,bit) br ≠ bit ?ACK(br) / !DT(d,b) w Processus concurrents, communication (interne-externe), structure de contrôle, données. Langages de spécification : SDL, Lotos, UML, etc

4 Sémantique : systèmes de transitions (LTS)
Spécification comportementale Spec Système de transitions (LTS) S = [[Spec]] simulation exhaustive état: (localités, val(var), files) action état’: (localités, val(var), files) Explosion combinatoire, voire infinitude (données, files)

5 Vérification de modèle Hyp: Imp modélisable par I
Vérification et test Propriété P (automate, logique) Vérification de modèle S ⊨ P ? Spécification Spec  S = [[Spec]] comportementale Test: Imp conforme à S ? I conf S ? Implémentation Imp Hyp: Imp modélisable par I

6 Génération de tests à la volée (IOLTS)
Historique ADP AAR PAMPA VerTeCS 88 92 91 93 96 89 90 94 95 97 98 99 00 01 02 03 04 Représentation model-checking de syst. infinis (YM Quemener,93-96) Non bornitude de files de CFSM Vérification Vérification à la volée Model checking Repr. 3D LTS Génération de tests à la volée (IOLTS) (P. Morel, 96-00) Gen. test (FSM) Observation répartie Test asynchrone & réparti Test de conformité & Observation Génération de tests symbolique (IOSTS) (E. Zinovieva, 00->) Test et jeux Test et contrôle (V.Tschaen, 01->)

7 Plan Problématique du test Génération de tests à la volée
Test asynchrone et réparti Génération de tests symbolique Bilan et perspectives

8 1. Problématique du test Test = analyse dynamique de programmes pour détecter des fautes par rapport à une spécification ≠ vérification de modèle : exhaustivité impossible en pratique  Sélectionner les tests : à partir du code : test boîte blanche/structurel à partir de la spécification : test boîte noire Activité coûteuse et souvent artisanale Formaliser est incontournable pour  Améliorer la qualité des tests  Diminuer le coût du test

9 Test de conformité de systèmes réactifs
Pb: tester qu’une implémentation I (boîte noire) est conforme à sa spécification S (supposée correcte). Critères de sélection Générateur de tests S? Spécification S S! I conf S ? S? contrôle Implémentation I Cas de test Verdict S! observation

10 2. Génération de tests à la volée [CAV96-99,SCP97-00,IWTCS96,Cfip97, IDPT02,TSI03, …]
Motivations: Éviter l’explosion combinatoire Traiter des systèmes non déterministes Cadre théorique: Théorie du test des IOTS [Tretmans 95-96] Origines: LTS [DeNicola-Henessy84, Abramsky87, Philips87, Brinksma88] Contribution: Formalisation des objectifs de test Sélection de tests à la volée ← vérification à la volée

11 Le modèle: les IOLTS IOLTS (input/output LTS) : ~ IOTS [Tretmans96], IOA [Lynch88] sémantique de systèmes réactifs non-déterministes  spécifications, implémentations, tests, objectifs S ?A non-déterminisme observable : Les entrées ne déterminent pas les sorties  non-contrôlabilité ! X ! Y t ?B ?B non-déterminisme (au sens des automates)  incertitude supprimé par déterminisation ! X ! Z

12 Comportements visibles par le test
Le test permet de contrôler les entrées et observer sorties et blocages (timers) distinguer les blocages spécifiés dans S des autres ⇒ calculer les blocages sur S !d Vis(S)=det(D(S)) D(S) Automate de suspension ?A ?B ! Z ! Y t ! X S ?A ?B !Z !Y !X !d Comportements visibles de référence.  Base pour définir la conformité

13 Relation de conformité
Plusieurs choix possibles: inclusion, égalité de traces, de sorties, de refus, etc  ioco [Tretmans96] : après un comportement visible de la spécification, l’implémentation n’est autorisé à produire que les sorties et blocages spécifiées ?A ?B !Z !Y !X !d I S? Entrées non spécifiées I ioco S Spécification partielle Sorties, blocages non spécifiées ¬ (I ioco S) vis(S) S!d

14 Cas de test et exécutions
?B !Z !Y !X !d Vis(S) ?A ?B !Z !Y !X !d I !A ?Y ?X TC ?d ? Z ! B Inconc Fail Pass ? otherwise Verdict: Fail, Pass, Inconc Propriétés attendues des algorithmes de génération: Correction : I peut être rejetée par TC ⇒ ¬ (I ioco S) Exhaustivité: ¬ (I ioco S) ⇒ on peut générer TC qui peut rejeter I

15 Principes de la génération de tests
!z * Accept !x S Objectif de test : automate complet TracesAccept(TP) Calcul des blocages !d D(S) Déterminisation TP Vis(S) Algorithme non-déterministe [Tretmans96] [Lestiennes-Gaudel02] Produit: intersection de comportement Vis(S)xTP Sélection + Mirroir + Ajout des verdicts X !A ? !B CTG Conflits de contrôlabilité ? !A TC TC

16 Étapes de la génération
?B !Z !Y !X Vis(S)) ?C Produit Vis(S)xTP Sélection Verdicts Mirroir CTG Conflits de contrôlabilité TC Init ?d !d ?C ?A !A !Y ?Y !Y Fail ?X !X Inconc ?d !d reach(Init) coreach(Accept) !Z !d ?B !d ?d ?B !B !z * Accept !x TP ?otherwise ?B !B ?C !Y !Z ?Z Accept Pass reach(Init)

17 Propriétés des tests générés
Correction: possibilité de rejet  non conformité “Exhaustivité”: non-conformité  possibilité de rejet Tests arborescents ⇒ adaptés au non-déterminisme observable

18 Génération à la volée Spec S Calcul à la volée D(S) TP Vis(S) CTG TC
Constat : S très grand ou infini |S| ≫ |TC| Idée: éviter de construire S  construction paresseuse de S, D(S), Vis(S), Vis(S)xTP,CTG pilotée par TP  utilisation d’une représentation implicite des IOLTS  algorithmes basés sur DFS Spec S D(S) Calcul à la volée TP Vis(S) CTG TC

19 Cas de test (bcg, aut, TTCN, )
Implémentation: TGV Expérimentations dans des domaines variés. Distribution: CADP, Agedis Transfert: ObjectGéode Specification Objectif de test bcg, IF UML SDL Lotos IF Object Géode Caesar open IF open Umlaut API de Simulation (primitives parcours de S) CADP lib TGV Cas de test (bcg, aut, TTCN, )

20 Résumé de la contribution
Algorithmique de la génération de tests sur des modèles énumérés Fondée sur une théorie du test bien établie Implémentation efficace: génération à la volée (TGV) Largement publié Transfert industriel (Telelogic)

21 3. Test asynchrone et test réparti
testeur ?a !x ?b ?d ?c !y !z !a ?x !b !d !c ?y ?z !e !f I Contributions : Inversion de la distorsion par estampillage [JJTV-FP99] Distribution de testeur + consensus [JJKV-FP98] Problèmes : Test asynchrone : distorsion ⇒ perte d’information Test réparti : coordination concurrence

22 4. Génération de tests symboliques [RBJ-IFM00, CJRZ-Tacas01, CJRZ-Esmart01,CJRZ-Esec01]
Motivations: Éviter l’explosion combinatoire ← données énumérées “Programmes” de test génériques (non instanciés) Approche Modèle symbolique: IOSTS (~ autres modèles similaires)  Sémantique IOLTS ⇒ théorie du test identique Génération symbolique: S , TP ∈ IOSTS  TC ∈ IOSTS Sélection par utilisation de l’interprétation abstraite [Cousot77] Exécution : Instanciation des entrées ← résolution de contraintes

23 Modèle IOSTS TP S t condition Constante Initiale Q symbolique Variable
Price >0 TP Variable propre/observée Begin p =paid Return!(p) b = vb Deliver!(b) t paid:=0 true paid < Price Return?(m) S0 Cancel? Cancel? Empty!(b) Return Idle Reject ¬(mb=COFFEE) Deliver!(mb) Localités val(l) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Delivery mb=COFFEE Deliver!(mb) Pay Choose?(b) vb:=b paid ≥ Price ∧ d=paid - Price Return!(d) paid:=Price Accept Cancel? paramètre de communication Choose

24 Sémantique [[.]]: IOSTS  IOLTS M  [[M]]
Condition initiale Q k>0 ⌃ v1=0 s0 vo < k ⌃ x > 0 ⌃ (l=s0) in?(x) v1:= vo+ p; (l=s1) Garde Action(param.com.) Affectation s1 (s0,1,0,0) (s0,1,0,1) (s0,1,0,2) (s0,1,0,3) (s0,2,0,0) (s0,2,0,1) (s0,2,0,2) (s0,2,0,3) ⊨ Q in?(1) in?(2) (2,s1,2,1) (2,s1,2,0) (2,s1,2,2) (2,s1,2,3) (2,s1,3,1) (2,s1,3,0) (2,s1,3,2) (2,s1,3,3)

25 Génération symbolique
Opérations syntaxiques dont la sémantique commute avec les opérations sur les IOLTS : Produit: xs Calcul des blocages: Ds Déterminisation: dets Vis(PS) = dets(Ds(S xsTP )) Traces([[ dets(Ds(S xsTP)) ]]) = Traces(det(D([[ S ]] xe [[ TP ]])) Sélection : reach, coreach non calculables de manière exacte ⇒ sur-approximations reacha et coreacha [[.]] [[M]] M ops op [[.]] ops(M) [[ops(M) ]] = op[[M]]

26 Conséquences de la sur-approximation
reach(Q) coreach(Accept) [[Vis(PS) ]]  CTG Calcul exact ? ! Sur-approximation [[CTG]] ? ? Inconc reach(Q) Accept ?otherwise Fail

27 Exemple: calcul du produit
S Price >0 Price >0 PS b=vb Deliver!(b) p =paid Return!(p) Begin Begin,s0 t paid:=0 Empty!(b) t paid:=0 Cancel? Return Idle Delivery Cancel? Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Idle Reject Pay Choose?(b) vb:=b Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price Cancel? Cancel? Choose Choose,s0 TP true Choose?(b) vb:=b Cancel? S0 ¬(b=COFFEE) ∧ b=vb Deliver!(b) paid < Price Return!(m) mb=COFFEE Deliver!(mb) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬(mb=COFFEE) Deliver!(mb) Empty!(b) Reject Accept Begin Accept Begin Reject

28 Sélection du graphe de test
CTG Price >0 Vis(PS) Price >0 !d paid:=0 Begin,s0 ?d paid:=0 Begin,s0 Cancel? paid:=0 Cancel? !d v ≥ Price Coin!(v) paid:=v ?d Idle,s0 Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 paid < Price ∧ d = paid - Price Return!(d) Fail d =paid - Price Return?(d) paid:=Price Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price ?d Choose,s0 ?otherwise !d b=COFFEE Choose!(b) vb:=b Choose,s0 Choose?(b) vb:=b ¬(b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Delivery,s0 vb=COFFEE ∧ b=vb Deliver?(b) vb= COFFEE ∧ b=vb Empty!(b) Empty!(b) Begin Accept Begin Reject Inconc Pass

29 Exécution: instanciation des constantes et résolution des gardes
CTG Price >0 Implémentation I Price = 40 Begin,s0 ?d paid:=0 !d Résolution v ≥ Price v ≥ Price Coin!(v) paid:=v Idle,s0 Coin!(50) ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 ?otherwise Return? (10) Fail d =paid - Price Return?(d) Fail ?d Choose!(COFFEE) Choose,s0 ?otherwise ?otherwise b=COFFEE Choose!(b) vb:=b Deliver?(COFFEE) vb= COFFEE ∧ b=vb Empty!(b) Delivery,s0 vb=COFFEE ∧ b=vb Deliver?(b) Empty?(COFFEE) Inconc Pass Pass Inconc

30 Outillage: STG Génération Opérations symboliques
Analyse approchée par interprétation abstraite (NBAC) Exécution Compilation C++/Java Résolution de contraintes (Omega) Expérimentations : CEPS Distribution : prévue fin 2004 Specification Test purpose Génération de test NBAC dotty Test case Compilation C++/ Java Test case IUT C++/Java Omega verdict

31 Contributions à la génération de tests symbolique
Originalité : Génération de « programmes » de test Traitement de systèmes non-déterministes Théorie indépendante de l’approximation Cadre formel : ⇒ garantie de propriétés des tests : correction, « exhaustivité » Outillage (STG) : génération et exécution Publications

32 5. Bilan Contribution originale à l’algorithmique de la génération de tests Techniques énumératives à la volée Techniques symboliques Non déterminisme Asynchronisme et répartition Cadre formel  propriétés des tests Outillage et expérimentations Passage à l’échelle

33 Travaux connexes Modèles voisins : FSM, EFSM (voir e.g. [Lee-Yannakakis 96])  contrôle et données Autres techniques à base d’objectifs : MSC [Grabowski et al 93] Utilisation de model-checkers (e.g. [Engels et al-97, Hong-Lee et al. 01])  limités dans le traitement du non-déterminisme Autres techniques symboliques : Simulation symbolique + résolution de contraintes (pb de chemins) Smile [Eertink94] TVeda [Clatin et al. 95], Agatha [Lugato et al. 02], Gatel [Marre], BZ-TT [Legeard et al] + spec algébriques [Gaudel-James99, Lestiennes-Gaudel02], Abstractions: EFSM [Petrenko et al 99-04]

34 Défis de la génération automatique de tests pour les systèmes réactifs
Accroître l’usage industriel des méthodes formelles pour le test : ↗ qualité ↘ coûts L’automatisation du test est un levier pour une meilleure introduction des méthodes formelles dans l’industrie.  Passage à l’échelle de l’automatisation traiter efficacement des systèmes plus complexes en taille et expressivité  Méthodologies d’utilisation et de combinaison des méthodes formelles

35 Perspectives Accroître l’expressivité des modèles :
contrôle, données, concurrence, communication, temps Améliorer les critères de sélection : objectifs, couverture, hypothèses de sélection Combiner les techniques pour la génération de tests : model-checking, preuve, analyse statique, interprétation abstraite, résolution de contraintes, ordres partiels, Combiner les méthodes de validation dans le processus de développement : Vérifications statiques, contrôle, test

36 Quelques travaux en cours
Vérification et test de propriétés de sûreté Tester violation d’une propriété de sûreté valide sur la spécification [RMTJJ-Testcom04] Couverture en model-checking et génération de test [Hoskote et al. 99, Chockler et al. 01] Propriétés couvrantes  tests couvrants Test de robustesse Tester la préservation de propriétés de sûreté en présence d’aléas Contrôle et test Contrôler la conformité d’une implémentation [JMRT-MSR03-CDC04-IJPR04]

37 Fin

38 Systèmes infinis: détection, représentation et model-checking
!b ?a !c ?b Non-bornitude Indécidable [BZ81] Décidable ds sous-classes [e.g. Fin82] Détection par CS sur files (CNS pour ss-classe + générale) Représentation du système infini par grammaire de graphes Model-checking de CTL sur grammaire de graphe [J-Stacs91, JJ-TCS93, QJ-Segragra95, QJ-FortePSTV96]

39 Vérification à la volée
Motivation: éviter l’explosion combinatoire Spec  S  invalider P en construisant S partiellement par DFS + remplacement [Holzmann] Non-bornitude Model-checking de LTL(séq. finies) Bisimulation [FM-CAV91] [JJ-CAV89,JJ-CAV91, FJJM-FMSD93]

40 Observation de traces d’exécutions réparties [JJJR-ICDCS94]

41 Test asynchrone [JJTV-FP99]
!x !y S∥F ?a !x !y S∥ST∥F ?a !x(1) !y(0) Testeur ST-1 F I ST !a ?x(1) ?y(0) TC(S∥ST∥F) ?otherw Fail ¬(I ioco S) ¬(I∥ST∥F ioco S||ST|| F) ?y ?otherw !a ?x TC(S) Fail ?a !y I∥F ioco S∥F ?a !y(1) ?a !y

42 Distribution de test pour le test réparti [JJKV-FP98]
consensus distribué TC 1 3 2 !A ?C ?B Comm. asynchrone Pb choix non-local T1 T2 IUT TC1 TC2 1 1’ 1’’’ 2’ !A !vote(B) T2!B T2!A 1’’ 3 ?elu(B) ?elu(C) 2’’ ?B 1 !vote(C) T1?B T2?A 2 1’ ?elu(B) ?elu(C) ?C 1’’ 3 coordination T3 Approche par modèle de la concurrence [Jard02]

43 Vérification visuelle: dessin 3D de graphes d’états [J-GD94,J-Cfip94]
Représentation des informations sémantiques processus actif concurrence Propriété s s’  coord(s) coord(s’)

44 Travaux en cours Couverture en model-checking / test
pour S ⊨ y, s couvert si mutant(S,s) ⊭ y couverture structurelle ↔ MdF sur FSM couverture de dépliage ↔ MdF sur Traces, ioco S ⊨ y, s couvert pour y, q ssi Ssq¬q ⊭ y Test de robustesse Test de programmes à virgules flottantes

45 Systèmes réactifs et répartis
Exemples: protocoles, systèmes embarqués, etc. Env communication synchrone/asynchrone P1 P2

46 Relation de conformité
I ioco S ≜ ∀ s ∈ STraces(S), Out(D(I) after s) ⊆ Out(D(S) after s) ?A ?B ! Z ! Y i ! X S D(S) !d ?A ?B ! Z ! Y i ! X D(I1) non-conforme livelock sortie non-spécifiée ?A i ?B ! Z ! X I2 conforme choix d’implémentation spec. partielle

47 Exemple de génération * Comportements visibles Calcul des blocages
CTG TC ?A ?B !Z !Y i !X det(D(S)) ?B ?A !Y !X !Z !d Accept det(D(S))xTP S ?A ?B !Z !Y !X !d ?d !B !A ?Y ?X !B ?Z ?d Pass Inconc D(S) Fail ?other !d !d !z * Accept !x TP Comportements visibles STraces(S)=Traces(D(S)) Calcul des blocages Intersection de comportements acceptés STraces(S)  TracesAccept(TP) Objectif de test Traces(TP)=(Sd)* TracesAccept(TP) Sélection: pb de vérification reach(Init)  coreach(Accept) Inversion entrées/sorties Complétion  Fail Conflits de controlabilité

48 Principe de la génération de tests à la volée
?B !Z !Y i !X TC/CTG det(D(S)) det(D(S))xTP S ?A ?B !Z !Y !X !d D(S) ?B ?A !Y !X !Z !d Accept Inconc Fail !A ?Y ?X !B ?Z ?d Pass ?other !z * Accept !x TP

49 Principes de la génération
TP S! d ⋃ S? CTG S=[[Spec]] D(S) TC Spec det(D(S)) det(D(S))xTP Spec Spec TestP + var, loc S=[[Spec]] TP S! ⋃ S? ⋃ St Spec xsTestP SxiTP SP=[[Spec xsTestP]] D(SxiTP) D(SP) det(D(SxiTP)) det(D(SP)) CTG CTG TGV Agedis TC TC TGV

50 Extension aux objectifs de sûreté [RMTJJ-Testcom04]
y propriété de sûreté sur Straces(S).S! Vérifier S ⊨ y Tester la violation de y par I Lien entre vérification et test I ioco S ⇔ ∀y ∈ p(S), S ⊨ y  I ⊨ y Génération de tests sur det(D(S)).S! x w¬y Verdicts des cas de tests: Violate  y violée Fail  non-conformité  j violée Inconc  not (reach(¬y ∧ ¬ ioco)) Vérification S ⊨ P Test not(I conf S) ? I ⊭ P ? P S I

51 Extension aux propriétés de sûreté [Testcom04]
S ⊨ y sûreté , tester la violation de y par I, I ⊭ y I ioco S ⇔ ∀y ∈ pertinente(S), S ⊨ y  I ⊨ y Propriété j accessibilité sur STraces y sûreté sur STraces Objectif TPj  TracesAcc(TPj) Obs¬y TracesVl(Obs¬y) Vérification S ⊨ j STraces(S) ⋂TracesAcc(TPj)≠⌀ S ⊨ y STraces(S) ⋂TracesVl(TP¬y)=⌀ Génération det(D(S)) x TPj reach(init) ⋂ coreach(Acc) Pass, Inconc, Fail det(D(S)).Sd! x TP¬y reach(init) ⋂ coreach(Vl) Violate, Inconc, Fail

52 Test et contrôle Contrôle : S ⊭ y  construire C tq S ∥ C ⊨ y
Similitude avec génération de tests (reach ⋂ coreach)  synthèse de contrôleur (accessibilité) dans TGV Contrôle pour de la conformité S et I connues, assurer I ioco S par contrôle Observation totale Observation partielle [JMRT-MSR03-CDC04-IJPR04]

53 Panorama des techniques existantes
Modèle Spec S + Hyp FSM [Lee-Yan] s - i/o-> s’ (IO)LTS [Tretmans] s-?i->s’ –t -> s” -!o-> s”’ Spec. algébriques [Bernot -Gaudel] sort/op/axiom IUT inconnue I interface coonue hyp: ∃ modéle I ∈ MdF (fini) sortie/transfert I ∈ (IO)LTS I ⊨ Hyp unif, reg, etc Conformité/Modèle de fautes IUT sans faute/MdF (IUT ≈traces S ) ioco STr(I) ⋂ Str(S).S! ⊆ STr(S) I ⊨ Axiomes Cas de tests Séquences --> s –i/o->s’ check(s’) Instance d’axiome ds I Génération TT, DS, UIO,W… opt: voyag. comm. Sélection (non-det, obj) sous-IOLTS de vis(S) Dépliage termes Propriétés Correct: rejet  ┐conf Exhaust: ┐conf  rejet correct exhaust / MdF “exhaust.” (TS infinie) exhaust /Hyp Extensions Ctrl + data EFSM IOSTS Spec. alg + IOLTS

54 Shéma général de la génération de tests symboliques
IOSTS S [[S]] IOLTS [[ . ]] TP [[TP]] xs xe [[ . ]] PS = S xs TP [[S xs TP]] = [[S]]xe[[TP]] Ds D [[ . ]] PS D = Ds(PS) [[Ds(PS)]] = D [[PS ]] dets = subsets ◯ es det = subset ◯ e [[ . ]] PSvis = dets(PS D ) Tr(Acc)[[dets(PS D) ] = Tr(Acc)(det[[PS D]]) select selects Tr[[selects(PSvis) ]] ⊇ Tr(select [[PSvis]]) TrP[[selects(PSvis) ]] = TrP(select [[PSvis]]) TrF[[selects(PSvis) ]] ⊇ TrF(select [[PSvis]]) [[ . ]] CTG = selects(PSvis)

55 Déterminisation: heuristique
G1∧ ¬G2 a(p) A1 l G2∧¬G1 a(p) A2 l G1 a(p) A1 G2 a(p) A2 G1∧ G2 a(p) ma :=p l1 l2 l1 l2 G’1 b(r) A’2 G’2 c(l) A’2 G’1 b(r) A’1 G’2 c(l) A’2 l1,l2 G’1◯ A1(p/ ma) b(r) A’1◯ A1(p/ ma) G’2◯ A2(p/ ma) c(l) A’2◯ A2(p/ ma) l’1 l’2 l’1 l’2

56 Produit QS QTP QS ^ QTP VoTP = VpS GS(C,LS,VpS,pS) a(pS)
(LS,VpS) :=AS(C,LS,VpS,pS) s0 tp0 GTP(C,LTP,VpTP,VoTP,pTP) a(pTP) (LTP,VpTP) :=ATP(C,LTP,VpTP,VoTP,pTP) s1 tp1 QS ^ QTP s0,tp0 GS(C,LS,VpS,pS) ^ GTP(C,LTP,VpTP,VoTP,pTP/pS) a(pTP) (LS, LTP,VpS,VpTP) :=AS(C,LS,VpS,pS) ⋃ ATP(C,LTP,VpTP,VoTP,pTP/pS) S1,tp1

57 Produit S PS TP t t Price >0 Price >0 b=vb Deliver!(b) p =paid
Return!(p) Begin Begin,s0 t paid:=0 Empty!(b) t paid:=0 Cancel? Return Idle Delivery Cancel? Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Idle Reject Pay Choose?(b) vb:=b Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Cancel? Cancel? Choose Choose,s0 TP true Choose?(b) vb:=b Cancel? S0 ¬(b=COFFEE) ∧ b=vb Deliver!(b) paid < Price Return!(m) mb=COFFEE Deliver!(mb) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬(mb=COFFEE) Deliver!(mb) Empty!(b) Reject Accept Begin Accept Begin Reject

58 Blocages et e-clôture PS PSvis !d t !d !d !d !d !d !d Price >0
Begin,s0 !d paid:=0 Begin,s0 t paid:=0 Cancel? paid:=0 Cancel? !d Cancel? Return Reject !d Idle,s0 Idle,s0 Return Reject v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) paid < Price ∧ d = paid - Price Return!(d) false !d Idle Reject Pay,s0 Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Cancel? !d Choose,s0 !d Choose,s0 false !d Choose?(b) vb:=b Choose?(b) vb:=b b=COFFEE ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) Delivery,s0 Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) Empty!(b) Begin Accept Empty!(b) Begin Accept Begin Reject Begin Reject

59 Sélection: reach (approx.) + S?  Reject
Price >0 PSvis Price >0 !d paid:=0 !d paid:=0 Cancel? paid:=0 Begin,s0 Begin,s0 v > 0 Coin?(v) paid:=v Cancel? !d !d Idle,s0 Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v v > 0 Coin?(v) paid:=v paid < Price ∧ d = paid - Price Return!(d) paid < Price ∧ d = paid - Price Return!(d) Pay,s0 Idle Reject Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) d d Choose,s0 Choose,s0 Choose?(b) vb:=b Choose?(b) vb:=b ¬(b=COFFEE) ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Begin Accept Empty!(b) Begin Reject Empty!(b) Begin Accept Begin Reject

60 Sélection: coreach (approx.)
Price >0 Price >0 !d paid:=0 !d paid:=0 Begin,s0 Begin,s0 v > 0 Coin?(v) paid:=v v > 0 ∧ v ≥ Price Coin?(v) paid:=v !d !d Idle,s0 v > 0 ∧ v ≥ Price Coin?(v) paid:=v Idle,s0 v > 0 Coin?(v) paid:=v paid < Price ∧ d = paid - Price Return!(d) Pay,s0 paid < Price ∧ r_v = paid - Price Return!(d) Idle Reject Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Idle Reject !d Choose,s0 d Choose,s0 Choose?(b) vb:=b b=COFFEE Choose?(b) vb:=b ¬( b=COFFEE) ∧ b=vb Deliver!(b) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬( b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Empty!(b) Begin Accept Begin Accept Empty!(b) Begin Reject Begin Reject

61 Sélection: reach (approx.) + inversion i/o + fail
Price >0 CTG Price >0 !d paid:=0 Begin,s0 ?d paid:=0 Begin,s0 v > 0 ∧ v ≥ Price Coin?(v) paid:=v !d !d v > 0 ∧ v ≥ Price Coin?(v) paid:=v Idle,s0 v ≥ Price Coin!(v) paid:=v Idle,s0 ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 paid < Price ∧ d = paid - Price Return!(d) Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) Fail d =paid - Price Return?(d) Idle Reject d Choose,s0 ?d Choose,s0 b=COFFEE Choose?(b) vb:=b b=COFFEE Choose!(b) vb:=b ¬( vb=COFFEE) ∧ b=vb Deliver!(b) vb=COFFEE ∧ b=vb Deliver!(b) b=COFFEE Deliver?(b) Delivery,s0 b= COFFEE Empty!(b) Delivery,s0 Begin Accept Begin Accept Begin Reject Empty!(b) Inconc

62 Approche Passage à l’échelle
Méthodes formelles pour le test et la vérification Modèles et théories Algorithmique Outillage : prototype  transfert Expérimentations Enseignement/Formation Passage à l’échelle

63 Modèle IOSTS S TP t k >0 in ? (x) v1:=x v1 < 0 nok!() true
condition Initiale Q Constante symbolique ~ variable k >0 s0 TP in ? (x) v1:=x Variable propre/observée v1 < 0 nok!() true s1 t0 v1 >= 0 t v2:=v1- k 0 ≤v2 ≤ 2 out!(z) alert!() v2=0 alert!() y = v2 out!(y) nok!() Action & paramètre de communication Reject Accept s2 Localité ~ variable énumérée

64 Résultat sur l’exemple
k >0 k x=v1 x=k, alert? x=k+2 out(x-k) s0 in ? (x) v1:=x v1 < 0 nok!() y = v2 out!(y) s1 v1 ≥ 0 t v2:=v1- k v2=0 alert!() k >0 TC tc0 k ≤ x ≤ k+2 in ! (x) v1:=x s2 TP true ?otherwise Fail tc1 t0 y = v1 – k ∧ 0≤ y ≤ 2 out ? (y) v1=k alert ? () 0 ≤v2 ≤ 2 out!(z) alert!() Inconc Pass nok!() Reject Accept


Télécharger ppt "Thierry Jéron Habilitation à diriger des recherches 16 mars 2004"

Présentations similaires


Annonces Google