Travaux dirigés/pratiques - B
Méthode formelle – Méthode B
DESS QUASSI
Novembre 2001
Construire une machine abstraite fournissant les opérations :
Raffiner la machine abstraite précédente afin de l’implanter.
Soit la machine abstraite suivante :
MACHINE
Students(max_students, STUDENT)
VARIABLES
students
INVARIANT
students <: STUDENT
& card(students) <= max_students
INITIALISATION
students := {}
OPERATIONS
Enter(s) = /* ajoute un étudiant à l'ensemble */
PRE
... /* a completer */
THEN
students := students \/ {s}
END;
Remove(s) = /* enlève l'étudiant de l'ensemble */
PRE
... /*
a completer */
THEN
students := students - s
END;
Print = /* Affiche à l’écran tous les étudiants */
….
END
Raffiner et/ou implanter la spécification précédente.
On considère un système de gestion d'une banque. On veut écrire partiellement la spécification du système. On dispose de deux ensembles : Numéros des comptes des clients et numéros des clients.
Ecrire une machine abstraite spécifiant
Une application gère l'utilisation d'un système informatique. Pour cela, des personnes sont enregistrées comme utilisateurs de ce système. A un moment donné, certains utilisateurs sont connectés à l'ordinateur. Il n'y a pas de connexions multiples; un utilisateur est soit connecté ou déconnecté.
Utilisez le langage B pour spécifier formellement cette application en donnant:
· l'état du système;
· l'opération pour ajouter un utilisateur;
· l'opération pour supprimer un utilisateur;
· l'opération pour se connecter
· l'opération pour se déconnecter.
Pour chacune de ces opérations, considérez les traitements d'erreur. Donnez aussi une description en langue naturelle de chaque opération.