raffinement de modèles jml julien groslambert lifc besançon réunion geccoo - 25 octobre 2005 fre...

36
Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Upload: caroline-froment

Post on 04-Apr-2015

115 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Raffinement de modèles JML

Julien Groslambert

LIFC Besançon

Réunion GECCOO - 25 Octobre 2005

FRE 2661

Page 2: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

PLAN

Contexte et enjeux

Raffinement préservant les sûretés

Conclusion et travaux futurs

Page 3: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Contexte et enjeux

Politique de

sécurité

Cahier des charges

Code Java de l’application

Propriétés de

sécurité

Expression sur un cahier des charges souvent informel

Détails et décisions d’implémentations cachés

Difficile d’exprimer des erreurs de bas niveau.

Vérification à l’aide d’annotations JML

Détection des erreurs type NullPointerException…

Propriétés de haut niveau pas facilement exprimable

AnnotationsJML

Page 4: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Contexte et enjeux

Politique de

sécurité

Cahier des charges

Code Java de l’application

Propriétés de

sécurité

AnnotationsJML

Vérificationdirecte difficile

Page 5: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Contexte et enjeux

Politique de

Sécurité

Cahier des charges

Code Java de l’application

Propriétés de

sécurité

Modèle abstrait JML

VérificationsimplifiéeExpression

simplifiée

Vérificationcomplexe

Vérification des propriétés de haut niveau sur un modèle de haut niveau (abstrait)

Problème du lien avec l’application

Page 6: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Contexte et enjeux

Politique de

Sécurité

Cahier des charges

Code Java de l’application

Propriétés de

sécurité

AnnotationsJML du code

Modèle abstrait JML

Modèle raffiné 1

Modèle raffiné n

Préservation

Proposition : Introduire un raffinement de modèle JML qui préserve les propriétés du modèle abstrait

Page 7: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

PLAN

Contexte et enjeux

Raffinement préservant les sécurités

Conclusion et travaux futurs

Page 8: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Raffinement

Idée du raffinementAjouter des détails à un modèle abstrait pour le rendre plus concret

Préserver les propriétés vérifiées sur le modèle abstrait.

Notion différente du sous-typage

Pour un type de propriété donné, trouver la bonne relation de raffinement pour préserver ce type de propriété

Page 9: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Exemple : Spécification de Demoney

Modélisation d’une interface de Demoney d’après le cahier des charges

1er modèle abstrait : Modélisation de la personnalisation

Page 10: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Exemple: Spécification de Demoney

public interface model1{boolean personnalized;

/*@ behavior @ requires @ personnalized == false; @ assignable personnalized; @ ensures personnalized == true; @*/void storeData();

/*@ behavior @ requires @ personnalized == true; @ assignable \nothing; @*/void initializeTransaction();

/*@ behavior @ requires @ personnalized == true; @ assignable \nothing; @*/void completeTransaction();

/*@ assignable \nothing; @*/void pinChangeUnblock();

}

Page 11: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Vérification de propriété

Expression d’une propriété de sûretéAfter storeData() normal always storeData() not enabled; (AMAST’02)

Génération d’annotations avec JAG

Vérification de la consistance du modèle complétée (ZB’05)

Page 12: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Raffinement de données

Notations Cr raffine Ca Ca Cr

Ca vérifie une propriété Ca |=

Raffinement des donnéesPrédicat JML Ic.

Lien entre variables abstraites et raffinées.

Changement d’espace d’état.

Ajout de nouvelles variables durant le raffinement.

Page 13: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Raffinement de classes

Classe Ca {

//@ initially Inita

//@ invariant Ia;

//@ constraint Ha;…

Classe Cr {

//@ initially Initr

//@ invariant Ir;

//@ constraint Hr;…

Renforcement de l’initialisation

Initr && Ic ==>Inita

Renforcement de l’invariant

Ir && Ic ==> Ia

Renforcement des contraintes

Hr && Ic && \old(Ic) ==> Ha

Page 14: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Raffinement de méthodes

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 15: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Renforcement des préconditions

Obligation de preuve

Pr && Ic ==> Pa

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 16: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Renforcement des conditions de divergence

Obligation de preuve

Dr && Ic ==> Da

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 17: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Pas d’ajout d’effet de bord

Obligation de preuve (Anew nouvelles variables)

X. (X Ar && Ic ==> (X Aa || X Anew))

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 18: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Renforcement des post-conditions

Obligation de preuve

Qr && Ic && Pa && !Da && Pr && ! Dr ==> Qa

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 19: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Inclusion des types d’exceptions

Obligation de preuve

\typeof(Er) \typeof(Ea)

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 20: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Renforcement des post-conditions exceptionnelles

Obligation de preuve

Rr && Ic && Pa && !Da && Pr && ! Dr ==> Ra

/*@ behavior

@ requires Pa;

@ diverges Da;

@ assignable Aa;

@ ensures Qa;

@ signals (Ea e) Ra

@*/

Ma();

/*@ behavior

@ requires Pr;

@ diverges Dr;

@ assignable Ar;

@ ensures Qr;

@ signals (Er e) Rr

@*/

Mr();

Page 21: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Théorème

Soit une propriété de sûreté

(Ca |= ) && (Ca Ic Cr) ==> (Cr |= )

Idée de la preuve : on montre que les exécutions de Cr sont simulées par les exécutions de Ca

Page 22: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Appel de Mr

Page 23: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Appel de Mr

Pr

Page 24: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Appel de Mr

Pr

Pa

Page 25: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

Page 26: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

Qa

Page 27: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Page 28: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Mr exceptional

Rr

Page 29: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Mr exceptional

Rr

Ma exceptional

Ra

Page 30: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Exemple sur Demoney

Modèle abstrait: Modélisation de la personnalisation

1er raffinement : Modélisation des niveaux d’accèsIntroduction d’une variable AccessLevel représentant le niveau d’accès

Mise à jour des spécifications de méthode

Page 31: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Exemple sur Demoney

public interface model2{ boolean personnalized; int accessLevel; /*@ invariant 1 <= accessLevel @ && accessLevel <= 4; @*/

/*@ requires @ personnalized == false @ & accessLevel == 4; @ assignable personnalized; @ ensures personnalized == true; @*/

void store_data();

/*@ requires @ personnalized == true @ && accessLevel >=2 @ && accessLevel <= 3; @ assignable \nothing; @*/

void initialize_transaction();

/*@ behavior @ requires @ personnalized == true; @ && accessLevel >=2 && @ accessLevel <= 3; @ assignable \nothing; @*/void complete_transaction();

/*@ requires accessLevel == 4 @ assignable \nothing; @*/void pin_change_unblock();

}

Page 32: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Spécification de Demoney

Specification de Demoney en suivant la specification publique.

Modèle Abstrait : Personnalisation

Raffinement 1 : Niveaux d’accès

Raffinement 2 : Code Pin

Raffinement 3 : Balance et transactions

But : vérifier à chaque niveau les propriétés et s’approcher de l’implantation

Page 33: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Propriétés supplémentaires

Ajout de nouvelles méthodes lors du raffinement.Les nouvelles méthodes ne peuvent modifier les variables abstraites

Préservation de l’atomicitéLes nouvelles méthodes ne peuvent pas être déclenchées sous certaines conditions

Préservation des vivacitésLe système ne doit pas comporter de nouveaux blocages

Les nouvelles méthodes doivent faire décroître un variant.

Page 34: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

PLAN

Contexte et enjeux

Raffinement préservant les sécurités

Conclusion et travaux futurs

Page 35: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Conclusion

Premières réflexions sur une notion de raffinement

Différentes applicationsDéveloppement étape par étape d’une spécification

Exemple de Demoney en cours.

Développement étape par étape d’un algorithmeExemple du Dutch National Flag.

Vérification de l’intégration d’une classe dans un environnement

Page 36: Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

Travaux futurs

Ecriture d’un outil de génération d’obligations de preuve de raffinement.

OP au format Why (modèle de Krakatoa) et Jack

Environnement de développement par raffinementDéveloppement par raffinement d’algorithmes avec pointeurs.

Schorr-Wait, inversion de liste chaînée…Intégration des travaux de Sylvain Boulmé

Lien raffinement / sous-typageComparaison fine des deux notionsCollaboration