Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parCaroline Froment Modifié depuis plus de 10 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.