• Aucun résultat trouvé

Utilisation des CHRs pour générer des cas de test fonctionnel pour la Machine Virtuelle Java Card

N/A
N/A
Protected

Academic year: 2021

Partager "Utilisation des CHRs pour générer des cas de test fonctionnel pour la Machine Virtuelle Java Card"

Copied!
11
0
0

Texte intégral

(1)

HAL Id: inria-00000075

https://hal.inria.fr/inria-00000075

Submitted on 26 May 2005

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Utilisation des CHRs pour générer des cas de test fonctionnel pour la Machine Virtuelle Java Card

Sandrine-Dominique Gouraud, Arnaud Gotlieb

To cite this version:

Sandrine-Dominique Gouraud, Arnaud Gotlieb. Utilisation des CHRs pour générer des cas de test

fonctionnel pour la Machine Virtuelle Java Card. Premières Journées Francophones de Programmation

par Contraintes, CRIL - CNRS FRE 2499, Jun 2005, Lens, pp.383-392. �inria-00000075�

(2)

pour la Mahine Virtuelle Java Card

S.-D. Gouraud et A. Gotlieb

IRISA-CNRS-INRIA, UMR 6074

Campus Universitairede Beaulieu

35042 RENNESCedex

{gouraud,gotlieb}irisa.fr

Résumé

Le test fontionnel basé sur une spéiation for-

melle onsiste à dériver des as de test à partir d'un

modèleformelpourdéteterdesfautesdansuneimplé-

mentation.Dansnostravaux,nousétudionsl'utilisation

desConstraint HandlingRules (CHRs)pourautomati-

serlagénérationdeasdetestfontionnelbaséesurun

modèleformel.Notreétudedeasestun modèledela

MahineVirtuelleJavaCard(JCVM)éritdansunsous

ensemble du langage Coq. Dans et artile,nous dé-

nissons unetradutionautomatique dee modèlesous

formederèglesCHRdanslebutdegénérerdesasde

testpourlaJCVM.Lepointdenotreapproheréside

dansl'utilisationdesdeepguardspourmodéliserdèle-

ment la sémantique de notre modèle formel. Ensuite,

nousproposonsuneapproheglobalepourlagénération

de asdetest fontionnelbasée surlesCHRsquipeut

êtreappliquéeàd'autresmodèlesformels.

1 Introdution

Le test fontionnel onsiste à 1) séletionner des

donnéesdetestàpartird'unmodèle(formel),2)exé-

uteruneimplémentationenutilisantetensemblede

tests, puis3)vérierlesrésultatsàl'aided'unorale.

En test fontionnel, un orale est une proédure a-

pabledansertainessituationsdeprédirelesrésultats

attendusd'unprogramme.Lesmodèlesformelslassi-

quementutilisésentestfontionnelsontlesspéia-

tions algébriques[7℄,lesmahinesB[6℄ ouenoreles

mahinesàétatsnis.Detellesspéiationsformelles

sontexploitéesparlesoutilsde preuveouparlesvé-

riateurs de modèles pour prouver la orretion de

l'implémentation mais quelquefois, il est souhaitable

delesutiliserpourgénérerdesensemblesdetests.

Dans nos travaux, nous nous intéressons au test

fontionnel basé sur des spéiations JSL (Jakarta

SpeiationLanguage).JSL[8℄estunlangageformel

issud'unsous-ensembledulangageCoqetquiestbasé

assistantde preuves destinéàl'origine àprouverdes

théorèmesd'ordresupérieur[1℄.LelangageJSL aété

déniand'obtenirunlangagedespéiationfaileà

lireetindépendantdetoutoutil.Dansleadredupro-

jetRNTLCASTLES[20℄dontl'objetifestdedénir

unenvironnementpourautomatiserlaertiationde

laplate-formeJavaCard[21℄,JSLaétéhoisiomme

base ommune. Une spéiation JSL de laMahine

Virtuelle Java Card a été dénie [3, 4℄ dans le but

devérierdespropriétésdeséuritédelaplate-forme

JavaCard.

La Mahine Virtuelle Java Card (JCVM) exéute

toutes les instrutions (ou les byteodes) suppor-

tées par Java Card (new, push, pop, invokestati,

invokevirtual,et.).Notre objetif onsisteàgéné-

rer des ensembles de tests àpartir des spéiations

JSL de haque instrution, à traduire es tests abs-

traits entests exéutables,àlesexéutersurl'implé-

mentationpuisàvérierlesrésultatsparrapportaux

spéiations.Danset artile,nousnous intéressons

àlapremièreetàladernièretâhesqui sontdespro-

blèmes diiles en test de logiiel. La onrétisation

etl'exéution destestsnesontpasdisutéesii.

Dansnostravaux,nousavonsétudiél'utilisationdes

Constraint Handling Rules (CHRs) pour générerdes

as de test et des orales àpartir de la spéiation

JSL de la JCVM. Nous dénissons des objetifs de

test baséssur laouverture derèglesde rééritureet

ladétetiondenon-onformité,etnousfournissonsdes

tehniquespourgénérerdesasdetestqui répondent

àesobjetifs.Notreidéeestdebénéierdelahaute

délarativitédesCHRspourexprimerdansunmême

adre àla fois lesobjetifs de test et lesrègles de la

spéiationJSL.Puis,enutilisantlapropagationtra-

ditionnelledesCHRsetl'énumération,nousgénérons

des tests et des orales omme solutions du système

deontraintes.

Cetartileestorganisédelafaçonsuivante:lase-

(3)

ution;lasetion 3estonsaréeàlasyntaxeet aux

sémantiquesdesCHRs;lasetion4introduitlesrègles

detradutionquipermettentdepasserdesrèglesJSL

àdes règlesCHR; dans lasetion 5nous présentons

deuxtehniquespourgénérerdesasdetestfontion-

nel selon des objetifs de test et nous disutons des

appliationsautestdelaJCVM;lestravauxonnexes

sontprésentés ensetion 6,puis lasetion 7termine

l'artileparnosperspetivesdereherhe.

2 Le Langage de Spéiation Jakarta

Le Langage de Spéiation Jakarta (JSL) [8℄ est

unpetitlangagequipermetdedérirelamahinevir-

tuelle dans un style mathématique neutre. C'est un

langagedepremierordreaveunsystèmedetypepoly-

morphiquelesfontionssontdéritespardesrègles

derééritureonditionnelles.

2.1 Lasyntaxe

LesexpressionsdulangageJSLsontdestermesdu

premierordreaveégalité(==)onstruitsàpartirde

variableset desymbolesdeonstante.Unsymbolede

onstante est soit un symbole de onstruteur intro-

duit par les dénitions de type soit un symbole de

fontionintroduitparlesdénitionsdefontion.

Soient

C

unensembledesymbolesdeonstruteur,

F

un ensemble de symboles de fontion et

V

un en-

semble de variables. L'ensemble des expressions JSL

est l'ensemble

E

de termes déni par

E ::= V|E ==

E|CE

|FE

. Soit

var

une fontiondéniesur

E → V

quiretournel'ensembledesvariablesd'uneexpression

JSL.

Chaque symbole de fontion est déni par un en-

semblede règlesderééritureonditionnelles.Ce for-

malismepeuommunen rééritureest enfait prohe

deslangagesfontionnelsaveltrageetdesassistants

de preuves. Ces règles de réériture onditionnelles

sontorientéesetdelaformesuivante :

l

1

→ r

1

, . . . , l

n

→ r

n

⇒ g → d

:

g = f v

1

. . . v

m ave

∀i, v

i

∈ V

et

∀i, j, v

i

6= v

j

l

iestsoitunefontionquin'introduitpasdenou- vellesvariablessoitunevariabletelleque

1 ≤ i ≤ n, var(l

i

) ⊆ var(g) ∪ var(r

1

) ∪ . . . ∪ var(r

i−1

)

r

i est une valeur appelée motif (pattern) et

onstruite à partir de variables et de onstru-

teurs.Un motifneontientquedesnouvellesva-

riables,doitêtrelinéaire 1

ettelque

1 ≤ i, j ≤ n

et

i 6= j

,

var(r

i

)∩var(g) = ∅

et

var(r

i

)∩var(r

j

) = ∅

1

Touteslesvariablesdoiventêtrediérentes :letermeC v v

v∈ VetC∈ Cn'estpasautorisé.

d

est une expression telle que

var(d) ⊆ var(g) ∪ var(r

1

) . . . ∪ var(r

n

)

Sémantiquement, une règle signie que si pour tout

i

, le terme

l

i peut être réérit en le motif

r

i, alors

l'expression

g

serééritenl'expression

d

.Parlasuite,

esrèglesserontappeléesdesrèglesJSL.

L'exemple1donneunedénitionJSLdelafontion

plus

extraitedelaspéiationdelaJCVM.

Exemple 1(Lesrègles JSL pour dénir

plus

)

data nat = 0 | S nat.

f unction plus :=

h plus

_

r1i n → 0

⇒ (plus n m) → m;

h plus

_

r2i n → (S p)

⇒ (plus n m) → (S (plus p m)).

n

,

m

et

p

sont des variables,

0

et

S

sont des

symboles de onstruteur et plus est un symbole de

fontion. La onstrution

h. . .i

permet de donner un

nom à une règle :la première règle de

plus

est ainsi

nommée

hplus

_

r1i

etla seonde

hplus

_

r2i

.

Des fontionspartielles et des fontionsindétermi-

nistespeuventaussiêtredéniesenJSL.

2.2 Lemodèle d'exéution

Étantdonnéunterme

e

,nousrappelonsquehaque

sous-termede

e

peutêtreidentiéparuneposition

p

:

le terme

e

|p est lesous-terme de

e

qui setrouve àla

position

p

. L'expression

e[p ← d]

signie que dans le

terme

e

,lesous-termesituéàlaposition

p

estremplaé

parleterme

d

.Unesubstitution

θ

peutêtrevueomme

unrenommagedevariables.

Soit

R

un ensemble derègles JSL.Une expression

e

est réériteenuneexpression

e

s'ilexisteune règle

l

1

→ r

1

, . . . , l

n

→ r

n

⇒ g → d

dans

R

,une position

p

dans

e

et unesubstitution

θ

telles que:

e

|p

= θg

et

e

= e[p ← θd]

pour

1 ≤ i ≤ n, θl

i

θr

i

estlafermeture

réexiveettransitivede

Exemple 2

Étant donné la dénition JSL de plus, le terme

(plus 0 (plus (S 0) 0))

peutseréérireenlemotif

(S 0)

en trois dérivations diérentes(ii, onuentes):

(plus 0 (plus (S 0) 0)) →

r1

(plus (S 0) 0)

r2

(S (plus 0 0)) →

r1

(S 0)

(plus 0 (plus (S 0) 0)) →

r2

(plus 0 (S (plus 0 0)))

r1

(S (plus 0 0)) →

r1

(S 0)

(plus 0 (plus (S 0) 0)) →

r2

(plus 0 (S (plus 0 0)))

r1

(plus 0 (S 0)) →

r1

(S 0)

(4)

Cette setionest inspirée del'artile [12℄ de Thom

Frühwirth,dulivre[13℄etdusiteWebdédiéauxCHRs

[22℄.LelangageConstraintHandlingRules(CHR)est

un langage à hoix dénitifs (ommitted-hoie) qui

se ompose de règles gardées dont les multi-têtes se

réérivent en des ontraintes plus simples jusqu'à e

qu'elles soientrésolues.Ce langageétendtoujoursun

langagehtequipossèdedesapaitésderésolutionde

ontraintes.DesimplémentationsdeCHRssontdispo-

nibles enElipseProlog,SistusProlog,HAL,et.

LesCHRs sontbaséessurdeuxprinipes:laSim-

pliation qui onsiste à remplaer des ontraintes

pardenouvellesontrainteslogiquementéquivalentes

mais plus simples et la Propagation qui onsiste à

rajouter de nouvelles ontraintes logiquement redon-

dantesmaisquipourraientapporterdenouvellessim-

pliations.

Dans e langage, une ontrainte est un prédiat

dupremier ordrepartiulier.Ceprédiat est soitune

ontrainteprédénie (built-in)qui existedéjàdans le

langage hte soit une ontrainte CHR (user-dened)

quiestdénieparl'utilisateurparunprogrammeCHR

(ensembleniderèglesCHR).

3.1 Lasyntaxe

IlexistetroissortesderèglesCHR:

Lesrèglesdesimpliationquisontdelaforme

H <=> G | B

Lesrèglesdepropagationquisontdelaforme

H ==> G | B

Lesrèglesdesimpagationquisontdelaforme

H

\

H <=> G | B

Plus préisément, les multi-têtes

H

et

H

sont des

onjontions non-vides de ontraintes CHR, la garde

G

estune onjontionde ontraintes prédénieset le

orps

B

est une onjontion non-vide de ontraintes

prédénieset deontraintesCHR.

Dans ette setion, nous nous onentrons sur les

règles de simpliation et de propagation qui or-

respondent expliitement aux deux prinipes sur les-

quellesreposentlesCHRs.

Exemple 3(Les règlesCHR pour dénir plus)

R1 plus(A,B,R) <=> A=0 | R=B.

R2 plus(A,B,R) <=> A=s(C)

| plus(C,B,D), R=s(D).

C plus(A,B,R) ==> plus(B,A,R).

Laonstrution

. . .

permet de donner unnom àune

règle CHR : la première règle de simpliation de

plus est ainsi nommée R1, la seonde R2 et la règle

de propagationestnomméeC.

Étant donné une théorie sur les ontraintes notée

CT(ave

true

,

f alse

etuneontrainted'égalité

=

)qui

détermine le sens des ontraintes prédénies, l'inter-

prétation délaratived'un programme CHR est don-

néepar une onjontion de formules logiquesuniver-

sellementquantiées.Ilyauneformuleparrègle.

Si

x ¯

dénotelesvariablesapparaissantdanslatête

H

et

y ¯

(resp.

z ¯

)lesvariablesapparaissantdanslagarde (resp.orps)delarègle,alors:

Si lagarde est satisfaite,une règle CHRde sim-

pliationestuneéquivalenelogique:

∀¯ x(∃ yG ¯ → (H ↔ ∃ zB)) ¯

Si lagarde est satisfaite, une règleCHR de pro-

pagationest uneimpliation:

∀¯ x(∃ yG ¯ → (H → ∃ zB)) ¯

LasémantiqueopérationnelledesprogrammesCHR

est donnée par un système de transitions haque

étatest uneonjontion de ontraintes. L'état initial

estlebutàrésoudre.Unétatnalestsoituneonjon-

tiononsistanteetdanseas'estunsuès,soitune

onjontioninonsistanteetdanseas'estunéhe.

Il y a quatre transitions diérentes : une transition

pourrésoudrelesontraintesprédénies(Résoudre)et

trois transitions pourappliquer haque type deCHR

(Simplier,Propageret Simpagation).

Résoudre

Si

C

estune ontrainteprédénie

Et

CT | = (C ∧ D) ↔ D

Alors C,D

7→

D

Simplier

Si H <=> G | B

Et

CT | = D → ∃¯ x(H = H

∧ G)

Alors H

,D

7→

D,H=H,B

Propager

Si H ==> G | B

Et

CT | = D → ∃¯ x(H = H

∧ G)

Alors H

,D

7→

H,D,H=H,B

Les règles sont appliquées de manière équitable

'est-à-dire que toute règle qui est appliable à une

hane d'être appliquée. De plus, la règle de propa-

gation est appliquée au plus une fois sur une même

ontrainte an d'éviter une non-terminaison triviale.

LesprogrammesCHRpeuventêtrenon-onuents.De

plus, si les gardes des règles pour un même prédiat

ne sontpas mutuellementexlusives,ils peuventêtre

indéterministes.

Exemple4 (Utilisationsimpledes CHRs)

CesdeuxexemplesmontrentommentlesCHRsfon-

tionnent.

plus(s(0),s(0),R)

7→

R2 plus(0,s(0),R1), R=s(R1)

7→

R1 R1=s(0), R=s(R1)

7→

R´esoudre R=s(s(0))

(5)

Ceseondexempleexploite larèglede propagation:

sansetterègle,la ontrainteplus(M,s(0),s(s(0)))

serait suspendue.

plus(M,s(0),s(s(0)))

7→

C plus(M,s(0),s(s(0))), plus(s(0),M,s(s(0)))

7→

R2 plus(M,s(0),s(s(0))), plus(0,M,s(0))

7→

R1 plus(M,s(0),s(s(0))), M=s(0)

7→

Resoudre´ plus(s(0),s(0),s(s(0))), M=s(0)

7→

R2 plus(0,s(0),s(0)), M=s(0)

7→

R1 s(0)=s(0), M=s(0)

7→

Resoudre´ M=s(0)

LelangageCHRaétéonçupourériredessolveurs

de ontraintes eaes et génériques [12℄. L'exemple

suivantmontreundesprinipauxintérêtsdesCHRs:

Exemple5

plus(M,0,N)

7→

C plus(M,0,N), plus(0,M,N)

7→

R1 plus(M,0,N), M=N

7→

Resoudre´ plus(M,0,M), M=N

Ii, la relation

M = N

est déduite alors queene

serait pas le as ave un solveur traditionnel sur les

termesde Herbrand.

4 De JSL à CHR

Lapremièreétapedenotreapproheonsisteàtra-

duireautomatiquementlesspéiationsJSLenCHR.

Les règles de tradution sont données sous forme de

jugements.

4.1 Lesrègles detradution

Ilyatroissortesderèglesdetradution:unerègle

pourlesexpressions,une pourlesrèglesderéériture

dontlesymboleest

etunepourlesrèglesJSLdont

lesymboleest

.Danslesjugementssuivants,lava-

riablerreprésenteratoujoursunenouvellevariable.

Le jugement

e t ⊳ {C}

signie que l'expression JSL

e

setraduitenuntermetsouslesontraintesC.

LetermetpeutêtreunevariableProlog,unatomeou

uneontrainteCHR.

v v ⊳ {true} c c ⊳ {true}

e

1

t

1

⊳ {c

1

} . . . e

n

t

n

⊳ {c

n

} c e

1

. . . e

n

c(t

1

, . . . , t

n

) ⊳ {c

1

, . . . , c

n

}

e

1

t

1

⊳ {c

1

} . . . e

n

t

n

⊳ {c

n

} f e

1

. . . e

n

r ⊳ {c

1

, . . . , c

n

, f(t

1

, . . . , t

n

, r)}

Le jugement

e → p C

signie que la règle qui

permet deréérireune expression JSL

e

en unmotif

p

setraduit enunensemblede ontraintes C. Si l'ex-

pression

e

estunevariable,l'ensembledeontraintesC

estréduitàuneontrainted'égalitéentredeuxtermes

e=p. Si l'expression

e

est un appel de fontion, l'en-

semble deontraintes C ontient alorsles ontraintes

quiportentsurlesargumentsdelafontionauxquelles

s'ajoutelaontrainte CHRdénissantlafontion.

v → p v = p

e

1

t

1

⊳ {c

1

} . . . e

n

t

n

⊳ {c

n

} p p ⊳ {true}

f e

1

. . . e

n

→ p c

1

, . . . , c

n

, f(t

1

, . . . , t

n

, p)

Le jugement

l

1

→ r

1

, . . . , l

n

→ r

n

⇒ g → d g

⇔ guards|body

signie que la règle JSL

l

1

→ r

1

, . . . , l

n

→ r

n

⇒ g → d

setraduitparunerègleCHR

g

⇔ guards|body

g

estlaontrainteCHRassoiée

àl'expression

g

, guardsest l'ensemble deontraintes

orrespondant àla tradution des règlesde laforme

l

i

→ r

i etbodyest l'ensemblede ontraintes qui or-

respondentàlatradutiondel'expression

d

.

l

1

→ r

1

g

1

. . . l

n

→ r

n

g

n

e t ⊳ {B}

l

1

→ r

1

, . . . , l

n

→ r

n

⇒ f v

1

. . . v

k

→ e

f(v

1

, . . . , v

k

, r) ⇔ g

1

, . . . , g

n

|B, r = t.

Notonsquel'indéterminisme,laonueneet laré-

ursivité sontpréservésparlatradution.

4.2 LesDeep Gua rds

Dans notre tradution, nous onsidérons que les

gardes des CHRs peuvent ontenir à la fois des

ontraintesProloget desontraintesCHR. Cetteap-

prohe,désignéesousletermededeepguards,abeau-

oup été étudiée par le passé. Par exemple, Smolka

rappelle dans son artile [17℄ que "les deep guards

onstitueleméanismeentralpourombinerlespro-

essusetlareherhe(enapsulée)pourlesproblèmes

de résolution". Les deep guards sont également utili-

sés dans plusieurssystèmes omme AKL, Oz [19℄ ou

enore HAL [10℄. Les deep guards sontbasées sur la

manièredontl'impliationdesgardesesttestéequand

ellessontomposées nonseulementde prédiats pré-

dénismaisaussid'appelsdeontraintes.Tehnique-

ment, le test d'impliation d'une ontrainte est ap-

pelé ask onstraint alors quel'ajoutd'une ontrainte

au magasin de ontraintes est appelé tell onstraint.

Ces deux opérations sont lairement diérentes. Par

exemple, si le magasin de ontraintes ontient

Z = f (X, Y ), Y = a

alors un tell onstraint

X = Y

=

dénote l'uniation dePrologdonneraunmagasin

deontraintesontenant

Z = f (a, a)

tandisqueleask

onstraintorrespondantsuspendrajustelaontrainte

jusqu'àequ'elleousanégationsoitimpliquéeparle

magasindeontraintes.Notonsquehaquefoisqu'une

Références

Documents relatifs

Important : La machine virtuelle Java doit être installée sur la version RELEASE du simulateur Palm TX (simulateur non lancé).. ¾ Décompressez le fichier

 Communications avec appels de méthode directs. 

3rd International Workshop on Distributed Auto-adaptive and Reconfigurable Systems, ICDCS’2003, IEEE, Providence, Rhode Island, Mai 2003.].

I Les variables locales sont utilisées pour stocker les arguments effectifs des appels de méthode. Par convention, le premier argument (d’indice 0) contient toujours la référence

Les modifications sont à deux niveaux : (i) dans la représentation interne des classes Java, pour contenir le TCM et (ii) dans le traducteur de bytecode Java vers le compilateur

Java est facile à paralléliser et est capable de faire interagir de multiples threads avec une instance unique de R.. public void

– Chargeur, éditeur de liens, Initialisation de la machine – Création, affectation des champs d'instances ou de classe – Segment d'activation, méthodes statiques et virtuelles,

Dans le sens que… alors maintenant on va dire avec le coronavirus c’est clair que ça fait tout de suite tilt… la personne ou l’animal peut être en danger, mais encore une