376
Chapitre 18 • Conception d’un modèle
ALLOCATION = 100
si NET_PAYE < 1000
0,1*NET_PAYE si 1000 ≤ NET_PAYE < 3000
300
si NET_PAYE ≥ 2000
En effet, pour 2000 ≤ NET_PAYE < 3000, ALLOCATION reçoit deux définitions distinctes. Tout comme la complétude, la non-ambiguïté peut s’avérer
difficile à prouver.
• Une définition multiple ne peut comporter de branches mortes : pour toute
condition de la définition, il doit exister au moins un état pour lequel elle est
vraie et un état pour lequel elle est fausse. Dans l’exemple ci-dessous, la
définition de D est complète et cohérente. Cependant, la condition (C1 et C2)
sera toujours fausse, quelles que soient les valeurs de A et B, et définit donc
une branche morte, tandis que la condition (non C1 ou non C2) sera
toujours vraie. S’il ne s’agit probablement pas d’une erreur bloquante du
modèle, cette définition révèle presque certainement une erreur d’analyse.
C1 = (A = B)
C2 = (A ≠ B)
D = 0 si (C1 et C2)
1 si (non C1 ou non C2)
18.5.3 Cohérence des règles de récurrence
Les règles de récurrence sont fréquemment le siège d’erreurs de construction :
initialisation manquante, erreur d’indice, etc. On vérifiera en particulier
• qu’à chaque règle de récurrence correspond une (ou plusieurs) règle d’initialisation qui permette le démarrage de la récurrence en fixant la valeur de départ
de la variable dimensionnée;
• que la règle d’initialisation, accompagnée de sa règle de récurrence, couvre
bien toutes les valeurs de la dimension (ou en tout cas le sous-ensemble pertinent) une et une seule fois : en particulier, on sera attentif au traitement de la
première valeur de la dimension (est-elle traitée, l’est-elle dans l’initialisation
seulement?), de la valeur suivante (est-elle traitée?), de la dernière valeur;
• que la règle d’initialisation, accompagnée de sa règle de récurrence, ne couvre
que les valeurs pertinentes de la dimension : ne spécifie-elle pas une valeur qui
précède la première, ou une valeur qui suit la dernière (comportement aux
limites)?
Le lecteur est invité à évaluer les six tentatives suivantes de description de la série de
Fibonacci (tout terme, sauf les deux premiers qui valent 1, est égal à la somme des
deux termes qui le précèdent) : 1, 1, 2, 3, 5, 8, 13, etc.
Essai n° 1
F 1 = 1
F i = F i-1 + F i-2
i = 2..n
Essai n° 2
F 1 = 1
F i = F i-1 + F i-2
i = 3..n
Essai n° 3
F 1 = 1
Précédent

- 376/436

Suivant