Free
Jest
lleavefey?
Je == front()
dequeue()
lent=0
goltront()}!
enqueue(e)
Ficure 2 ~ Automate du contrdleur
AAccessibilité — Analyse en avant
Soit l'automate temporisé suivant :
yS3,a,y:=0
222,a,r:=0
En considérant que la localité 0 est la localité initiale, déterminer Paccessibilité de la localité
3 AT’aide d'une analyse en avant utilisant le graphe de zones (on n’utilisera pas 'opérateur
extrapolation).
2 Test logiciel
2.1 Vérification de parité
Une application regoit périodiquement une mesure codée sur un octet, incluant 7 bits de
valeur et un bit de parité :
b7 [66 [b5 | bI | b3 | b2 | BI] BO]
Par exemple, Loctet 6 (00000110) représente une mesure de valeuy 3 (0000011) avec un bit de
parité correct (b0 est 0, d’ot un nombre pair de 1). L’octet 7°(09Q0Q}11) représente cette
méme valeur avec un bit de parité incorrect. ° %
Dans cette application, la fonction VERIF_PARITE () retourne false lorsque deux mesures
successives de méme valeur sont lues avec une parité incorrecte.
Dans tous les autres cas, la fonction retourne true.
Scanned with CamScannerLes entrées de VERIF_PARITE () sont l'octet Iu la période courante (octet_1u) et cel
lu a la période précédente (octet_prec).
1. On va tester 'implémentation ci-dessous. Elle contient une faute de programmation
classique : une borne de Vindice de boucle est incorrecte (ici, on itére sur 7 bits am Ii
de 8). Identifiez les conditions pour révéler cette faute.
Dooleen VERIF_PARITE (char octet_lu, char octet_prec)
{
char octet, bit, mb1;
/+ ne faire 1a vérification que si les octets sont identiques +/
if (octet_lu == octet_prec) &
octet = octét_lu;
nb_i = 0 ; /+ on'va compter le nombre de bits 4 1 +/
for (i=0; 4 <7; itt) £
if (octet 1 == 1)
/+ ‘test Vopérateur ‘and? bit-a-bit +/
7+ on teste donc ici la valeur du bit de poids faible +/
mb. +5
octet = octet 2> 1; /+ décalage a droite dun bit */
}
if (mp_4 % 2 != 0) /+ nombre total impair de bits 417 +/
return (false);
return (true)
+
+ 2. Dessinez. le graphe de controle de VERIF_PARITE ().
~ 3. Combien y-a-t-il de chemins exécutables? Parmi eux, combien de chemins dont V'acti-
vation peut révéler la faute?
2.2. File d’attente
On considére une structure de données de type file FIFQ (First In, First Out). Une action
de production rajoute tne valeur dans Ia file et une opération de consommation retire un
élément de la fle.
La file peut contenir 2 éléments au plus.
Une tentative d'ajout dans une file pleine, ou de retrait dans une file vide, doit générer une
, exception informant l'utilisateur que Topération est illégale. Le contenu de la file reste alors
inchangé.
1. Modéliser le comportement de la file sous forme d'une machine a états finis avee les
alphabets d'entrée et de sortie suivant :
Alphabet entrée ¢ ‘Alphabet de sortie _t
‘Aj : tentative d'ajout Pune valeur | - + aucune observation de sortie
Ret : tentative de retrait d'une valeur | Exe : levée d'une exception
Val : une valeur est délivrée a Vutilisateur
‘On place sur Tes transitions une valeur de Valphabet d'entrée suivie une valeur de Tal-
phabet de sortie ("Aj -" signific qu’nne tentative d’ajout ne produit rien d’observable).
2. Concevoir un test pour couvrir toutes les transitions.
Scanned with CamScanner