• Aucun résultat trouvé

BUSY est actif, les transitions étiquetées avec les événements pause / off / load / stop ne sont

4

jamais exécutées. Cela est dû à la présence du comportement “do” dans l’état PLAYING. Nous

5

supposons que le comportement “do” peut s’exécuter zéro, une ou plusieurs fois. En conséquence,

6

la transition de terminaison dePLAYINGpeut être exécutée à n’importe quel moment et, comme

7

la transition de terminaison est plus prioritaire qu’une transition avec événement, la transition

8

(avec l’événementpause) versPAUSEDne sera pas exécutée à cause de la priorité de la transition

9

de terminaison. De même pour l’état LIGHTON. Cela n’est pas uniquement une limite de notre

10

traduction, mais c’est le cas de tout formalisme discret (tels que les automates, les réseaux de

11

Petri, CSP, Promela, etc). En effet, sans un formalisme continu (qui permet d’exprimer l’aspect

12

temporel continu), il est impossible de modéliser le comportement “playing a track” de manière

13

continue, autrement dit dès que le comportement termine son exécution il sera possible de sortir

14

de la région qui le contient.

15

Rappelons que cette étude de cas est une version modifiée de l’exemple dans [?], et que le

16

problème du comportement do n’a pas été détectée car la gestion de priorités entre transitions

17

n’était pas considérée.

18

Remarque : Techniquement, à cause de la présence du comportement “do” dans l’état

19

PLAYING, il est possible d’avoir des exécutions où le comportement “do” est exécuté, et par

20

conséquent la transition avec l’événement de terminaison ne peut pas empêcher d’autres

transi-21

tions avec événements d’être exécutées. Cependant, cela n’est pas possible dans notre traduction,

22

car la transition avec événement peut être franchie empêche d’autres transitions d’être exécutées.

23

Afin d’éviter ce cas de figure, une possibilité est de modifier notre encodage afin de permettre

24

aux transitions de terminaison ou avec événement d’être exécutées (pour un état donné).

Cepen-25

dant, afin de conserver une cohérence avec la sémantique, si une transition avec événement est

26

exécutée, alors la transition de terminaison peut être exécutée uniquement après une exécution

27

du comportement “do”. Cela peut être facilement géré en utilisant une variable globale (pour

28

chaque transition “do”) dans le CPN résultat afin de bloquer la transition de terminaison dans

29

le cas où une transition avec événement est exécutée jusqu’à une exécution de la transition du

30

comportement “do”.

31

Modification du modèle

32

Dans notre étude de cas (présentée dans Section 6.2, Figure 6.1), nous suggérons une

dis-33

crétisation de la nature continue de “playing a track”. Comme première étape, nous supprimons

34

le comportement “do” de l’état PLAYING. Ensuite, nous représentons le comportement do par

35

le passage d’un certain temps (discret). Ceci dit, nous supposons que la lecture du CD a une

36

durée minuteCount (tous les morceaux ont la même durée afin que le modèle reste simple).

37

Nous créons une variableminute, avec comme valeur initiale 0 lors du début d’une nouvelle

lec-38

ture. Le passage du temps est représentée par l’incrémentation de la valeur deminute(tant que

39

minute<minuteCount) à chaque occurrence de l’événementtimeElapsequand l’étatPLAYING

40

est actif. Enfin, les deux régions de l’état BUSY peuvent atteindre leurs états finaux seulement

41

dans le cas où minute= minuteCount. De cette manière les transitions de terminaison seront

42

plus prioritaires que dans le cas où la lecture du morceau atteint la fin. Notons que

l’exten-43

sion de notre travail avec l’aspect temporel permettra de considérer les études de cas avec des

44

comportements “do” ayant une nature continue sans avoir besoin de faire une discrétisation.

45

Le modèle modifié est présenté dans laFigure 6.2.

Figure6.2 – Exemple du lecteur de CD (version modifiée)

Vérification

1

Nous engendrons leCPN correspondant au SMD modifié du lecteur de CD (voirFigure 6.2).

2

Le résultat de la traduction est montré dans la Figure 6.3 sans présence du segment de code

3

CPN ML pour des raisons de lisibilité. La place Pe représente la place des événements et qui

4

initialement contient tous les événements. Toutes les autres places modélisent les états simples

5

en incluant les états finaux du SMD. Les transitions fusionnées sont celles avec les nombreux

6

arcs entrants et sortants. Notre modèle CPN Tools incluant tous les segments de code ainsi que

7

les commandes de vérifications des propriétés est disponible en ligne2.

8

Nous présentons également dans laFigure 6.4la version simplifiée de la traduction du lecteur

9

de CD (la version modifiée) en utilisant la notion d’arc double (c’est-à-dire un arc à deux sens).

10

Cependant, cette version est uniquement utilisée pour une visibilité meilleure car elle ne permet

11

pas de faire de la vérification. La raison est que l’utilisation des arcs à deux sens n’est pas

12

une option qui existe dans CPN Tools et par conséquent elle n’est pas prise en compte lors de

13

la simulation ou vérification. Enfin nous présentons dans la Figure 6.5 la version complète de

14

traduction de l’exemple du lecteur de CD avec la présence du segment de code dans les transitions.

15

CH A PI TRE 6. ÉTU DE DE CA S Pe E 1`play++ 1`load++ 1`off++ 1`pause++ 1`stop++ 1`timeelapse playing B 1`false paused B 1`false lighton B 1`false lightoff B 1`false busyAF B 1`false busyBF B 1`false closed B 1`true open B 1`false F B 1`false present B 1`false track INT 1`0 minute INT 1`0 busy_busy busy_nonplaying tplay

tpause tstop tload toff

lighton_busyBF playing_busyAF ttimeElapse busyAFo busyBFo busyBFo busyAFo closedi playingo lightoni pausedo

lightono lightoffi busyAFi

busyBFi playingo playingi playingi load eo eo eo eo pausedi pausedi pausedi lightoni lightoni lightono lightono lightoffi lightoffi lightoffi busyAFi busyAFi busyAFi busyBFi busyBFi busyBFi

closedi openi closedi openi Fi closedi closedi openo presento presenti lightono busyBFo playingo busyAFo playingo busyAFi busyBFi lightoni lightoffi minuteo minuteo minuteo minutei minuteo tracki tracko tracki minuteo minuteo minutei timeelapse minuteo playingo playingo 6.4 – T rad uction en CP N de la version rév is ée de l’ex emp le du lecteu r de CD : simp lifi ée 161

Figure 6.5 – Traduction en CPN de la version révisée de l’exemple du lecteur de CD : version complète

Nous utilisons CPN Tools 4.0 [?] pour vérifier les propriétés sur notre modèle modifié du

1

lecteur de CD.

CPN Tools n’est pas un model-checker à la volée, et il a besoin d’engendrer tout l’espace

1

d’états avant de faire la vérification des propriétés. La première phase de vérification est de

2

spécifier les propriétés en utilisant le langage CPN ML (le langage utilisé dans CPN Tools pour

3

les segments de code ainsi que la spécification des propriétés). Dans la seconde phase, nous

4

engendrons l’espace d’états en utilisant le générateur d’espace d’états de CPN Tools. Enfin, nous

5

évaluons les propriétés sur l’espace d’états engendré en utilisant CPN Tools.

6

Nous fixons la valeur de trackCount à 5 et la valeur de minuteCountà 3. L’espace d’état

7

engendré en utilisant CPN Tools comporte 159 états symboliques et 1551 arcs (calculés en 4.0 s

8

en utilisant un ordinateur avec un Intel core i5-4570 CPU 3.2GHz with 8 GiB RAM). Nous

9

formulons, après la génération de l’espace d’état, les propriétés présentées dans Section 6.2.

10

Propriété 1 (“le lecteur de CD ne peut être ouvert et fermé en même temps”) 11

Afin de vérifier cette propriété il suffit de vérifier dans chaque marquage de l’espace d’état qu’il

12

n’y a aucun jeton dans closed et openen même temps. La propriété est validée instantanément

13

par CPN Tools sachant que l’espace d’état est déjà engendré et que sa taille est raisonnable

14

(la même situation s’applique pour les autres propriétés). Le code CPN ML correspondant à la

15

première propriété est le suivant.

16 17

1 fun p r o p e r t y 1 p = ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ open 1 p ) ) )=t r u e ) 18

a n d a l s o 19

2 ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ c l o s e d 1 p ) ) )=t r u e ) ; 20 3 v a l l i s t 1 = PredAllNodes ( p r o p e r t y 1 ) ; 21 4 v a l r e s u l t 1 = L i s t . l e n g t h ( l i s t 1 ) ; 22 5 p r i n t (" F i r s t p r o p e r t y : " ^ ( I n t . t o S t r i n g ( r e s u l t 1 ) ) ) ; 23 24

Propriété 2 (“si le lecteur de CD est dans l’état PLAYING alors le CD est inséré 25

dans le lecteur”) Vérifier cette propriété revient à vérifier si dans le cas où il y a un jeton dans

26

la placeplayingalors forcément le jeton de la placepresentest égaletrue. La propriété est prouvée

27

avec CPN Tools et aucun cas contradictoire n’est possible. Le code CPN ML correspondant à la

28

seconde propriété est le suivant.

29 30

1 fun p r o p e r t y 2 p = ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ p l a y i n g 1 p ) ) )=t r u e ) 31

a n d a l s o 32

2 ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ p r e s e n t 1 p ) ) )=f a l s e ) ; 33 3 v a l l i s t 2 = PredAllNodes ( p r o p e r t y 2 ) ; 34 4 v a l r e s u l t 2 = L i s t . l e n g t h ( l i s t 2 ) ; 35 5 p r i n t (" Second p r o p e r t y : " ^ ( I n t . t o S t r i n g ( r e s u l t 2 ) ) ) ; 36 37

Propriété 3 (“si le lecteur est en pause alors la lumière est éteinte”) Vérifier

38

cette propriété revient à vérifier si dans le cas où il y a une jeton danspausedalors il y a forcément

39

un jeton dans la place lightoff. La propriété est vérifiée avec CPN Tools et son code CPN ML est

40

le suivant.

41 42

1 fun p r o p e r t y 3 p = ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ p l a y i n g 1 p ) ) )=t r u e ) 43

a n d a l s o 44

2 ( ( random ( ( Mark . LecteurDeCDTraductionLastVersion ’ l i g h t o f f 1 p ) ) )=t r u e ) ; 45 3 v a l l i s t 3 = PredAllNodes ( p r o p e r t y 3 ) ; 46 4 v a l r e s u l t 3 = L i s t . l e n g t h ( l i s t 3 ) ; 47 5 p r i n t (" Third p r o p e r t y : " ^ ( I n t . t o S t r i n g ( r e s u l t 3 ) ) ) ; 48 49

Propriété 4 (“la valeur de track ne dépasse jamais trackCount”) Afin de valider