• Aucun résultat trouvé

Syst `eme de transitions tri-modal associ ´e au distributeur de caf ´e et P

sur l’impl ´ementation du mod `ele, ce qui implique de calculer une sous-approximation du mod `ele plut ˆot qu’une sur-approximation.

Exemple 3 : Exemple de syst `eme de transitions tri-modal

Cet exemple d ´ecrit le syst `eme de transitions tri-modal associ ´e au distributeur de caf ´e et

`a l’ensemble de pr ´edicats d’abstraction Pde f= {p0, p1, p2}vu dans l’exemple 2. Le syst `eme

de transitions tri-modal associ ´e est repr ´esent ´e par le graphe de la figure 2.4.

On y retrouve les 5 ´etats abstraits non vides de l’exemple 2 (de q0 `a q4) sous la forme

de rectangles aux coins arrondis. L’ ´etat abstrait initial est l’ ´etat q0 dont les bordures

sont plus ´epaisses que les autres ´etats abstraits. Les transitions sont une nouvelle fois

repr ´esent ´ees par une fl `eche d’un ´etat abstrait `a un autre. Les symboles −,+ et# appa-

raissant sur le nom de l’ ´ev ´enement appliqu ´e par une transition indiquent respectivement

qu’elle a la modalit ´e must−, must+ ou must#. Dans le cas ou aucun de ces symboles n’est

pr ´esent sur un nom d’ ´ev ´enement, la transition a la modalit ´e may.

On obtient ainsi le 3MTSde f= hQ0, Q, ∆, ∆−, ∆+io `u : • Q0= {q0}, • Q= {q0, q1, q2, q3, q4}, • ∆ = ∆−+ ∪ {q0 addCof −−−−−→ q0, q0 powerUp −−−−−−→ q3, q1 powerDown −−−−−−−−→ q4, q2 serveCof −−−−−−→ q1, q2 serveCof −−−−−−→ q2, q2 insert50 −−−−−−→ q2, q2 insert100 −−−−−−−→ q2, q2 cofReq −−−−−→ q2, q2 changeReq −−−−−−−−→ q2, q2 serveCof −−−−−−→ q3, q3 powerDown −−−−−−−−→ q4, q4 takePot −−−−−→ q0, q4 powerUp −−−−−−→ q3, q4 addCof −−−−−→ q4}, • ∆− de f= {q 1 powerDown −−−−−−−−→ q0, q2 changeBack −−−−−−−−−→ q3}, • ∆+ de f= {q1−−−−−−−−→ qpowerDown 0, q2 autoOut −−−−−−→ q1, q3 powerDown −−−−−−−−→ q0, q3 autoOut −−−−−−→ q1, q3 insert50 −−−−−−→ q2, q3 insert100 −−−−−−−→ q2}.

2.4/

S

YSTEMES DE TRANSITIONS APPROXIM

`

ES

´

La r ´eunion d’un MTS et d’un CTS associ ´e forme un syst `eme de transitions approxim ´e,

D ´efinition 19 : Syst `eme de Transitions Approxim ´e (ATS) associ ´e `a un ES et un ensemble de pr ´edicats d’abstraction

Unsyst `eme de transitions approxim ´eest un 8-uplet hQ0, Q, ∆, C0, C, ∆c, α, κi o`u : • hQ0, Q, ∆i est un syst`eme de may-transitions (MTS)

• hC0, C, ∆ciest un syst `eme concret de transitions (CTS) qui est une concr ´etisation du MTS hQ0, Q, ∆i

• α : C → Q est une fonction d’abstraction

• κ : C → {bleu, vert} est une fonction de coloration des ´etats concrets

La fonction κ associe une couleur `a chaque ´etat de C. Elle est utilis ´ee par des heuristiques dans tous les algorithmes constituant les contributions de cette th `ese pour am ´eliorer la couverture par les tests des ´etats abstraits et des transitions abstraites. Elle permet ´egalement de d ´eterminer si un ´etat ou une transition du CTS de l’ATS est atteignable sur le mod `ele. Cette heuristique est pr ´esent ´ee en section 4.2 et s’inspire des travaux de [Veanes et al., 2003].

2.5/

C

RITERES DE COUVERTURE DES SYST

`

EMES

`

A

`

ETATS ET

´

TRANSITIONS

Il est g ´en ´eralement souhaitable de g ´en ´erer des tests permettant d’obtenir une couverture du syst `eme ´etudi ´e aussi exhaustive que possible. Une couverture exhaustive implique- rait que les tests correspondent `a l’ensemble des ex ´ecutions possibles depuis les ´etats initiaux de ce syst `eme. Pour raisonner en termes de syst `emes `a ´etats et transitions, les tests seraient compos ´es de l’ensemble des s ´equences de transitions existant pour ce graphe `a partir de ses ´etats initiaux. Clairement, d `es qu’une boucle apparaˆıt dans ce graphe, la taille de ces s ´equences et leur nombre peut ˆetre infini ; il en va de m ˆeme si le syst `eme mod ´elis ´e sous forme de graphe est infini.

Il est donc n ´ecessaire de d ´efinir des crit `eres de couverture diff ´erents du crit `ere exhaustif. Les crit `eres de couverture de syst `emes `a ´etats et transitions les plus couramment utilis ´es sont les suivants :

• la couverture de tous les ´etats : les tests doivent permettre de visiter l’ensemble

des ´etats du syst `eme,

• la couverture de toutes les transitions : les tests doivent permettre de visiter l’en-

semble des transitions du syst `eme ; ce crit `ere couvre en m ˆeme temps tous les ´etats, sauf s’il existe des ´etats initiaux n’ ´etant la source d’aucune transition,

• la couverture des paires de transitions : les tests doivent permettre de visiter

l’ensemble des paires constitu ´ees de deux transitions successives (la cible de la premi `ere ´etant la source de la seconde) sur le syst `eme ; ce crit `ere de couver- ture englobe le crit `ere de couverture de toutes les transitions et permet en plus d’observer la causalit ´e entre ces transitions,

• la couverture des k-chemins : les tests doivent permettre de visiter l’ensemble

des s ´equences de transitions de taille k ∈ N ou moins ; clairement, la couverture

des 0-chemins est identique `a la couverture de tous les ´etats, la couverture des

1-chemins est identique `a la couverture de toutes les transitions et la couverture

Dans le cas de la couverture des k-chemins, plus k est grand, plus on s’approche du crit `ere de couverture exhaustif. Choisir un k tr `es grand pour forcer les tests `a couvrir une s ´equence de transitions particuli `ere ou des ´etats particuliers n’est pas forc ´ement judicieux. Cela g ´en ´erera en effet des tests plus nombreux et dont une grande partie n’aura pas d’int ´er ˆet vis- `a-vis de la s ´equence ou des ´etats cibl ´es. Dans ce cas, il est donc pr ´ef ´erable de d ´eterminer un sous-ensemble pertinent de chemins `a couvrir par les tests et de guider cette g ´en ´eration afin qu’elle couvre ce sous-ensemble.

2.6/

P

ROPRIET

´

ES TEMPORELLES

´

Les propri ´et ´es temporelles permettent d’exprimer des propri ´et ´es portant sur les ex ´ecutions d’un syst `eme. Ces propri ´et ´es sont tr `es utilis ´ees en v ´erification de mod `ele car elles expriment une sp ´ecification du syst `eme `a laquelle le mod `ele doit se conformer. Dans le cadre de cette th `ese, on utilisera les propri ´et ´es temporelles comme des objectifs de test : si le mod `ele doit se conformer `a une propri ´et ´e, l’impl ´ementation du syst `eme doit ´egalement s’y conformer. Un exemple de propri ´et ´e temporelle portant sur les ex ´ecutions

du distributeur de caf ´e pourrait ˆetre la suivante :aucun caf ´e ne peut ˆetre servi entre le

moment o `u l’utilisateur demande `a r ´ecup ´erer sa monnaie et en ins `ere de nouveau dans

la machine. Autrement dit, l’ ´ev ´enementserveCof n’est jamais appliqu ´e entre l’application

dechangeBacket deinsert50 ouinsert100. S’il existe une ex ´ecution d ´eclenchant dans l’ordre

les ´ev ´enementspowerUp,insert50,changeReq,changeBack,serveCof,insert50, la propri ´et ´e est

viol ´ee carserveCof est appliqu ´e entrechangeBackestinsert50.

Habituellement, les propri ´et ´es temporelles `a v ´erifier sont d ´ecrites `a l’aide des for- malismes LTL, CTL, CTL* ou plus g ´en ´eralement du µ-calcul. Il peut cependant ˆetre tr `es compliqu ´e d’exprimer pr ´ecis ´ement la propri ´et ´e souhait ´ee dans ces formalismes, m ˆeme pour un expert du domaine. G ´en ´eralement d’ailleurs, seule une partie du pou- voir d’expression des logiques temporelles est utilis ´e en pratique. Certaines construc- tions exprimant une dynamique particuli `ere entre les ´etats ou les ´ev ´enements reviennent r ´eguli `erement dans la litt ´erature [Chan et al., 1998, Dillon et al., 1994, Dwyer et al., 1997, N. Naumovich et al., 1996, Wing et al., 1997]. Par cons ´equent, Matthew Dwyer propose dans [Dwyer et al., 1999] un langage de sp ´ecification permettant de s’affranchir des diff ´erents formalismes en proposant des patrons de sp ´ecification.

Les patrons de sp ´ecification permettent d’exprimer les propri ´et ´es temporelles les plus couramment rencontr ´ees dans un large ´echantillon d’exemples par le biais de construc- tions simples et courantes qui poss `edent leur ´equivalent dans tous les formalismes. La propri ´et ´e temporelle est donc exprim ´ee `a l’aide d’un patron de sp ´ecification combin ´e avec une port ´ee. La port ´ee indique sur quelle portion des ex ´ecutions du syst `eme la formule exprim ´ee par le patron doit ˆetre v ´erifi ´ee.

2.6.1/ PATRONS DE SPECIFICATION´

La classification, selon leur s ´emantique, des diff ´erentes propri ´et ´es temporelles pouvant ˆetre exprim ´ees par les patrons est donn ´ee par la figure 2.5 et tir ´ee de [Dwyer et al., 1999]. Les patrons suivants sont propos ´es pour exprimer les conditions d’occurrence sur les ex ´ecutions du syst `eme :

Jamais P : la propri ´et ´e P ne doit ˆetre vraie pour aucun ´etat (absence),

Toujours P : la propri ´et ´e P doit ˆetre vraie pour tous les ´etats (universalit ´e),

• ´Eventuellement P : la propri ´et ´e P doit ˆetre vraie pour au moins un ´etat (existence),

• ´Eventuellement P au plus n fois : la propri ´et ´e P doit ˆetre vraie pour au plus n ∈ N ´etats (existence born ´ee).

Les patrons exprimant une notion d’ordre d’apparition des propri ´et ´es dans une ex ´ecution sont les suivants :

• Pavant P0 : la propri ´et ´e P doit ˆetre vraie durant l’ex ´ecution avant que P0soit vraie (pr ´ec ´edence),

• P0 apr `es P : la propri ´et ´e P0 doit ˆetre vraie durant l’ex ´ecution apr `es que P soit vraie

(r ´eponse).

Les patrons compos ´es peuvent ´egalement utiliser des combinaisons ou des s ´equences de propri ´et ´es comme suit :

• P1, . . . , Pn avant P0 : toutes les propri ´et ´es P1, . . . , Pn doivent ˆetre vraies, dans cet

ordre, durant l’ex ´ecution avant que P0 soit vraie,

• Pavant P0

1, . . . , P0n : la propri ´et ´e P doit ˆetre vraie avant que la s ´equence de pro-

pri ´et ´es P01, . . . , P0n soit vraie,

• P1, . . . , Pn apr `es P0 : toutes les propri ´et ´es P1, . . . , Pn doivent ˆetre vraies, dans cet

ordre, durant l’ex ´ecution apr `es que P0soit vraie,

• P0 apr `es P1, . . . , Pn: la propri ´et ´e P0 doit ˆetre vraie apr `es que la s ´equence de pro-

pri ´et ´es P1, . . . , Pn soit vraie,

• les op ´erations bool ´eennes classiques telles que la n ´egation, la conjonction et la

disjonction peuvent ´egalement ˆetre appliqu ´ees aux propri ´et ´es pour exprimer des conditions temporelles plus complexes.

Les propri ´et ´es P, P0, P1, . . . , Pn sont suppos ´ees ˆetre des formules bool ´eennes portant

sur les variables d’ ´etat d’un mod `ele. Dans le cadre de cette th `ese, nous les utiliserons ´egalement comme des ´ev ´enements. Dans ce cas il convient de remplacer la notion de v ´erit ´e d’une propri ´et ´e P dans les d ´efinitions des patrons par la notion de d ´eclenchement de l’ ´ev ´enement P.

Propriétés temporelles

Occurrence

Absence Universalité Existence Existence bornée

Ordre

Précédence Réponse

Composé

Chaînes Expression booléenne

Précédence Réponse