Méthode B/Concept de précondition
Soit la machine suivante :
MACHINE Calculette ... OPERATIONS cc <-- plus (aa, bb) = /* avec l'Atelier B, les noms des variables et des constantes doivent faire au moins deux caractères */ PRE aa : NAT & bb : NAT & aa + bb : NAT THEN cc := aa + bb END; ... END
- Quel est le sens de aa + bb : (appartient) ENTIER que l'on trouve dans la précondition ?
- Quand on passera de la machine abstraite au code exécutable, la précondition de l'opération plus ne sera pas présente dans le code exécutable de cette opération.
- La précondition veut dire que, lorsqu'on utilisera la machine abstraite (lorsqu'on l'appellera), si l'on respecte la précondition, la machine se comportera comme spécifiée.
- Si on ne respecte pas la précondition, on n'a aucune garantie de bon fonctionnement.
Exemple de la calculette :
Le concepteur du logiciel démontrera, une fois pour toute, que si la précondition est remplie, la calculette fonctionnera correctement.
ATTENTION :
Bien différencier l'approche B (programmation offensive) de la programmation défensive !
Exemple de mon enrouleur de câble électrique :
J'ai un enrouleur de câble électrique qui porte l'étiquette suivante : « Puissance maximale sous 200 V = 2000 W avec le câble déroulé, 1000 W avec le câble enroulé. » J'ai utilisé ma tondeuse électrique de 1500 W avec le câble enroulé.
- Le câble a fondu.
- L'enrouleur ne m'a pas prévenu.
- Il ne disposait pas d'un composant testant si le câble était déroulé.
- C'est lorsque le fabricant a conçu l'enrouleur qu'il a « démontré » qu'il fonctionne correctement si l'utilisateur respecte les conditions d'emploi écrites sur l'étiquette.
Cette démonstration a été faite une fois pour toute en utilisant les lois de la physique. Le vendeur ne m'a pas remboursé l'enrouleur.
C'est alors à l'utilisateur à ne faire appel à l'enrouleur qu'en respectant les conditions d'emploi. Ces conditions d'emploi ne peuvent être vérifiées dans le « code » de l'opération.