raffinement de modèles jml

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

Upload: ursula-heath

Post on 31-Dec-2015

38 views

Category:

Documents


0 download

DESCRIPTION

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. Contexte et enjeux. Politique de sécurité Cahier des charges. Propriétés de sécurité. - PowerPoint PPT Presentation

TRANSCRIPT

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

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

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

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

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

PLAN

Contexte et enjeux

Raffinement préservant les sécurités

Conclusion et travaux futurs

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é

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

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();

}

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)

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.

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

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();

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();

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();

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();

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();

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();

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();

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

Idée de la preuve

Appel de Mr

Idée de la preuve

Appel de Mr

Pr

Idée de la preuve

Appel de Mr

Pr

Pa

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

Qa

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Mr exceptional

Rr

Idée de la preuve

Mrcalled

Pr

Pa Macalled

Mr normal

Qr

QaMr normal

Mr exceptional

Rr

Ma exceptional

Ra

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

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();

}

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

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.

PLAN

Contexte et enjeux

Raffinement préservant les sécurités

Conclusion et travaux futurs

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

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