320 likes | 397 Views
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
E N D
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 • Conclusion et travaux futurs
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
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
Rappel sur le langage Always P Eventually P P P P P P P P P P P P P
Rappel sur le langage C Until E1 C Unless E1 C E1 C E1 C
Rappel sur le langage After E1 T Before E1 C E1 T C E1
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 ;
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
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
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
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
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
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
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.
Utilisation • Interface graphique écrite en Swing • Utilisation en ligne de commande • Possibilité d’utilisation sous forme d’API
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
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()
Génération des obligations de preuve sur le fichier corrigé. 100% de preuve automatique avec Simplify
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
PLAN • Contexte • Conception de l’outil • Démonstration • Conclusion et travaux futurs
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
Intégration aux outils Outil externe Parser JML Preuve Animation … ClasseJava/JML ASTJML
Intégration aux outils Parser Génération Formule temporelle AST Outil externe Parser JML ClasseJava/JML ASTJML AST JMLcomplété Preuve Animation …
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
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
Distribution de l’outil http://lifc.univ-fcomte.fr/~groslambert/JAG/