La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661."— Transcription de la présentation:

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

2 PLAN Contexte et enjeux Raffinement préservant les sûretés Conclusion et travaux futurs

3 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 Annotations JML

4 Contexte et enjeux Politique de sécurité Cahier des charges Code Java de l’application Propriétés de sécurité Annotations JML Vérification directe difficile

5 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érification simplifiée Expression simplifiée Vérification complexe Vérification des propriétés de haut niveau sur un modèle de haut niveau (abstrait) Problème du lien avec l’application

6 Contexte et enjeux Politique de Sécurité Cahier des charges Code Java de l’application Propriétés de sécurité Annotations JML 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

7 PLAN Contexte et enjeux Raffinement préservant les sécurités Conclusion et travaux futurs

8 Raffinement Idée du raffinement Ajouter 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é

9 Exemple : Spécification de Demoney Modélisation d’une interface de Demoney d’après le cahier des charges 1 er modèle abstrait : Modélisation de la personnalisation

10 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(); … }

11 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)

12 Raffinement de données Notations C r raffine C a C a  C r C a vérifie une propriété   Ca |=  Raffinement des données Prédicat JML I c. Lien entre variables abstraites et raffinées. Changement d’espace d’état. Ajout de nouvelles variables durant le raffinement.

13 Raffinement de classes Classe Ca { //@ initially Init a //@ invariant I a ; //@ constraint H a ; … Classe Cr { //@ initially Init r //@ invariant I r ; //@ constraint H r ; … Renforcement de l’initialisation Init r && I c ==>Init a Renforcement de l’invariant I r && I c ==> I a Renforcement des contraintes H r && I c && \old(I c ) ==> H a

14 Raffinement de méthodes /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

15 Renforcement des préconditions Obligation de preuve P r && I c ==> P a /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

16 Renforcement des conditions de divergence Obligation de preuve D r && I c ==> D a /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

17 Pas d’ajout d’effet de bord Obligation de preuve (A new nouvelles variables)  X. (X  A r && I c ==> (X  A a || X  A new )) /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

18 Renforcement des post- conditions Obligation de preuve Q r && I c && P a && !D a && P r && ! D r ==> Q a /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

19 Inclusion des types d’exceptions Obligation de preuve \typeof(E r )  \typeof(E a ) /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

20 Renforcement des post- conditions exceptionnelles Obligation de preuve R r && I c && P a && !D a && P r && ! D r ==> R a /*@ behavior @ requires P a ; @ diverges D a ; @ assignable A a ; @ ensures Q a ; @ signals (E a e) R a @*/ M a (); /*@ behavior @ requires P r ; @ diverges D r ; @ assignable A r ; @ ensures Q r ; @ signals (E r e) R r @*/ M r ();

21 Théorème Soit  une propriété de sûreté (  Ca |=  ) && (C a  Ic C r ) ==> (  Cr |=  ) Idée de la preuve : on montre que les exécutions de  Cr sont simulées par les exécutions de  Ca

22 Idée de la preuve Appel de Mr

23 Idée de la preuve Appel de Mr Pr

24 Idée de la preuve Appel de Mr Pr Pa

25 Idée de la preuve Mr called Pr Pa Ma called Mr normal Qr

26 Idée de la preuve Mr called Pr Pa Ma called Mr normal Qr Qa

27 Idée de la preuve Mr called Pr Pa Ma called Mr normal Qr Qa Mr normal

28 Idée de la preuve Mr called Pr Pa Ma called Mr normal Qr Qa Mr normal Mr exceptional Rr

29 Idée de la preuve Mr called Pr Pa Ma called Mr normal Qr Qa Mr normal Mr exceptional Rr Ma exceptional Ra

30 Exemple sur Demoney Modèle abstrait: Modélisation de la personnalisation 1 er raffinement : Modélisation des niveaux d’accès Introduction d’une variable AccessLevel représentant le niveau d’accès Mise à jour des spécifications de méthode

31 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(); … }

32 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

33 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és Le système ne doit pas comporter de nouveaux blocages Les nouvelles méthodes doivent faire décroître un variant.

34 PLAN Contexte et enjeux Raffinement préservant les sécurités Conclusion et travaux futurs

35 Conclusion Premières réflexions sur une notion de raffinement Différentes applications Développement étape par étape d’une spécification Exemple de Demoney en cours. Développement étape par étape d’un algorithme Exemple du Dutch National Flag. Vérification de l’intégration d’une classe dans un environnement

36 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 raffinement Dé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-typage Comparaison fine des deux notions Collaboration


Télécharger ppt "Raffinement de modèles JML Julien Groslambert LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661."

Présentations similaires


Annonces Google