Les spécifications
Les spécifications sont une autre manière de documenter des méthodes et des classes. On va placer les spécifications avec les méthodes en tant que commentaire Javadoc. On oublie les tags @param
et @return
des méthodes et on utilisera les tags @pre
et @post
à la place.
Une méthode documentée est donc composée de sa spécification et de sa définition. Pour rappel, la définition d'une méthode est composée d'une signature et du corps de la méthode.
Grâce aux spécifications, un utilisateur de la méthode, différent de celui qui l'a écrite, doit pouvoir utiliser la méthode correctement et connaitre le résultat que celle-ci produira.
Qu'est-ce-qu'une spécification ?
Une spécification est un contrat entre la personne qui écrit la classe et l'utilisateur. Les implémenteurs s'engagent à écrire la méthode conformément au contrat et les utilisateurs s'engagent à utiliser la méthode dans le cadre du contrat.
La spécification assure une définition correcte, complète et non ambiguë de la méthode et ce avant l'implémentation. Les spécifications doivent donc être écrite avant tout travail de programmation et permet par la suite de faciliter grandement ce travail.
Par exemple, un groupe de personne désire écrire un programme et ce programme nécessite d'effectuer des opérations sur des matrices. La répartition du travail sera facile à partir du moment où il est intelligemment organisé.
Il suffit de définir toutes les opérations à réaliser sur les matrices dans une interface. De cette manière, une partie des programmeurs peuvent déjà écrire la partie du programme qui utilise les matrices tandis que l'autre partie va écrire les méthodes sur les matrices. Tout celà est bien entendu possible à partir du moment où l'interface est correctement spécifiée et où les deux parties respectent le contrat.
Écrire une spécification
Une spécification se décompose en deux parties : les préconditions et les postconditions.
Préconditions
Les préconditions sont des assertions, c'est à dire des conditions qui sont vérifiées au moment de l'appel de la méthode à laquelle elles sont attachées. Ces conditions portent sur les états initiaux, sur les propriétés des paramètres qui doivent être satisfaits avant l'exécution de la méthode pour que celle-ci produisent les résultats attendus.
On s'intéresse souvent aux préconditions les plus faibles, c'est à dire les moins restrictives pour que le résultat produit soit celui attendu.