Académique Documents
Professionnel Documents
Culture Documents
pour la conception
dun systme mcatronique
Chrysostome Baskiotis, EISTI
cb@eisti.fr
Introduction
Raffinement
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
8
9
9
12
12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
14
18
18
.
.
.
.
.
.
.
.
.
.
.
.
Conclusion
19
Rfrences
20
21
22
Introduction
Il en existe plusieurs types de mthodes formelles : par contrat, par squences doprations, par types de donnes abstraits ou, encore, par transitions
dtats. Nous donnons ci-aprs les caractristiques communes de ces mthodes
Abstraction : Il sagit de lopration essentielle pour avoir la maitrise de
tout systme complexe. tant donn que le dveloppement de la modlisation dun systme est subordon une simplification et approximation de la
ralit, labstraction est la premire tape pour lutilisation dune mthode formelle. Ainsi au dbut de la modlisation dun systme on doit utiliser une description abstraite du systme qui se limitera aux caractristiques essentiels du
systme. Le modle donc qui est issu de cette description sera un modle abstrait. De cette faon on vitera davoir des dtails qui ne sont pas utiles pour
la description gnrale du systme et, par voie de consquence, on vitera des
implementations prmatures des modules. En particulier il faut savoir que
plus la classe de systmes que nous voulons dcrire est large, moins analytique sera leur description. Bien sr cette remarque est invalider dans des
stades plus avancs de la conception. Car on sait aussi que cest justement un
dveloppement avec une partie analytique importante qui permet de calculer
et de prvoir, cest--dire de faire en sorte que les mthodes formelles soient
rellement utiles.
Correction : chaque tape de lapplication dune mthode formelle, on
sassure, par preuve formelle (logique), que le systme ralise ce qui est dcrit
dans les spcifications initiales.
Raffinement : Il consiste en la construction progressive des modles corrects qui sont de plus en plus concrets. Il sagit, en partant dune spcification initiale la plus abstraite possible, dobtenir des modles de plus en plus
4
Raffinement
reflexive : S v S.
transitive : si S v S0 et S0 v S00 , alors S v S00 .
monotone : si (Si )i et (Ti )i deux suites des spcifications avec Si v Ti , i,
alors lim Si v lim Ti , condition que les limites existent.
i
P : r r m; k k - 1;
Au niveau le plus abstrait la spcification sera
S : {r 1 Q B} r r m; k k 1; {Q B}
On peut dmontrer que cette spcification ralise le but qui est r mn et le
programme se termine.
Un premier niveau de raffinement consiste prciser la faon dont le calcul
r mn sera fait. En utilisant la dcomposition squentielle, nous avons
S1
S2
{r 1 Q B} r r m; {Q }
{Q } k k 1; {Q B}
S2
{n 0 r 1 Q B} r r m; {Q }
{Q } k k 1; {Q B}
Q : r mk = mn sappelle linvariant de la spcification. Il sagit dune proprit que le systme doit vrifier chaque tape. Cest elle qui garantit que
le systme fera ce que la spcification prcise quil doit faire. Donc si, au cours
des raffinements successifs, on retrouve cet invariant, on conclut que, si au niveau le plus abstrait la spcification tait ralise, elle sera aussi ralise lors
des raffinements successifs.
Dans une premire approche on ngligera la lecture des cartes et le fonctionnement de la barrire. Ainsi au niveau le plus abstrait, nous pouvons formuler les exigences suivantes :
REQ-1 : Le systme consiste en la rgulation des entres-sorties des voitures
dans un parking via une rampe daccs.
REQ-2 :
REQ-3 :
REQ-7 :
REQ-8 : Les capteurs dtectent la prsence des voitures qui rentrent ou sortent
du parking.
Dans le dveloppement que nous ferons ici nous ne prendrons pas en compte
toutes ces exigences. On sefforcera de construire un systme abstrait avec le
minimum dexigences possibles, afin que son fonctionnement soit acceptable.
On pourra ulterieurement rendre le modle plus complet, et plus concret,
laide des raffinements successifs.
Le modle quon construira on lappellera modle m0_parking . Pour laborer ce modle il faut tablir ltat du systme et les vnements que nous pouvons observer. Ensuite on doit tablir les invariants du systme ainsi que, le cas
cheant, les situations de blocage.
6.1
tat
inv_0_1 : nbVoit N ;
inv_0_2 : nbVoit nbTot.
6.2
vnements
Les vnements refltent les transitions qui permettent de passer dun tat
un autre.
Dans le stade actuel nous pouvons observer deux transitions :
PK_in : Entre dune voiture au parking. La situation juste aprs cet vnement est : n := n+1 ;
PK_out : Sortie dune voiture du parking. La situation juste aprs cet vnement est : n := n-1 ;
Loprateur := sappelle assignation et n := n+1 sera lu n devient gal
n+1. Il faut remarquer qucrire une assignation nest pas crire le code dun
programme, mais seulement prsenter de manire formelle lobservation de
lvolution discrte du systme.
6.3
Quand on applique les assignations des vnements, il faut prouver de faon rigoureuse que les invariants restent valides. La dmarche suivre est prsenter ci-aprs.
Supposons que toutes les constantes du systme sont notes C. Leurs propits sont donnes par le prdicat p (C). De mme toutes les variables sont
regroupes avec la notation V et soit i (C,V ) le prdicat regroupant les invariants. Lapplication des vnements est donne par la fonction e (C,V ). Ainsi
on a V := e (C,V ).
La persistance des invariants sera prouve si la rgle dinvariance suivante
est vrifie :
p (C) i (C,V ) i (C, e (C,V ))
Dans la suite nous noterons cette rgle comme une clause de Horn, savoir
p (C)
i (C,V )
i (C, e (C,V ))
et qui peut aussi se mettre sous la forme
Proprits des constantes
Invariants
Invariants modifis
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit + 1 N
et
Proprits des constantes
Invariants
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit + 1 nbTot
Pour le PK_out on a :
Proprits des constantes
Invariants
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit 1 N
et
Proprits des constantes
Invariants
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit 1 nbTot
On peut constater que la deuxime rgle dinvariance de PK_in et la premire de PK_out ne sont pas toujours vrifies. En effet il ny aucune raison
pour que on ait toujours nbVoit + 1 nbTot ou nbVoit 1 N. Pour que ces
invariants soient toujours vrifis, il faut accepter la ralisation dun vnement seulement si certaines conditions sont remplies, ou, pour suivre la terminologie introduite par Dijsktra, si des gardes de cet vnement sont satisfaites.
Dans la suite on notera par g (C,V ) les gardes dun systme et on aura la
rgle dinvariance avec garde suivante :
p (C)
i (C,V )
g (C,V )
i (C, e (C,V ))
10
Invariants modifis
En appliquant la rgle dinvarance avec garde pour PK_in, on obtient :
Proprits des constantes
Invariants
Garde de PK_in
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit < nbTot
nbVoit + 1 N
et
Proprits des constantes
Invariants
Garde de PK_in
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
nbVoit < nbTot
nbVoit + 1 nbTot
Pour PK_out on a :
Proprits des constantes
Invariants
Garde de PK_out
Invariants modifis
nbTot N
nbVoit N
nbVoit nbTot
0 < nbVoit
nbVoit 1 N
et
Proprits des constantes
Invariants
Garde de PK_out
Invariants modifis
11
nbTot N
nbVoit N
nbVoit nbTot
0 < nbVoit
nbVoit 1 nbTot
6.4
Initialisation
nbVoit := 0
Invariants modifis
nbTot N
0N
Invariants modifis
nbTot N
0 nbTot
et
6.5
Blocage
Dans la mesure o les vnements PK_in et PK_out se dclenchent maintenant sous le contrle dune garde, il est possible darriver une situation
de blocage si toutes les gardes sont fausses. Pour viter cette situation il faut
introduire une requte supplmentaire
REQ-9 :
g1 (C,V ) gn (C,V )
ou, encore
prop_0_2 :
0 < nbTot
7.1
tat
La constante nbTot est maintenue mais la variable nbVoit est remplace par
trois variables :
nbSort : nombre de voitures qui sont sur la rampe et qui sortent du parking ;
nbEntr : nombre de voitures qui sont sur la rampe et qui entrent dans le
parking, et
nbRes : nombre de voitures qui sont dans le parking.
Les invariants pour ces variables sont :
inv_1_1 :
nbSort N
inv_1_2 :
nbSort 1
inv_1_3 :
nbEntr N
inv_1_4 :
nbEntr 1
inv_1_5 :
nbRes N
inv_1_6 :
inv_1_7 :
nbSort = 0 nbEntr = 0
13
7.2
vnements
Les vnements PK_in et PK_out seront raffins en tenant compte des variables concrtes. On obtiendra ainsi des vnements concrets.
Dans la suite on prsente les versions abstraite et concrte de chaque vnement. Pour PK_in nous avons
PK_in_abstrait
nbVoit := nbVoit + 1
nbRes := nbRes + 1
PK_out_abstrait
0 < nbVoit
nbVoit := nbVoit 1
, PK_out_concret
0 < nbSort
nbRes := nbRes 1
Un raisonnement analogue montre que la version concrte nest pas contradictoire avec la version abstraite.
Bien sr ces raisonnements ne sont pas formels. Pour un raisonnement formel, il faut dabord prouver que la version concrte est plus forte que la version
abstraite. Plus forte signifie ici que la garde de version concrte implique la
garde de la version abstraite. Car sinon on pourrait avoir un vnement concret
sans une partie correspondante dans la version abstraite.
Dans la suite on notera par i (C,V ) les invariants abstraits et par j (C,V,W )
les invariants concrets, o W repsente les variables concrtes. Notons aussi par
g (C,V ) la garde de lvnement abstrait et par h (C,W ) la garde de lvnement
concret.
Le raffinement de lvnement scrit de faon formelle :
14
p (C)
i (C,V )
j (C,V,W )
h (C,W )
g (C,V )
ou, encore
Gardes abstraites
ou, encore
Gardes abstraites
nbSort < nbTot
ou, en simplifiant
nbEntr + nbRes = nbVoit
nbEntr + nbRes < nbTot
15
Gardes abstraites
0 < nbVoit
ou, en simplifiant
nbSort nbVoit
0 < nbSort
0 < nbVoit
Il faut que le raffinement des invariants soit appliqu chacun de sept invariants ce qui conduit quatorze preuves pour les deux vnements. titre
dexemple on lapplique aux deux derniers invariants.
PK_in et inv_1_6 :
Proprits des constantes nbTot N
0 < nbTot
Invariants abstraits
nbVoit N
nbVoit nbTot
Invariants concrets
nbSort N nbSort 1
nbEntr N nbEntr 1
nbRes N
nbSort + nbEntr + nbRes = nbVoit
nbSort = 0 nbEntr = 0
Gardes concrtes
nbEntr + nbRes < nbTot
nbSort = 0
Gardes abstraites
nbSort + nbEntr + (nbRes + 1) = nbVoit + 1
ou, en simplifiant
nbSort + nbEntr + nbRes = nbVoit
Gardes abstraites
nbSort = 0 nbEntr + 1 = 0
ou, en simplifiant
nbSort = 0
nbSort = 0 nbEntr + 1 = 0
PK_out et inv_1_6 :
Proprits des constantes nbTot N
0 < nbTot
Invariants abstraits
nbVoit N
nbVoit nbTot
Invariants concrets
nbSort N nbSort 1
nbEntr N nbEntr 1
nbRes N
nbSort + nbEntr + nbRes = nbVoit
nbSort = 0 nbEntr = 0
Gardes concrtes
0 < nbSort
Gardes abstraites
(nbSort 1) + nbEntr + nbRes = nbVoit 1
ou, en simplifiant
nbSort + nbEntr + nbRes = nbVoit
17
Gardes abstraites
nbSort 1 = 0 nbEntr = 0
ou, en simplifiant
nbSort = 0 nbEntr = 0
0 < nbSort
nbSort 1 = 0 nbEntr = 0
7.3
Initialisation
On considre au dbut que les variables nbSort, nbEntr et nbRes sont initialises zro :
init_1_1 :
7.4
Blocage
h1 (C,W ) hm (C,W )
ou, encore
En rgle gnrale, on peut ne pas tenir compte dans les premisses de la rgle
de la disjonction des gardes abstraites, dans la mesure o cette disjonction a t
vrifie lors des vrifications du modle prcdent.
En appliquant au modle raffin du parking, on a
18
nbTot N
0 < nbTot
Invariants abstraits
nbVoit N
nbVoit nbTot
Invariants concrets
nbSort N nbSort 1
nbEntr N nbEntr 1
nbRes N
nbSort + nbEntr + nbRes = nbVoit
nbSort = 0 nbEntr = 0
Conclusion
Rfrences
Pour la rdaction de cete expos les livres et articles suivants ont t utiliss :
[1] J.-R. Abrial : The B Book - Assigning Programs to Meanings, Cambridge
Univ. Pr., 1996
[2] J.-R. Abrial : Le cahier des charges, ClearSy, 1998
[3] J.-R. Abrial : tude systme : mthode et exemple, ClearSy, 1998
[4] J.-R. Abrial : Guidelines to formal systems studies, ClearSy, 2000
[5] J.-R. Abrial : Formal method course. II Example : Controlling cars on a
bridge, ETHZ, 2005
[6] D. Cansell, D. mry : Foundation of B method, Computing and Informatics,
vol. 22, pp. 1-31, 2003
[7] M. Ben-Ari : Mathematcal logic for computer science, 2nd edition, SpringerVerlag, 2001
[8] Fr. Gervais, M. Frappier, R. Laleau : Vous avez dit raffinement ?, Cedric Cnam, 2005
[9] H. Habrias : Spcification formelle avec B, Editions Herms, 2001
[10] P. A. Lindsay : A tutorial introduction to formal methods, Univ. Queensland, 1998
[11] G. Pouzancre, J.-Ph. Pitzalis : Modlisation en B-evnementiel des fonctions mcaniques, lectriques et informatiques dun vhicule, Technique et Science
Informatique, vol 22, pp.119-128, 2003
Un site pour tout ce qui concerne les mthodes formels
http ://vl.fmnet.info/
Le site franais pour la mthode B
http ://www-lsr.imag.fr/B/
20
ANNEXES
MODEL
m0_parking
CONSTANTS
/* Nombre maximal de voitures dans le parking */
nbTot
PROPERTIES
/* prop_0_1 et prp_0_2
*/
nbTot:NATURAL &
nbTot>0
VARIABLES
/* Nombre de voitures dans le parking */
nbVoit
INVARIANT
/*
inv_0_1
et inv_0_2
*/
nbVoit:NATURAL &
nbVoit<=nbTot
THEOREMS
/*
*/
(nbVoit<nbTot or nbVoit>0)
INITIALISATION
21
/*
init
*/
n:=0
EVENTS
/* Entre dans le parking */
PK_IN = WHEN nbVoit<nbTot THEN nbVoit:=nbVoit+1 END;
/* Sortie du parking */
PK_OUT = WHEN nbVoit>0 THEN nbVoit:=nbVoit-1 END
END
REFINEMENT
m1_rampe
/* Introduction dune rampe daccs */
REFINES
m0_parking
VARIABLES
/* Nombre de voitures qui sont sur la rampe pour entrer au parking */
nbEntr,
/* Nombre de voitures qui sont dans le parking */
nbRes,
/* Nombre de voitures qui sont sur la rampe pour sortir du parking */
nbSort
INVARIANT
22
/* Inv_1_1 inv_1_5
nbEntr:NATURAL &
nbRes:NATURAL &
nbSort:NATURAL &
/* Invariant
*/
nbEntr<=1
nbSort<=1
inv_1_6
*/
nbEntr+nbRes+nbSort=nbVoit &
/* Invariant inv_1_6
(nbEntr=0 or nbSort=0)
THEOREMS
/* Absence de blocage */
((nbEntr+nbRes<nbTot & nbSort=0) or /*
nbSort>0
)/*
INITIALISATION
nbEntr,nbRes,nbSort:=0,0,0
EVENTS
/* Entre au parking PK_in et inv_1_6 */
PK_IN = WHEN nbEntr+nbRes+nbSort<nbTot & nbSort=0 THEN nbEntr:=nbEnt+1 END;
/* Sortie du parking,
PK_out et inv_1_6 */
23