Vous êtes sur la page 1sur 58

Les mthodes formelles

La mthode formelle B
Gnration de code
Dorian Petit
dorian.petit@inrets.fr

INRETS-ESTAS / LAMIH-ROI
G. Mariano / V. Poirriez

Thse Cofinance INRETS/Rgion Nord Pas-de-Calais


http://www3.inrets.fr/estas/petit/Slides/seminaire-UVHC.pdf
Sminaire LAMIH-ROI p.1/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.2/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.3/44

Par rapport au cycle V classique


Analyse des
besoins

Acceptation

Conception
globale

Tests
dintgration

Analyse des
besoins

Conception
globale
Preuves

Conception
detaille

Tests
unitaires

Conception
detaille
Preuves

Code

Code

Sminaire LAMIH-ROI p.4/44

Pourquoi les utiliser ?

Besoin dune sret de fonctionnement


logiciels critiques
Diminution des dlais de dveloppement, des tests,
des cots, . . .
Alternative aux systmes hardware
(beaucoup plus chers)
Impos par les autorits
(ITSEC, Critres Communs)

Sminaire LAMIH-ROI p.5/44

Pourquoi ne pas les utiliser ?

Construire un modle mathmatique des


programmes
Absence doutils puissants
Demande souvent un gros investissement de dpart
(choix de la mthode, formation du personnel, . . .)

Sminaire LAMIH-ROI p.6/44

Mthodes formelles pour tout ?

Est ce que lutilisation des mthodes formelles


rsout tous les problmes ?

Sminaire LAMIH-ROI p.7/44

Mthodes formelles pour tout ?

Est ce que lutilisation des mthodes formelles


rsout tous les problmes ?

Passage de linformel au formel


Certains problmes se prtent mal une
modlisation formelle (les interfaces utilisateurs)

Sminaire LAMIH-ROI p.7/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.8/44

Quest-ce quune mthode formelle ?


Daprs Gaudel :
Une notation ou une technique est formelle si elle
est sujette des manipulations systmatiques
suivant un calcul mathmatique ; une mthode est
formelle si elle utilise une notation ou une technique
formelle

Sminaire LAMIH-ROI p.9/44

Quest-ce quune mthode formelle ?


Daprs Gaudel :
Une notation ou une technique est formelle si elle
est sujette des manipulations systmatiques
suivant un calcul mathmatique ; une mthode est
formelle si elle utilise une notation ou une technique
formelle
Daprs [Hinchey et al.95b] :
Une mthode formelle est un ensemble doutils et
de notations (avec une smantique formelle),
utiliss pour spcifier de manire non ambige les
spcificits du systme et supportant les preuves de
proprits sur ces spcifications et les preuves de
corrections dune implmentation ventuelle par
rapport la spcification.
Sminaire LAMIH-ROI p.9/44

Quest-ce quune mthode formelle ?

Pour les mthodes formelles de dveloppement logiciel :


un langage formel
une smantique formelle
un mcanisme de preuve associ
Si possible bootstrap

Sminaire LAMIH-ROI p.10/44

Quelques mthodes formelles


puis ([Spivey98, Abrial96])
logique de Hoare, thorie des ensembles


VDM ([JB et al.94])


PVS ([Shankar et al.93])
HOL ([Gordon et al.93])
Coc puis Coq ([Coq01])
thorie des types, preuves constructives
Maude ([Clavel et al.01]) et Mobile Maude
([FD et al.])
+ mthodes par vrification de modles
Sminaire LAMIH-ROI p.11/44

Quelques utilisations

Logiciels embarqus
PAE METEOR (Matra Transport)
interprteur bytecode JavaCard (Gem+)
Protocoles de communications
...
Tout logiciel dont le disfonctionnement est
inacceptable

Sminaire LAMIH-ROI p.12/44

Pour en savoir plus. . .

Comprendre les mthodes formelles


Panorama et outils logiques : [Monin96]
Application des techniques formelles au logiciel :
[Ofta97]
Applications of Formal Methods : [Hinchey et al.95a]
...

Sminaire LAMIH-ROI p.13/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.14/44

La mthode B : gnralits
Historique :
Initie par J.R. Abrial au dbut des annes 80
Similitude avec Z et VDM
Industrialise grce la convention B :
STRIA, RATP, SNCF et INRETS
Puis par : ALSTHOM, MTI

Sminaire LAMIH-ROI p.15/44

La mthode B : gnralits
Historique :
Initie par J.R. Abrial au dbut des annes 80
Similitude avec Z et VDM
Industrialise grce la convention B :
STRIA, RATP, SNCF et INRETS
Puis par : ALSTHOM, MTI
Constituants de B :
Thorie des ensembles
Substitutions gnralises
Machines abstraites (modules)
Raffinement avec obligations de preuves

Sminaire LAMIH-ROI p.15/44

La mthode B : gnralits
Historique :
Initie par J.R. Abrial au dbut des annes 80
Similitude avec Z et VDM
Industrialise grce la convention B :
STRIA, RATP, SNCF et INRETS
Puis par : ALSTHOM, MTI
Constituants de B :
Thorie des ensembles
Substitutions gnralises
Machines abstraites (modules)
Raffinement avec obligations de preuves
Outils :
Atelier de Clearsy (ex STRIA)
B toolkit de B-Core
Sminaire LAMIH-ROI p.15/44

Dveloppement par raffinements


Spcification
informelle
Spcification
abstraite

Raffinement 1

Raffinements successifs

Raffinement n

Implantation

Code cible

Sminaire LAMIH-ROI p.16/44

Mthode

Avantages :
Couvre tout le processus de dveloppement :
de la spcification au code
Base sur une thorie simple (thorie des
ensembles)
Outils existants = botes noires
Inconvnients :
Manque de formalisation sur certains points
Encore trop li lindustrie ferroviaire franaise ?

Sminaire LAMIH-ROI p.17/44

Dfinitions
Composant :
une machine (abstraite), un raffinement ou une
implantation
compos de clauses
Module :
la runion dune machine, de raffinements (0..n) et
dune implantation
4 clauses de liaisons (principales) :
IMPORTS, INCLUDES, SEES et USES
Un module

peut tre paramtr


Sminaire LAMIH-ROI p.18/44

Mthode

: dcomposition

B Mod ul e

Proo f s
M ac hi ne

Re f i ne m e nt
I m p l e m e ntati o n

Cod e
Sminaire LAMIH-ROI p.19/44

Substitutions Gnralises
Substitution lmentaire :
x := e
Prcondition :
PRE P THEN S END
Garde :
SELECT P THEN S (WHEN Pi THEN Si)* END
Choix non dterministe born :
CHOICE S1 OR S2 ... END
Choix non dterministe non born :
ANY X WHERE P THEN S END
Parallle :
S1 || S2
Identit :
skip
Squencement, if, while ...
Sminaire LAMIH-ROI p.20/44

Un exemple de machine
MACHINE

INVARIANT x

VARIABLES x
INITIALISATION
x := 0
OPERATIONS
v <- get == BEGIN v := x END
set (v) ==

PRE v

BEGIN
THEN x := v END

END
END

Sminaire LAMIH-ROI p.21/44

Un exemple de raffinement
MACHINE
M

VARIABLES
x

INVARIANT
INITIALISATION
x := 0
OPERATIONS
op == BEGIN x := 4 END
END
Sminaire LAMIH-ROI p.22/44

Un exemple de raffinement
MACHINE
M

REFINEMENT
R
REFINES
M

VARIABLES

y
INVARIANT

INITIALISATION
x := 0
OPERATIONS
op == BEGIN x := 4 END
END

INVARIANT

VARIABLES

INITIALISATION
y := 10
OPERATIONS
op == BEGIN x := 7 END
END
Sminaire LAMIH-ROI p.22/44

Un deuxime exemple de raffinement


MACHINE
M

VARIABLES
x

INVARIANT

INITIALISATION
N

OPERATIONS
op == skip
END
Sminaire LAMIH-ROI p.23/44

Un deuxime exemple de raffinement


MACHINE
M

REFINEMENT
M_r
REFINES
M

VARIABLES

x
INVARIANT
x

INITIALISATION
N

INVARIANT

VARIABLES

INITIALISATION
x := 0

OPERATIONS

OPERATIONS

op == skip

op == ...

END

END
Sminaire LAMIH-ROI p.23/44

Importation
MACHINE

IMPLEMENTATION

M_IMP
REFINES

VARIABLES
x

M
IMPORTS

INVARIANT

A.PROTECTED_VAR

INITIALISATION
x := 0
OPERATIONS

OPERATIONS

v <- get == BEGIN v := x END

v <- get == BEGIN A.get END

set (v) ==

set (v) ==
BEGIN

PRE v
END
END

BEGIN
THEN x := v END

A.set(v)
END
END

Sminaire LAMIH-ROI p.24/44

Mthode

: Preuves

Une opration est de la forme : PRE P THEN S END


Soit un ensemble dhypothses.

Sminaire LAMIH-ROI p.25/44

Mthode

: Preuves

Une opration est de la forme : PRE P THEN S END


Soit un ensemble dhypothses.










Pour prouver la cohrence dune machine :

Sminaire LAMIH-ROI p.25/44

Mthode

: Preuves

Une opration est de la forme : PRE P THEN S END


Soit un ensemble dhypothses.









Pour prouver la cohrence dune machine :



 

!

 

 


 


 


 











 




 

 





 


Pour prouver la cohrence dun raffinement :

Sminaire LAMIH-ROI p.25/44

Mthode

: o lamliorer ?

Sminaire LAMIH-ROI p.26/44

Mthode

: o lamliorer ?

Rponse : Partout ou plutt tous les niveaux :


passage de linformel au formel
([Bon00], [Facon et al.96], [Fuchs et al.95],...)
du raffinement automatique
([Burdy et al.],...)
de la preuve : connection avec dautres prouveurs
(PVS, Coq, VDM, ...)
du test ([Behnia00])
de la notation (un peu lourde) et de la grammaire
(ambige)
de la gnration de code

Sminaire LAMIH-ROI p.26/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.27/44

Mthode

: gnration de code

Titre de la thse :
tude de la gnration automatique de code sr
partir de spcifications

Sminaire LAMIH-ROI p.28/44

Mthode

: gnration de code

Titre de la thse :
tude de la gnration automatique de code sr
partir de spcifications
Objectifs :
Formaliser ltape de gnration de code
tendre (de manire gnrique ?) les langages
cibles
Prendre en compte certains critres de tailles
des donnes, ...
Intgrer le tout dans une plateforme logicielle
libre et open source

Sminaire LAMIH-ROI p.28/44

Positionnement
Cahier
des charges

Spcifications
formelles
abstraites

Spcifications
formelles
concrtes

Code(s)

Sminaire LAMIH-ROI p.29/44

Positionnement
Cahier
des charges
Transformations
manuelles ou
(semi)automatiques
Spcifications
formelles
abstraites

Spcifications
formelles
concrtes

Code(s)

Sminaire LAMIH-ROI p.29/44

Positionnement
Cahier
des charges
Transformations
manuelles ou
(semi)automatiques
Spcifications
formelles
abstraites
Corpus formel
Spcifications
formelles
concrtes

Code(s)

Sminaire LAMIH-ROI p.29/44

Positionnement
Cahier
des charges
Transformations
manuelles ou
(semi)automatiques
Spcifications
formelles
abstraites
Corpus formel
Spcifications
formelles
concrtes
Mes travaux
Code(s)

Sminaire LAMIH-ROI p.29/44

Plateforme logicielle BCaml

Besoin dune plateforme dexprimentation libre


Au dpart juste un analyseur syntaxique

"

Ensuite GOP, Type checker, UML/B, ...

Important dans le choix de notre dmarche

Sminaire LAMIH-ROI p.30/44

Plateforme logicielle libre pour


Dpliage

HLL

B.TXT

UML/XML

Parseur

Parseur

TONY
XML

BLAST

CEDRIC
DTD
Convertisseur

Typeur

GOP

B.XML

DTD
XSLT

OP/XML

BHLL

Gnration
Code

DTD

MetaCode XML
B.TXT

B . H T ML

PO.TXT
Sminaire LAMIH-ROI p.31/44

Formaliser la gnration de code


Prliminaire : formaliser la notion de modularit
Pourquoi ?
De gros problmes de comprhension et de
manipulation (test de composant [Behnia00])
pouvant mener des incohrences
([Potet et al.98],[Rouzaud], ...)
Comment ?
Dpliage (ou applatissement) des
composants
Plonger le systme de modules de
un autre plus formel.

dans

Sminaire LAMIH-ROI p.32/44

&
?)

%;(4
?*

&

4:
%;(4

&

4:

%;(4
=)

&

=*

%;(4

4:

4:

?*

7(4 +

?)

7(4 +

&
>)

&

%;(4
>*

%;(4

4:

=)

4:

=*

47( +8

47( +8

&

<)

%;(4

<*

&

4:

%;(4

4:

&

):

%;(4

*:

&

4:

%;(4

4:

7(4 +
>)

7(4 +
>*

<)

<*

7(4 +
8

):

7(4 +

7(4 +
8

*:

7(4 +

&

0)

%;(4

0*

&

4:

%;(4

4:

&
9)

%;(4
9*

&

4:
%;(4

0)

7(4 +

4:

0*

7(4 +

&
*1

4:
%;(4

&
)1

4:
%;(4

9)

9*

7(4 +
8

7(4 +

3- A
&

(@ 1
*

*1

7(4 +

' 5&
/6 5
*

% 1&
34 .2
( .&
*

,'- +
/' .
-.
0*

3- A
&

(@ 1
)

)1

7(4 +

' 5&
/6 5
)

% 1&
34 .2
( .&
)

,'- +
/' .
-.
0)

%'( $&
*

%'( $&
)

Graphe de dpendance du BOILER

Sminaire LAMIH-ROI p.33/44

Dpliage
Mcanisme de regroupement des textes formels
dition des liens en compilation classique
Abandonn car dveloppement trop complexe d aux
liens entre composants

solution : plonger le systme de modules de

dans un

autre systme

Sminaire LAMIH-ROI p.34/44

Choix du systme pour le plongement

Les diffrentes possibilits :


systme objet
modules la ML
mixin modules
Choix retenus : le systme la ML
assez simple (intuitivement parlant)
bien dvelopp
a modular module system ([Leroy00])

Sminaire LAMIH-ROI p.35/44

Utilisation de HLL
Grammaire abstraite

Typage

langage de base

langage de base

Mod_Syntax

Grammaire abstraite
avec modules

Env

AEnv

Mod_Typing

Verifieur
Sminaire LAMIH-ROI p.36/44

Caractristiques de HLL
Systme obtenu aprs instanciation :
modules composs de modules, types ou
valeurs
foncteur
possibilit de cacher les constituants dun
module
Contraintes sur le langage de base :
uniquement 2 catgories syntaxiques
(types et valeurs)
mme espace de nom pour les deux catgories
si dfinition de lune des catgories syntaxiques,
impossible de dfinir implicitement dans une
autre catgorie
Sminaire LAMIH-ROI p.37/44

Restrictions
langage de base considr : langage
(sans extension)

primitif

uniquement les composants dits dimplantation


modules

sans paramtre

Sminaire LAMIH-ROI p.38/44

Exemple derreurs
SETS

YY

INITIALISATION

INVARIANT

Nexemple

END

XX

CONCRETE_VARIABLES

END

MACHINE

Mimportee

YY

IMPLEMENTATION

Nimporte

INT

REFINES

Nexemple

YY := 10

IMPORTS

Mimportee

SETS

TT

CONCRETE_VARIABLES
VALUES

ZZ

TT = 1..YY

INITIALISATION

ZZ :=YY

INVARIANT

INT

ZZ

MACHINE

END
Sminaire LAMIH-ROI p.39/44

volution
Au dpart :
une implantation = un module (BHLL)
constitu de modules
dans chaque sous-modules restriction pour un
module vu ou import
une signature pour chaque restriction ncessaire
volution : prise en compte de sous-catgories
syntaxiques
une implantation = un module (BHLL)
simple
pour chaque module BHLL deux signatures (une
pour SEES et une pour IMPORTS)
Sminaire LAMIH-ROI p.40/44

volution

Avantage
simplifie lexpression de la modularit

dans HLL

Inconvnient
impose des restrictions

Sminaire LAMIH-ROI p.41/44

Instanciation

Problme li aux ensembles numrs


dfinition dun nouveau module BEnv pour intgrer
la modification la fonction add_value
Prise en compte des (sous) catgories syntaxiques
pas de modification du systme HLL

Sminaire LAMIH-ROI p.42/44

Plan de la prsentation
Pourquoi les utiliser ?
Panorama (succint)
La mthode
Mthode

: gnration de code

Conclusions et perspectives

Sminaire LAMIH-ROI p.43/44

Conclusions Perspectives
Conclusions
Mthode formelle : passage oblig
Clarification/simplification du systme de module
de
Outil de vrification de la smantique statique
Perspectives
finalisation des dveloppements et intgration
la plateforme
prendre en compte lintgralit du langage
tape suivante : gnration de code
choix faire pour les cibles
Sminaire LAMIH-ROI p.44/44

[Shankar et al.93]

[Rouzaud]

[Potet et al.98]

[Ofta97]

[Monin96]

[Leroy00]

[JB et al.94]

[Hinchey et al.95b]

[Hinchey et al.95a]

[Gordon et al.93]

[Fuchs et al.95]

[FD et al.]

[Facon et al.96]

[Coq01]

[Clavel et al.01]

[Burdy et al.]

[Bon00]

[Behnia00]

[Abrial96]

Spivey (Michl). The Z notation : a reference manual. University of Oxford, 1998.


second edition.

Shankar (N.), Owre (S.) et Rushby (J. M.). PVS Tutorial. Computer Science Laboratory,
SRI International, Menlo Park, CA, feb 1993.

Rouzaud (Yann). Interpreting the B-method in the refinement calculus. Proceedings of


FM99 : World Congress on Formal Methods, pp. 411430.

Potet (Marie-Laure) et Rouzaud (Yann). Composition and refinement in the B method.


B98 : The 2nd International B Conference, d. par Bert (Didier). LIRRM Laboratoire dInformatique, de Robotique et de Micro-lectronique de Montpellier, pp. 4665. Montpellier, avril 1998.

OFTA (dit par). Application des techniques formelles au logiciel. Observatoire Franais des Techniques Avancees & Lavoisier TEC & DOC, 1997.

Monin (Jean-Franois). Comprendre les mthodes formelles Panorama et outils logiques.


Masson, 1996.

Leroy (Xavier). A modular module system. Journal of Functional Programming, vol. 10,
n3, 2000, pp. 269303.

Juan Bicarregui, John Fitzgerald (Peter Lindsay Richard Moore) et Ritchie (Brian). Proof
in VDM : A Practitioners Guide. Springer-Verlag, 1994, FACIT. ISBN 3-540-19813-X.

Hinchey (Michaek G.) et Bowen (Jonathan P.). Applications of Formal Methods, chap.
Applications of Formal Methods FAQ. Prentice Hall, 1995.

Hinchey (M. G.) et Bowen (J. P.) (dit par). Applications of Formal Methods. Prentice
Hall International, 1995, Series in Computer Science.

Gordon (M. J. C.) et Melham (Thomas F.). Introduction to HOL : A theorem proving
environment for higher order logic. Cambridge University Press, 1993.

Fuchs (N. E.) et Schwitter (R.). Specifying logic programs in controlled natural language.
Workshop on Computational Logic for Natural Language Processing. April 1995.

F. Durn, S. Eker (P. Lincoln) et Meseguer (J.). Principles of mobile maude. Submitted
for publication, 2000.

Facon (Philippe), Laleau (Rgine) et Nguyen (Hong Phuong). Mapping object diagrams
into b specifications. Method Integration Workshop. March 1996.

Coq (Coq Development Project). The Coq Proof Assistant Reference Manual, 2001. Version 7.0 1.

Clavel (Manuel), Durn (Francisco), Eker (Steven), Lincoln (Patrick), Mart-Oliet (Narciso),
Meseguer (Jos) et Quesada (Jos F.). Maude : Specification and programming in rewriting
logic. Theoretical Computer Science, 2001. To appear.

Burdy (Lilian) et Meynadier (Jean-Marc). Automatic refinement. FM99 B Users Group


Meeting Applying B in an industrial context : Tools, Lessons and Techniques, pp. 315.

Bon (Philippe). Du cahier des charges aux spcifications formelles : une mthode base sur les rseaux de Petri de haut niveau. Thse de PhD, Universit des Sciences et
Techniques de Lille, 2000.

Behnia (Salimeh). Test de modles formels en B : cadre thorique et critres de couvertures. Thse de doctorat, Institut National Polytechnique de Toulouse, octobre 2000.

Abrial (Jean-Raymond). The B Book - Assigning Programs to Meanings. Cambridge


University Press, aot 1996.

Rfrences

[Spivey98]

44-1