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
32Dans 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
1Nous 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