Vous êtes sur la page 1sur 9

CNAM - CRA Nancy 2003

Jacques Lonchamp

TROISIEME PARTIE La spcification formelle en Z.

1. Introduction
La langage Z a t dvelopp lUniversit dOxford la suite des travaux de Jean Ren Abrial. Cest un langage formel qui utilise : les notions ensemblistes, le calcul des propositions (et, ou, non, implication, etc.) et des prdicats (quantificateurs existentiels il existe - et universel quel que soit -), les relations (partie du produit cartsien de plusieurs ensembles) et fonctions (relations avec au plus une image par valeur du domaine de dfinition), les squences ou suites (fonctions des entiers naturels dans un autre ensemble pour imposer un ordre aux valeurs). Nous commentons au paragraphe suivant un exemple de document de spcification en Z, utilisant uniquement les aspects ensemblistes.

2. Les ensembles
Le document de spcification contient tout dabord une introduction informelle du problme trait. Introduction Cette spcification concerne lenregistrement des passagers bord dun avion. Les places ne sont pas numrotes. Les passagers sont autoriss embarquer selon la rgle du premier arriv, premier servi. Sont ensuite dcrits tous les types et toutes les variables utiles dans la spcification. La spcification utilise des ensembles donns dont on ne donne que le nom (given sets). Elle utilise aussi une bote outils mathmatique avec des ensembles prdfinis comme les entiers naturels ( N) ou les boolens. Types [PERSONNE] ensemble des personnes identifies de manire unique capacit : N capacit de lavion (cest un entier naturel) OUIOUNON ::= oui | non ( la barre | indique un ou) REPONSE ::= OK | djABord | plein | deuxErreurs Puis vient la description de ltat du systme. Il prend la forme dun schma avec un nom, des dclarations prcisant les types, et des proprits (prdicats) prcisant les valeurs. Etat du systme Cest lensemble des personnes bord. Il ne peut excder la capacit de lavion. ( P X est un lment de lensemble des sous ensembles de X, cest dire un ensemble dlments de X) #Bord <= capacit (#X indique le cardinal de lensemble X (nb lments) ; cette proprit doit toujours tre vraie ; cest un invariant du systme). On dcrit ensuite ltat initial du systme comme un autre schma. Etat initial Init Avion Rfrence au schma Avion Bord = Lavion est vide (ensemble vide) Avion Bord : P PERSONNE

On dcrit les oprations qui peuvent faire voluer ltat du systme : embarquer, dbarquer. Les schmas correspondants font rfrence au schma Avion qui indique lvolution du schma Avion avant et aprs lappel dune opration (les tats aprs lopration sont marqus par une apostrophe). Avion Bord : P PERSONNE Bord : P PERSONNE #Bord <= capacit #Bord <= capacit Les oprations Embarquer Avion p? : PERSONNE p? Bord #Bord < capacit Bord = Bord {p?} Dbarquer Avion p? : PERSONNE p? Bord Bord = Bord \{p?}

p? est une entre de lopration

est lunion des ensembles

p? est une entre de lopration

\ est la diffrence ensembliste

Les interrogations laissent ltat du systme inchang. Ce quindique le schma (ksi schma) suivant : Avion Bord : P PERSONNE Bord : P PERSONNE #Bord <= capacit #Bord <= capacit Bord = Bord Les interrogations Nombre Avion n! : N n! = #Bord

n! est une sortie de lopration

Abord Avion p? : PERSONNE rponse! : OUIOUNON (p? Bord ^ rponse ! = oui) v (p? Bord ^ rponse ! = non) ^ et v reprsentent le et et le ou Enfin, le traitement des erreurs peut tre spcifi dans un plusieurs schmas. Traitement des erreurs On donne en exemple le schma li aux erreurs dembarquement. ErreurEmbarquer Avion p? : PERSONNE rep! : REPONSE (p? Bord ^ #Bord = capacit ^ rep! = deuxErreurs) v (p? Bord ^ #Bord < capacit ^ rep! = djABord) v (p? Bord ^ #Bord = capacit ^ rep! = plein)

3. Les fonctions
Les fonctions (ou plus gnralement les relations) sont le moyen de relier les uns aux autres les ensembles utiliss dans la spcification. Une fonction f est dfinie dans un ensemble (son domaine, not dom f) et prend ses valeurs dans un autre ensemble (son image, not ran f pour range). Une fonction est partielle si toutes les valeurs de dpart nont pas dimage par la fonction (notation f : X Y). Sinon, elle est totale (notation f : X Y). (a) Lajout dun couple de valeurs la fonction se note : f = f {x (c) La suppression du couple (x, y) se note : f = {x} y}. y}.

(b) La modification du couple (x, y) par le couple (x, y) se note : f = f + {x

f (soustraction au domaine).

(d) On donne ci-dessous un exemple de spcification de gestion dun stock. Le niveau de stock est dfini pour les produits stocks. Il peut exister des articles non stocks. [ARTICLES] Lensemble des articles (stocks ou non)

Magasin stocks : P ARTICLE niveau : ARTICLE N dom niveau = stocks

(seuls les articles stocks ont un niveau)

Init Magasin stocks = niveau = SortieStock Magasin a? : ARTICLE qt? : N a? stocks niveau a? >= qt? niveau = niveau + {a? stocks = stocks EntreStock Magasin a? : ARTICLE qt? : N a? stocks niveau = niveau + {a? stocks = stocks NouvelArticle Magasin a? : ARTICLE

Rfrence au schma Magasin Initialement, il ny a rien en stock

niveau a? qt?}

niveau a? + qt?}

a? stocks niveau = niveau {a? 0} stocks = stocks {a?} AbandonArticle Magasin a? : ARTICLE a? stocks niveau a? = 0 stocks = stocks \ {a?} niveau = {a ?} niveau

(le niveau doit tre nul)

Nous ne poursuivons pas plus avant la description du langage Z, qui possde bien dautres concepts et notations, comme par exemple les suites (fonctions de N dans X) et lutilisation de la logique des prdicats (avec les quantificateurs existentiel et universel ) la place de la logique des propositions.

Aujourdhui, la mthode B et son langage B, galement dvelopps par J.R. Abrial, tend remplacer la Z. B sintresse au processus qui va de la spcification formelle au programme. La mthode B offre : un langage de spcification base de machines abstraites, une technique de raffinage des spcifications (des notions abstraites aux notions des langages de programmation), des obligations de preuve associes chaque tape, un outil permettant de supporter ce processus (latelier B, Steria). Elle a pu tre applique dans quelques projets de taille relle, comme le systme Mtor (ligne 14 du mtro Parisien) avec 100 000 lignes de B compiles en 87 000 lignes de code ADA et 28 000 preuves.

EXERCICES
Exercice 3.1 : ensembles On a enregistr des personnes comme utilisateurs dun systme informatique. A un moment donn, certains utilisateurs sont connects lordinateur (une seule fois) et dautres non. Spcifier en Z le systme ordinateur avec les oprations AjouterUtilsateur, SupprimerUti-lisateur, Connexion, Dconnexion, et les erreurs correspondantes. Exercice 3.2 : ensembles Soit lextrait de spcification suivant, dcrivant un terminal dordinateur. Types [TOUCHES] Caractres habituels plus touches spciales suivantes : gauche, droite, haut, bas (flches de dplacement), dbut (home), entre : TOUCHES Etat du systme Curseur ligne : N (entiers naturels) colonne : N ligne 1 .. nombreDeLignes colonne 1 .. nombreDeColonnes Etat initial Init Curseur ligne = 1 colonne =1 Oprations ToucheDbut Curseur touche ? : TOUCHE touche ? = dbut ligne = 1 colonne =1 o les schma Curseur est le schma conventionnel dvolution du curseur dfini par Curseur ligne, ligne : N colonne, colonne : N ligne, ligne 1 .. nombreDeLignes colonne, colonne 1 .. nombreDeColonnes 1. Dfinir sur le mme modle, le schma de la touche droite (flche droite) ; attention aux divers cas lis la fin de ligne (retour en dbut de ligne suivante) et la fin de lcran (retour en premire ligne, premire colonne). 2. Dfinir le schma de lopration LignesRestantes qui retourne le nombre de lignes restantes au dessous du curseur.
1 1 colonne nombreDe Colonnes

ligne curseur nombreDe Lignes

Exercice 3.3 : fonctions Un systme enregistre les rservations de chambres dhtel pour une nuit. Etant donn les types de base [CHAMBRE] ensemble des chambres [PERSONNE] ensemble de toutes les personnes possibles on peut reprsenter ltat des rservations de lhtel par le schma suivant : Htel RservPour : CHAMBRE PERSONNE

1. Pourquoi ReservPour est-il une fonction, partielle ? 2. Donner ltat initial. 3. Dfinir les schmas de AccepterRservation et de AnnulerRservation. Exercice 3.4 : fonctions a. Expliquer la signification de la spcification Z suivante et de son schma d'initialisation. Types [PERSONNE, BUREAU, TELEPHONE] tat Annuaire Employs : P PERSONNE Bureaux : P BUREAU NumrosPossibles : P TELEPHONE TlphoneDuBureau : BUREAU TELEPHONE BureauDeEmploy : PERSONNE BUREAU PlacesLibres : BUREAU N dom TlphoneDuBureau = Bureaux ran TlphoneDuBureau NumrosPossibles dom BureauDeEmploy = Employs ran BureauDeEmploy Bureaux dom PlacesLibres = Bureaux

InitAnnuaire Annuaire Employs = Bureaux = NumrosPossibles = TlphoneDeBureau = BureauDeEmploy = PlacesLibres = b. Expliquer l'opration "EngagerEmploy"

EngagerEmploy Annuaire p? : PERSONNE b? : BUREAU p? Employs b? Bureaux PlacesLibres b? > 0 Employs' = Employs {p?} Bureaux' = Bureaux NumrosPossibles' = NumrosPossibles TlphoneDuBureau' = TlphoneDuBureau BureauDeEmploy' = BureauDeEmploy {(p? b?)} PlacesLibres' = PlacesLibres + {(b? PlacesLibres b? - 1)}

c. En vous inspirant de l'opration prcdente, crire l'opration "LicencierEmploy". d. crire l'opration "AjouterBureau".

ANNEXE
On trouvera ci-aprs un exemple "raliste" de spcification formelle d'une bibliothque. Notations supplmentaires utilises dans lexemple : F quivaut P mais avec lide de partie finie. Un lment de F est un ensemble fini. f ~ est la fonction inverse de f. f ( S ) est limage de lensemble S par la fonction f. = indique la composition de schmas. Remarques : Book est un livre au catalogue. Copy est un exemplaire de livre. Il peut tre available (disponible) ou checkedout (sorti/emprunt). Borrower est lensemble des emprunteurs. Staff est lensemble des membres du personnel de la bibliothque. MaxCopiesAllowed est le nombre maximum demprunts simultans autoriss.