• Aucun résultat trouvé

Modèle UML ATM-BANK

Dans le document UML et MODEL CHECKING (Page 113-117)

Méthode de Model-Checking des Modèles UML en utilisant Maude

3. Exemple II : ATM-BANK

3.1 Modèle UML ATM-BANK

Le modèle UML qui représente le système est modélisé comme suit:

Diagramme de classe : la structure statique du modèle est représentée par le diagramme de

classes représenté dans la figure (Fig.64). ce diagramme est composé de deux classes ; la classe ATM et la classe Bank. Les deux classes sont reliées par l’association Link.

Trois signaux sont déclarés dans la classe ATM, PINVerified, reenterPIN et abort. La

classe Bank contient trois attributs ; le booléen cardValid, les deux entiers

MaxNumIncorrect et numIncorrect. La classe Bank est composée aussi de la méthode verifyPIN et le signal done.

• Diagramme d'états-transition : Le comportement de l’objet ATM est spécifié par la machine d'états-transitions présenté dans la figure (Fig.65). ce diagramme est composé des états simple CardEntry, PINEntry, Verification, AmountEntry, returningCard et l’état composite GivingMoney.

Le comportement de l’objet Bank est présenté dans le diagramme d’états-transitions figuré dans (Fig.66). Ce diagramme est composé de l’état idle et l’état composite Verifying. Ce dernier est composé de deux régions concurrentes qui spécifient respectivement la vérification de la carte et le code PIN.

  ATM <<signal>> PINVerified <<signal>> reenterPIN <<signal>> abort  Bank

boolean cardValid = true int numIncorrect = 0 int maxNumincorrect = 2 VerifyPIN() <<signal>> done Link 1 1

Diagrammes de collaborations : Les concepteurs du modèle proposent deux diagrammes de

collaboration qui représentent des scénarios différents d’interactions entre l’ATM et la Bank. Le diagramme représenté dans la figure (Fig.67) spécifie une collaboration juste c.-à-d. une collaboration dont l’ordre d’interactions peut se produire dans une exécution tel qu’il est prévu dans le diagramme de collaboration.

Par contre, le diagramme de collaboration figuré dans (Fig.68) présente une collaboration erronée dont l’ordre d’interactions entres les objets ne peut jamais se produire dans le

Fig.65 : Diagramme d'état-transition de la classe ATM [62]

Fig.66 : Diagramme d'état-transition de la classe BANK [62] T6

système réel à cause du comportement des objets (les spécifications des diagrammes d’états-transitions).

Nous allons montrer à travers cet exemple une technique de vérification des collaborations vis-à-vis le comportement des objets spécifie par des diagrammes d’états-transitions. Cette technique est basée sur notre méthode de translation et de vérification.

3.2 Translation du Modèle UML

La translation du modèle UML s'effectué de la même manière que l'exemple précédent. La figure (Fig.69) représente le module Maude qui spécifie la classe ATM et son diagramme d'états-transition. Et la figure (Fig.70) représente le module Maude qui spécifie la classe Bank et son diagramme d'états.

La translation montre que notre méthode tient compte aux concepts avancés du diagramme d’états-transitions tels que les états concurrents, les états séquentiels, les transitions complexes qui utilisent le join et le fork et les choix …etc. et les règles de réécritures suivantes représente la transition complexe (T6) dans le diagramme d’états-transitions de la Bank (Fig.66);

crl [T6A] : < BQ : BANK | STATUS : Verifying( CardValid || PINIncorrect ) , cardValid : true , numIncorrect : N , MaxNumIncorrect : N' , Link : L > collaboration(abort(BQ , L ) - s) => < BQ : BANK | STATUS : Idle , cardValid : false , numIncorrect : N , MaxNumIncorrect : N' , Link : L > abort(BQ , L ) collaboration(s) if N >= N' .

crl [T6B] : < BQ : BANK | STATUS : Verifying( CardValid || PINIncorrect ) , cardValid : b , numIncorrect : N , MaxNumIncorrect : N' , Link : L > collaboration(reenterPIN(BQ , L ) - s) => < BQ : BANK | STATUS : Idle , cardValid : b , numIncorrect : N + 1 , MaxNumIncorrect : N' , Link : L > reenterPIN(BQ , L ) collaboration(s) if N < N' .

Tant qu’il s’agit de vérifier des collaborations de cette exemple, nous ne somme pas besoin de définir des propriétés temporelles. Nous allons juste appliquer ce que nous avons expliqué précédemment sur la vérification de collaboration. Ainsi, nous passons directement à la quatrième étape.

a : ATM AT Ban b : BANK

1: VerifyPIN () 3: VerifyPIN()

2: reenterPIN 4: PINVerified

a : ATM AT Ban b : BANK

1: VerifyPIN() 3: VerifyPIN()

2: abort 4: PINVerified

load full-maude ( omod SMATM is

protecting INT . protecting NAT . protecting STRING . protecting BOOL .

*** Objects names are Strings.

subsort String < Oid .

*** definition of the sort state simple state and composed state

sorts SIMSTATE COMSTATE STATE . *** [1]

subsort SIMSTATE < COMSTATE . *** [2]

subsort COMSTATE < STATE . *** [3]

op none : -> COMSTATE [ctor] . *** [4]

op _||_ : COMSTATE COMSTATE -> COMSTATE [ctor assoc comm id: none] . *** [5]

*** Specification of collaboration structure

sort seq col . *** [6]

subsort Msg < seq . *** [7]

op null : -> seq [ctor] . *** [8]

op _-_ : seq seq -> seq [ctor assoc id: null ] . *** [9]

op collaboration : seq -> col .

subsort col < Configuration . *** [10]

ops CardEntry PINEntry Verification AmountEntry ReturningCard Counting Dispensing InitialState FinalState : ->

SIMSTATE *** [11]

op GivingMoney : COMSTATE -> STATE . *** [12]

*** definition of the ATM class

class ATM | STATUS : STATE , BLOCKED : Bool , Link : Oid . *** [13]

*** definition of events

msgs verifyPIN reenterPIN PINverified abort done

ACKverifyPIN : Oid Oid -> Msg . *** [14]

*** Some variables declaration

vars AT L : String . var X : STATE . vars N N' : Nat . var b : Bool . var s : seq . var CF : Configuration .

*** transitions of the State machine are represented by Rewriting Logic rules

*** in order to draw a way to execute the system in respect to the given collaboration. the op Collaboration is added to the rules

*** to get rules that represent only the transition remove collaboration. *** [15]

rl [t1] : < AT : ATM | STATUS : InitialState > => < AT : ATM | STATUS : CardEntry > . rl [t2] : < AT : ATM | STATUS : CardEntry > => < AT : ATM | STATUS : PINEntry > .

rl [t3] : < AT : ATM | STATUS : PINEntry , BLOCKED : false , Link : L > collaboration(verifyPIN(AT , L) - s) => < AT : ATM | STATUS : Verification , BLOCKED : true , Link : L > verifyPIN(AT , L) collaboration(s) .

rl [t3ack] : ACKverifyPIN(L , AT) < AT : ATM | STATUS : Verification , BLOCKED : true , Link : L > => < AT : ATM | STATUS : Verification , BLOCKED : false , Link : L > .

rl [t4] : reenterPIN(L , AT) < AT : ATM | STATUS : Verification , BLOCKED : false , Link : L > => < AT : ATM | STATUS : PINEntry , BLOCKED : false , Link : L > .

rl [t5] : PINverified(L , AT) < AT : ATM | STATUS : Verification , BLOCKED : false , Link : L > => < AT : ATM | STATUS : AmountEntry , BLOCKED : false , Link : L > .

rl [t6] : abort(L , AT) < AT : ATM | STATUS : Verification , BLOCKED : false , Link : L > => < AT : ATM | STATUS : ReturningCard , BLOCKED : false , Link : L > .

rl [t7] : < AT : ATM | STATUS : AmountEntry , BLOCKED : false , Link : L > => < AT : ATM | STATUS : GivingMoney(InitialState) , BLOCKED : false , Link : L > .

rl [t8] : < AT : ATM | STATUS : GivingMoney(InitialState) , BLOCKED : false , Link : L > => < AT : ATM | STATUS : GivingMoney(Counting) , BLOCKED : false , Link : L > .

rl [t9] : < AT : ATM | STATUS : GivingMoney(Counting) , BLOCKED : false , Link : L > => < AT : ATM | STATUS : GivingMoney(Dispensing) , BLOCKED : false , Link : L > .

rl [t10] : < AT : ATM | STATUS : GivingMoney(Dispensing) , BLOCKED : false , Link : L > => < AT : ATM | STATUS : GivingMoney(FinalState) , BLOCKED : false , Link : L > .

rl [t11] : < AT : ATM | STATUS : GivingMoney(FinalState) , BLOCKED : false , Link : L > => < AT : ATM | STATUS : ReturningCard , BLOCKED : false , Link : L > .

rl [t12] : < AT : ATM | STATUS : ReturningCard , BLOCKED : false , Link : L > collaboration( done(AT , L ) - s) => < AT : ATM | STATUS : FinalState , BLOCKED : false , Link : L > done(AT , L ) collaboration(s) .

rl [t13] : < AT : ATM | STATUS : FinalState , BLOCKED : false , Link : L > CF => < AT : ATM | STATUS : FinalState , BLOCKED : false , Link : L > CF .

endom )

Dans le document UML et MODEL CHECKING (Page 113-117)

Documents relatifs