1 / 32

JAG : JML Annotation Generator

JAG : JML Annotation Generator. Julien Groslambert – Alain Giorgetti LIFC Besançon Réunion GECCOO - 25 Octobre 2005. FRE 2661. PLAN. Contexte Conception de l’outil Démonstration Conclusion et travaux futurs. PLAN. Contexte Conception de l’outil Démonstration

giulia
Download Presentation

JAG : JML Annotation Generator

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAG : JML Annotation Generator Julien Groslambert – Alain Giorgetti LIFC Besançon Réunion GECCOO - 25 Octobre 2005 FRE 2661

  2. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  3. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  4. Contexte • Extension de JML pour spécifier des propriétés temporelles (AMAST 02) • Formules temporelles sont traduites en JML standard Fichier sourceJava JAG Preuve Animation Tests Fichier Javaannoté JML Formuletemporelle

  5. Rappel sur le langage • Evénements • M called • M normal • M exceptional • M terminates E1 s0 • Etats • Prédicat JML • M enabled • M not enabled

  6. Rappel sur le langage Always P Eventually P P P P P P P P P P P P P

  7. Rappel sur le langage C Until E1 C Unless E1 C E1 C E1 C

  8. Rappel sur le langage After E1 T Before E1 C E1 T C E1

  9. Exemples d’expressions • Personnalisation unique • After storeData() normal always storeData() not enabled; • Pas de transactions multiples • After initializeTransaction() called always initializeTransaction() not enabled until completeTransaction() called; • Vérification du code PIN • Before completeTransaction() called eventually pinValidated ==true ;

  10. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  11. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  12. Entrée • Spécification Java/JML • Analyse syntaxique avec JML Tools • Fichier contenant une ou plusieurs propriétés temporelles • Analyse syntaxique faite avec ANTLR • Intégration forte à JML Tools envisageable

  13. Transformation de la propriété temporelle en primitives • Trois types de primitives • Inv : Partie sûreté de la propriété • Loop : Partie vivacité de la propriété • Witness : Observation d’appel de méthodes ou d’états du système • Factorisation du travail de génération • Facilite l’ajout d’autres formats d’entrée

  14. Génération des annotations JML à partir des primitives • Inv : Invariant de classe • Loop : Ensemble d’invariants et de contraintes historiques qui assurent la terminaison et le non blocage • Witness : Variables ghost

  15. Sortie • Génération d’un fichier de sortie Java contenant le code d’origine et les annotations JML • Utilisation avec tous les outils Java/JML • Génération d’une sortie HTML pour la visualisation et la publication

  16. Conception interne Parser ANTLR Réductionenprimitives Ensemble de primitives temporelles Formule temporelle ASTANTLR Génération d’annotations Ensemble d’annotations JML Parser ANTLR Génération du fichier de sortie Classe Java/JML ASTANTLR Classe Java annotée

  17. Traçabilité des annotations • Traçabilité des annotations générées implantée • A partir d’une annotation, on peut retrouver : • Primitive d’origine • Propriété temporelle d’origine • Expertise facilitée en cas d’échec de la preuve • Transparence future de la génération des annotations • Communication future entre les différentes sorties.

  18. Utilisation • Interface graphique écrite en Swing • Utilisation en ligne de commande • Possibilité d’utilisation sous forme d’API

  19. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  20. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  21. Chargement du fichier de sortie avec Jack.

  22. Génération des obligations de preuve. Prouveur Symplify 2 O.P. non vérifiées Un invariant n’est pas préservé avec commitTransaction()

  23. Un invariant n’est pas préservé avec modify()

  24. Génération des obligations de preuve sur le fichier corrigé. 100% de preuve automatique avec Simplify

  25. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  26. PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs

  27. Conclusion • Première phase de développement de l’outil achevée • Implantation des travaux sur les propriétés de sûreté (AMAST02) et les propriétés de vivacité • Traçabilité des annotations • Génération d’un fichier contenant les annotations + Fonctionne avec tous les outils JML - Moins efficace qu’une intégration complète aux outils de sortie

  28. Intégration aux outils Outil externe Parser JML Preuve Animation … ClasseJava/JML ASTJML

  29. Intégration aux outils Parser Génération Formule temporelle AST Outil externe Parser JML ClasseJava/JML ASTJML AST JMLcomplété Preuve Animation …

  30. Travaux futurs • Extension en cours de développement pour supporter en entrer les automates de Büchi et la LTL. • Utilisation pour vérifier des propriétés sur une spécification JML de Demoney

  31. Intégration aux outils existants • Intégration à Jack. • JAG comme Plug-in Eclipse • Traçabilité complète des propriétés temporelles. • Analyse et expertise des données du prouveur. • Intégration à Krakatoa : deux possibilités envisagées • Ajout à l’AST de Jml Tools • Ajout au format intermédiaire XML • Problèmes de traçabilité • Collaboration Preuve/Test avec JML-Testing Tools à moyen terme

  32. Distribution de l’outil http://lifc.univ-fcomte.fr/~groslambert/JAG/

More Related