0"); > 0") this.table = new int[t]; assert("this.size() == t") == t") } public int size(){…}"> 0"); > 0") this.table = new int[t]; assert("this.size() == t") == t") } public int size(){…}">
Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parCaterine Devos Modifié depuis plus de 10 années
1
ESCPI 1 Programmation par contrats Une méthode appelée Appel de la méthode Si le contrat est respecté : Pré-assertions Lappelant En retour le contrat est garanti : Post-assertions
2
ESCPI 2 Exemple : une Table @Pre("t > 0") @Post("this.size() == t") public Table(int t){ … } @Pre, @Post : Annotations en Java
3
ESCPI 3 Objectifs du projet Convertir ces annotations en une vérification des contrats public Table(int t){ assert ("t > 0"); // @Pre("t > 0") this.table = new int[t]; assert("this.size() == t") // @Post("this.size() == t") } public int size(){…}
4
ESCPI 4 Comment ? Annotations @Pre, @Post … Évaluées statiquement Avec un outil standard apt (annotation processing tool) un source instrumenté est généré Ou à lexécution En utilisant lintrospection un mandataire intercepte les appels de méthodes et vérifient les contrats Les deux solutions devront être maquettées, la seconde a notre préférence pour la version finale du projet …
5
ESCPI 5 Bibliographie Jass : http://csd.informatik.uni-oldenburg.de/~jass/index.htmlhttp://csd.informatik.uni-oldenburg.de/~jass/index.html iContract : http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-cooltools.htmlhttp://www.javaworld.com/javaworld/jw-02-2001/jw-0216-cooltools.html DBCProxy : http://www.javaworld.com/javaworld/jw-02-2002/jw-0215-dbcproxy.htmlhttp://www.javaworld.com/javaworld/jw-02-2002/jw-0215-dbcproxy.html Obligate : https://obligate.dev.java.net/https://obligate.dev.java.net/ Une présentation en Master/Jussieu http://www-master.ufr-info-p6.jussieu.fr/2006/Ajouts/Master_esj_2006_2007/IMG/pdf/Rogovchenko.pdf Annotations et génération de code http://java.sun.com/j2se/1.5.0/docs/guide/apt/index.html http://www.btcweb.com/btc/fr/download/java/annotation/1-annotations.html http://adiguba.developpez.com/tutoriels/java/tiger/annotations/ http://www-igm.univ-mlv.fr/~dr/XPOSE2005/leblevec/apt.php http://www.theserverside.com/tt/articles/content/AgileJava_Chapter/AgileJava_Chapter.pdf http://www.csg.is.titech.ac.jp/~chiba/javassist/ http://www-128.ibm.com/developerworks/java/library/j-cwt06075/ http://asm.objectweb.org/
6
ESCPI 6 Travail à réaliser Programmation par contrats ? Pour une classe Contrats entre une classe et ses sous-classes Utiliser quelques outils existants : modern-jass, DBCProxy, … En déduire les annotations et leur syntaxe Deux prototypes Génération de source Java (apt) Génération à la volée (introspection) Critiques puis choix Une extension/Plug-in pour BlueJ En vue dun TP en IN413 Documentation et exemples en ligne
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.