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
ESCPI 2 Exemple : une > == t") public Table(int t){ : Annotations en Java
ESCPI 3 Objectifs du projet Convertir ces annotations en une vérification des contrats public Table(int t){ assert ("t > 0"); > 0") this.table = new int[t]; assert("this.size() == t") == t") } public int size(){…}
ESCPI 4 Comment … É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 …
ESCPI 5 Bibliographie Jass : iContract : DBCProxy : Obligate : Une présentation en Master/Jussieu Annotations et génération de code
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