• Aucun résultat trouvé

Calcul de l'utilite du code: procedure ExploreRule5

SoientSP une speci cation,TP un objectif de test et $f l'ensemble d'entrees contr^o-lables (qui couvrent TP). Les produits synchrones entre les modeles de SP etSP n

f $f

avec l'objectif de testTP sont fortement bisimilaires:

Y (SPcTP$f) Y (SP\n f $fTP$f) : Preuve

On montre que l'egalite entre les etats est aussi une bisimulation et donc c'est la bisimulation forte.

Le fait que Q

(SPcTP$f) simule Q

(SP\n

f $fTP$f) resulte du corollaire 4:1 p:90]. La simulation inverse resulte en appliquant une induction structurelle en fonction de l'etiquette intervenante dans la de nition de la relation de bisimulation employee et des regles 3:35 p:82]

 3:40 p:82]. Le principe general applique ici est le suivant: pour chaque transition deQ

(SPcTP$f) on remonte en arriere vers (la) les regles 3:35 p:82]

3:40 p:82]

qui l'ont generee. En essayant d'appliquer les m^emes regles pour Q

(SP\n

f$fTP$f) et ainsi obtenir une transition dans Q

(SP\n

f$fTP$f) qui simule la transition de

Q

(SPcTP$f), on remonte vers les regles 3:11 p:49]

 3:16 p:49] qui ont genere les tran-sitions de SPc. On montre que les transitions deSP qui apparaissent dans les premisses de ces regles sont gardees dans SP n

f $f et donc en appliquant les regles 3:11 p:49] 

3:16 p:49] cette fois pour SP n

f $f on obtient une transition dans SP\n

f $f qui permet, via les regles 3:35 p:82]

3:40 p:82] d'obtenir une transition dansQ

(SP\n

f$fTP$f) qui simule la transition de Q

(SPcTP$f).

93

Chapitre 5

Analyse des donnees

Ce chapitre est dedie aux analyses de ot de donnees. Celles-ci appartiennent au cadre general de l'analyse de programmes (NNH99]): en outre l'analyse de ot de donnees (Hec77, MR90]), on peut y inclure l'interpretation abstraite (CH78, CC92b]), l'analyse des contraintes (Apt99]) et celle des types. Le resultat de ces analyses est utilise ensuite dans l'optimisation de code (ASU89, Muc97]).

Les analyses de ot de donnees permettent le calcul, au moment de la compilation, de quelques types d'invariants de programmes. Il s'agit des invariants (MRB95, SS98]) construits a partir des notions comme la de nition d'une variable (une variable estde nie

dans une instruction du programme soit si elle est lue soit si elle appara^t dans la partie gauche d'une a ectation) ou l'utilisation d'une variable (une variable estutiliseedans une instruction du programme soit si elle est ecrite soit si elle appara^t dans la partie droite d'une a ectation) ou des invariants concernant les valeurs de variables (propagation des constantes ou des intervalles entiers)1.

On s'interesse aux invariants qui permettent de restreindre le nombre d'etats du modele (et comme ceux-ci sont un produit cartesien entre les etats de contr^ole du pro-gramme et les ensembles des valeurs des contextes de variables/ les, on restreint les contextes de variables2). Pour restreindre le domaine de de nition d'un contexte de va-riables (et ainsi restreindre la taille des etats du modele) on utilise l'analyse des vava-riables actives (Hec77]) ou l'analyse des variables utiles (Wei84, Tip94]). Pour restreindre l'en-semble des valeurs des contextes de variables (et ainsi reduire le nombre d'etats et de transitions du modele) on utilise la propagation des constantes (Kil73]) ou celle des

1:Il s'agit ici des invariants simples, des invariants plus sophistiqu es et pr ecis concernant les valeurs des variables, comme les intervalles lin eaires ou ans pouvant ^etre g en er es seulement en utilisant les techniques de l'interpr etation abstraite

intervalles entiers (CC92b]) et ensuite on applique des techniques comme par exemple l'elimination du code mort.

Les analyses de ot de donnees ont, essentiellement une nature equationnelle. Un probleme de ot de donnees consiste en ungraphe de ot, untreillis completet unespace de fonctionsmonotones (ou continues). Le systeme equationnel se construit a partir du graphe de ot (qui est soit le graphe de dependances de contr^ole3 MR90, Muc97] soit le graphe inverse de celui-ci, en fonction du type de probleme, en avant ou en arriere). Une equation decrit la dependance entre l'information d'un etat et l'information des etats predecesseurs ou successeurs.

Ce qu'on a decrit ci-dessus est valable dans le cadre des analyses de ot intra-processus (ou les analyses de ot pour un seul aec). Dans le cas d'un reseau de aecs l'analyse de ot est inter-processus et on doit ainsi de nir le concept de suc-cesseur/predecesseur d'un etat dans un autre processus. Dans le cas des actions de communication inter-processus on a considere que les actions d'entree et les actions de sortie avec la m^eme signature (canal de communication, signal et parametres) peuvent se synchroniser (quelque soit leur place dans les processus di erents). Donc si on a deux transitions etiquetees avec deux actions de communication correspondantes on considere que l'information de l'etat source de la transition etiquetee avec l'action de sortie peut ar-river dans l'etat destination de la transition etiquetee avec l'action d'entree (un concept similaire est celui de precedence immediate dans le graphe de contr^ole des programmes java DC97]).

A partir du graphe de ot, de la regle de conuence4 et de la valeur initiale des invariants5 on construit unoperateur de ot(qui est monotone ou continue, en fonction de l'espace des fonctions) et dont le plus petit (grand) point xe est la solution du probleme et donc l'invariant cherche.

Dans la litterature il existe plusieurs techniques de calcul du point xe. Si le treillis est de la hauteur nie alors on peut appliquer un approche iteratif classique (Hec77, Muc97]), en utilisant une liste de travail, initialisee par un parcours en profondeur d'abord du graphe de ot et qui, pendant l'algorithme, contient les etats de contr^ole dont l'invariant attache a change suite a une evaluation d'un predecesseur/successeur. Un algorithme similaire (NNH99]) calcule l'invariant attache directement a une

compo-3:Dans les analyses de ot de donn ees classiques on peut avoir des graphes de d ependances de contr^ole du programme (intra-proc edurals) ou des graphes de d ependances de contr^ole du sys-teme (inter-proc edurals)

4:qui etablit comment on combine l'information venant des successeurs/pr ed ecesseurs

5:qui est donn ee par les contraintes symboliques (constantes ou intervalles) attach ees aux entr ees de l'objectif de test

95 sante fortement connexe maximale. Si le treillis est de la hauteur in nie on utilise des techniques d'approximation approchee du point xe (CH78]) tirees de l'interpretation abstraite (l'elargissement et le retrecissement CC92b]) et aussi une iteration de chaque sous-composante fortement connexe (Bou92])

Le chapitre commence (section 5:1 p:97]) par une presentation des problemes de ot intra-processus (pour un seul aec). Outre la de nition d'un probleme de ot intra-processus on presente aussi les algorithmes qui permettent le calcul de la solution (ou une approximation de celle-ci) dans le cas des treillis de la hauteur nie/in nie.

On presente quatre analyses de ot de donnees6:

1. L'analyse d'activite des variables(Hec77]) calcule, dans un etat, les variables qui seront utilisees sur un chemin partant de cet etat et sans qu'une de nition de la variable existe sur ce chemin.

2. L'analyse d'utilite des variablesest similaire a l'analyse d'activite mais elle prend en compte aussi l'objectif de test.

On utilise la technique de tranchage7 (Wei84, Tip94]).

On analyse l'utilite des variables mais aussi celle des sorties ou entrees. Intui-tivement, une variable est utile dans un etat si sa valeur, par un encha^nement des dependances des donnees, est utile dans un certain endroit de la speci ca-tion8 (choisi par utilisateur). Une entree est utile si elle est une entree contr^olable par le testeur ou si on peut determiner qu'elle pourrait intervenir dans une exe-cution de l'implementation. De maniere similaire, une sortie est utile si on peut determiner qu'elle pourrait intervenir dans une execution de l'implementation. 3. La propagation des constantes (Kil73, WZ91]) calcule, pour chaque variable et

dans chaque etat de contr^ole, une approximation de l'ensemble des valeurs pos-sibles de la variable. L'approximation consiste dans trois valeurs: une constante

k (ce qui signi e que la variable a la valeur constante k dans l'etat respectif), soit une valeur qui denote l'ensemble de tout les valeurs (car l'algorithme dans ce cas

6:Ces analyses ont un int er^et dans la mesure ou, dans le cas de la g en eration automatique de cas de test, l'ot restreint la sp ecication: la partie contr^ole de l'otpermet, par l'interm ediaire des analyses d'activit e et d'utilit e, de r eduire la sp ecication et les contraintes attach ees aux parametres de signaux sont propag ees dans la sp ecication en utilisant les techniques de la propagation des constantes et celle des intervalles

7:slicing en anglais 8:critere de tranchage

a detecte au moins deux valeurs pour cette variable), soit une valeur qui denote le fait que la variable n'a pas ete de nie.

4. La propagation des intervalles entiers (CC92a]) calcule, pour chaque variable et dans chaque etat de contr^ole, un intervalle entier qui contient l'ensemble des valeurs possibles de la variable.

Dans la section 5:2 p:109] on presente une extension des problemes de ot de donnees intra-processus aux problemes de ot de donnees inter-processus (reseaux de aecs qui communiquent asynchronement via des les d'attente).

Dans la section 5:3 p:117] on presente les applications des analyses de ot de donnees ci-dessus:

1. Pour l'analyse d'activite il s'agit (BFG99a, BFG00a]) d'une transformation de la speci cation originale, en eliminant completement les variables inactives dans chaque etat et, dans chaque transition, une reinitialisation de chaque variable inactive dans l'etat suivant. La speci cation transformee est fortement bisimilaire a la speci cation originale.

2. Pour l'analyse de l'utilite il s'agit (BFG00b, BFGed]) d'une abstraction de la spe-ci cation initiale. On abstrait chaque action d'a ectation d'une variable inutile, les parametres inutiles des signaux des actions d'entree et ceux inutiles des des actions de sortie. La speci cation transformee est fortement bisimilaire a la speci cation originale.

3. Les resultats de la propagation des constantes et ceux de la propagation des inter-valles entiers seront utilises (BFG00b, BFGed]) pour eliminer les transitions dont la garde s'evalue a faux et donc qui ne seront jamais franchissables dans le modele. La speci cation transformee est fortement bisimilaire a la speci cation originale. 4. La propagation des constantes est appliquee aussi dans le recouvrement des

va-riables temporisees (BLM01]). La speci cation transformee est fortement bisimi-laire a la speci cation originale.

Des invariants plus precis que ceux fournis par la propagation des constantes/intervalles entiers pourraient ^etre obtenus en utilisant le cadre o ert par les problemes de ot de donnees avec le treillis de polyedres convexes (Ker94]) ou le treillis de congruences lineaires (Gra90]). On peut envisager aussi l'utilisation d'autres techniques, comme les techniques de calcul des invariants tirees des optimisations par parallelisation du code sequentiel (en e ectuant une analyse des dependances de donnees dans les nid-boucles (PW86, GKT91, CDRV96])) ou celles qui remplacent certaines transitions par

5.1. PROBL 

EMESDE FLOT DE DONN 

EES INTRA-PROCESSUS 97

des meta-transitions (Boi98, Ann01]) ou encore des techniques qui permettent le calcul d'invariants non-lineaires (BBF+00]).

5.1 Problemes de ot de donnees intra-processus

Denition 5.1 (Probleme de ot de donnees intra-processus)

Unprobleme de ot de donnees intra-processus(pfd) est un tuple (SLFT]X0E), ou:

1. S est unste: (Q$f

a

;!ja2$gq0).

2. L'espace des proprietesL est un treillis complet: (Lvtu?>). 3. L'espace des fonctionsmonotones9 (ou continues10) est F L!L t.q.:

(a) 1L>#?# 2F ,

(b) F est ferme par les operateurs (composition des fonctions), u et t (ou

fugf tg :L!L, (fug)(x) =f(x)ug(x) et (f tg)(x) = f(x)tg(x)). 4. Les fonction de transfertsont T : $! F. Si $ contient l'action alors on prend

T( ) = 1L.

5. L'operateur de combinaison est]2futg.

6. 2f!"g est la direction de ot: en avant (!) ou en arriere (").

7. X0 : Q ! L est une approximation initiale de la solution (habituellement X0 = #

> si] = u et X0 = #? si ] = t ou n'importe quelle approximation qui satisfait les conditions de l'observation 2:2 p:33].

8. L'operateur de ot estE : (Q!L)!(Q!L) ou, pour toutq2 Q:

E(X)(q) = X0(q)] ] a2 ] q0 2 8 < : Posta(q) si  = Prea(q) si  = ! T(a)(X(q0))

On s'interesse a la solution du pfd qui estlfp(E) ou gfp(E) (en fonction de l'operateur de combinaisont respectivement u).

9: toutes les fonctions sont monotones 10:idem 9 mais par rapport a la continuit e