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(){…}">

La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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


Télécharger ppt "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."

Présentations similaires


Annonces Google