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

Slides:



Advertisements
Présentations similaires
Spécification et qualité du logiciel
Advertisements

SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Activités de Recherche et Intégration à l’Equipe SIMBAD
M.E.D.A.L. Module dEnseignement à Distance pour lArchitecture Logicielle Alain VAILLY Diapositive n° 1 IUP MIAGE - Université de NANTES IUP-MIAGE 3ème.
Régine Laleau Centre d'Étude et de Recherche en Informatique du CNAM
1 La gestion des exceptions C++ Un programme peut rencontrer des conditions exceptionnelles qui risquent de compromettre la poursuite de son exécution.
D1 - 01/03/2014 Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Utilisation des outils d ’analyse sémantique de code à EDF
Version du 22 juin Un outil danalyse statique (synthèse de propriétés) de preuve de propriétés de logiciels écrits en langage C ANSI, utilisé dans.
Quoi ? Un tampon.
1 B Système Enjeux et principes Cours DESS Nantes 04 Décembre 2002 Didier ESSAME.
B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche.
26/05/071 Présentation de JUnit Partie 2 NICOLAS BOUSSEKEYT CNAM
Introduction à la POO: Les classes vs les objets
Processus de validation basée sur la notion de propriété
Chapitre III Héritage (début)
Tests Programmation par contrats
Amal HADDAD 1ère année de thèse INPG Directeurs :
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
le profil UML en temps réel MARTE
Classes abstraites et Interfaces
Complément Le diagramme des classes
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
CSI3525: Concepts des Languages de Programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Animateur : Med HAIJOUBI
Les assertions en Java.
Test logiciel Xavier Baril.
Réunion projet ACI GECCOO 10 mars 2006
Spécification de Demoney en JML par raffinement Pierre-Alain Masson, Julien Groslambert LIFC Besançon Réunion GECCOO - 10 mars 2006 FRE 2661.
Paradigmes des Langages de Programmation
Annexe 1 Tests unitaires d'applications Java avec JUNIT
Banc d’essai pour un circuit combinatoire
Packages et Types De la Spécification Formelle A l'implémentation Ada.
La notion de type revisitée en POO
Séminaire 10 Juin 2008 Pervasive Learning Network : P-LearNet Institut TELECOM.
GESTION ET TRAITEMENT DES ERREURS
Proposition pour un modèle à grains extrêmement fins David Fauthoux directeur : Jean-Paul Bahsoun IRIT.
Types Abstraits.
Programmation objet La base.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
« Validation Formelle de Systèmes Interactifs »
Introduction au Génie Logiciel
Introduction à la programmation objet en C++
Un visiteur… …venu d’ailleurs
CORTIER Alexandre Directeur : Bruno d’AUSBOURG (ONERA)
Présentation du développement du projet.  Introduction  Conception et méthodes  Developpement  Conclusion 2.
Conception Formelle en PVS Master 2 ISC Chef de Projet: M. Pierre Castéran Présenté par: Roland Atoui Xavier Dumas Sébastien Jardel Laurent Vendredi.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Réalisé avec le soutien de Pied de page fixe Pied de page 1 Titre Sous titre.
Généricité.
Du Cahier des Charges à la Spécification Formelle ?
1 Journée GDR GPL --- Ingénierie des Exigences octobre 2015 Ph. Dhaussy Philippe Dhaussy Univ. Européenne de Bretagne Lab-STICC UMR CNRS 6285 Equipe.
Dániel Darvas (CERN BE-ICS-PCS) Spécification formelle pour les API CERN-ESTEREL séminaire 21/01/2016, CERN Travail conjoint avec B. Fernández, E. Blanco,
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Transcription de la présentation:

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

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

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

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

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

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é

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

Exemple: Spécification de Demoney public interface model1{ boolean personnalized; personnalized == assignable ensures personnalized == void storeData(); personnalized == assignable void initializeTransaction(); personnalized == assignable void completeTransaction(); assignable 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 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.

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

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

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

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

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 )) requires P a diverges D a assignable A a ensures Q a signals (E a e) R M a (); requires P r diverges D r assignable A r ensures Q r signals (E r e) R M r ();

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

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

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

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

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 Mr called Pr Pa Ma called Mr normal Qr

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

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

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

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

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

Exemple sur Demoney public interface model2{ boolean personnalized; int accessLevel; invariant 1 <= && accessLevel <= personnalized == & accessLevel == assignable ensures personnalized == void store_data(); personnalized == && accessLevel && accessLevel <= assignable void initialize_transaction(); personnalized == && accessLevel >=2 accessLevel <= assignable void complete_transaction(); requires accessLevel == assignable 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és Le 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 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

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