Title: G
1Génération de code à partir de spécifications de
systèmes communicants
J-P. Cottin A. Serhrouchni
O. Cherkaoui
UniversitätStuttgart
GL97 - 4 Décembre 1997
2Plan
- The Steam Boiler Control Specification Problem
- Tâches du programme de contrôle
- Courte présentation de Promela/SPIN
- Spécification en Promela
- Processus de développement
- Simulation,Validation et Implémentation
- Le compilateur
- Non-Déterminisme durant lexécution /
Ordonnancement - Résultats - Implémentations distribuées
- Conclusions et prospectives
3Spécification du problème de la chaudière à
vapeur
- Présenté à Dagstuhl lors de Methods for
Semantics and Specification en juin 95 - Problème réaliste, très informel
- Aucun Détail (Format des messages, Comportement
physique exact) - Nécessité de valider le Programme de Contrôle et
pas seulement le Protocole.
Niveaude vapeur
M2
N2
Chaudière
N1
M1
Pompe
Contrôleur de pompe
Valve
Programme de Contrôle
4Tâches du programme de Contrôle
- Maintenir le niveau deau entre N1 et N2
- Le système serait endommagé si le niveau deau
est en dessous / au dessus de M1 / M2 pendant
plus de 5 sec. - Mode Initialisation attends les unités physiques
pour être prêt. - Mode Normal leau est entre les niveaux N1 et N2
- Mode Dégradé lors dune anomalie dun capteur
- Mode de sauvetage tentative de maintenir le
système malgré les anomalies des capteurs.
Estimations des niveaux. - Mode darrêt durgence arrêt de toutes les
opérations du système suite à un des multiples
problèmes prévus.
5Cycle de fonctionnement
- 5 Modes de fonctionnement Initialisation,
Normal, Secours, Dégradé et Arrêt.
D
N
A
I
S
6Détection de pannes prévisibles
- Pompe
- Non respect d un ordre douverture ou de
fermeture - Changement spontanée détat
- Contrôleur de pompe
- Non indication d un ordre de changement détat
- Indication incohérente de changement détat
- Unité de mesure du niveau ou de la vapeur
- Valeur indiquée hors limite
- Valeur incompatible avec la dynamique du système
- Transmission
- Réception dun message inattendu
- Non réception d un message indispensable
7Dynamique du système
v quantité de vapeur q quantité deau
W
U1
Quantitéde vapeur
-U2
0
temps
8Promela/SPIN
- Développé par Gerard Holzmann chez ATT ( The
Design and Validation of Computer Protocols ).
Domaine Public. - Promela Protocol Meta Language. Langage de
spécification basé sur les machines à états
communicantes. - SPIN Simple Promela Interpreter. Outil de
simulation et de validation de spécifications
écrites en Promela. - Lanalyseur permet plusieurs types de
vérifications Deadlocks, Assertions, Livelocks,
code mort, règles de logique temporelle,... - Un outil graphique (Xspin) permet de visualiser
les machines à états, les MSC - SPIN produit une machine à états finis en C
équivalente à celle décrite en Promela.
9Eléments de syntaxe de Promela
- Processus
- Modélisent une machine à états finis
- Un processus (proctype) est défini par une partie
entête (nom, paramètres) et un bloc
dinstructions - Canaux
- Emission/Réception des messages entre processus
- Canal File dattente bornée FIFO
- Variables
- Globales Communication via Shared Memory
- Locales Internes à une machine à états finis.
10Définition dun canal
- Messages Ensemble de paramètres
- Paramètres int,short,byte,bit,bool,chan,mtype
- Exemple de déclaration
11Promela/SPIN les expressions
- Expressions Constituées de termes et
dopérateurs - ,-,,/, opérateurs arithmétiques
- gt,lt,lt,gt,,! opérateurs de comparaison
- ,,! opérateurs logiques
- ,,,ltlt,gtgt opérateurs de niveau bit
- !,? émission et réception de messages
- ( ), groupe et index
- len,run opérateurs particuliers
12Exécutabilité - Non déterminisme
- Une opération (condition, affectation, envoi de
message) est franchie sous réserve de son
exécutabilité. Les propositions peuvent être
exécutables ou bloquées. - 2 opérateurs non déterministes
- Sélection (cf. CSP) SPIN choisira une suite
dinstructions dont la 1ère est exécutable.
if suite_d_instructions_1
suite_d_instructions_2 ...
suite_d_instructions_n fi - Répétition do suite_d_instructions_1
.od
13Le langage
- Processus
- Déclaration des proctype
- Instantiation run
- Processus initial init
- Variables locales
- Exécutabilité
- Non Déterminisme
- if..fi , do..od
- chan cnl1 of byteproctype ProcA(int a,
chan k) byte b if (alt2)
b1 (alt3) b2 (alt4)
b0 fi k ! b proctype ProcB (chan g)
byte v g?v printf( "Valued\n",v)init
run (ProcA(1,cnl)) run (ProcB(cnl))
alt2
alt4
alt3
b2
b1
b0
14Spécification en Promela
- Structure un proctype for
- Programme de contrôle
- Chacune des 4 pompes et leurs contrôleurs
- Chaudière Valve Dispositif de mesure
- Unités Physiques - proctype particulier qui
sera une interface avec le Programme de contrôle. - Définition des message en define
- Programme de contrôle Spécification séquentiel
des modes dopération. - Synchronisation / Contrainte temps réel 5 sec.
Cycle dopération pour le programme de contrôle.
Unités physiques
Programme de contrôle
15Processus de Développement
- Approche Ecrire une spécification dans un
langage formel la valider à laide dun outil. - Simuler/Valider jusquà ce que ça fonctionne.
- Ensuite, implémentation le modèle validé dans un
langage de programmation.
Spécificationinformelledes besoins
SpécificationFormelle
?
Simulation Validation
Implémentation
16Simulation, Validation et Implémentation
- Jusquà présent SPIN pouvant simuler et valider
une spécification Promela - Nous désirons obtenir une Implémentation valide
- Utilisation de la même abstraction (matrice de
changement détat) pour la validation et
limplémentation.
Spécification Promela
Abstraction
Simulation
New!
Validation
Implémentation
17Réutilisation de la machine à états
- Cette réutilisation est facilitée par le fait que
SPIN produit des fichiers C séparés. - On aura plusieurs proctype dans le même process
Unix - Nécessité dun ordonnanceur pour
l implémentation.
Machine à états
pan.h
pan.t
Matrice de transitions
pan.b
pan.c
pan.m
Mouvements arr.
Mouvements avant
18Non-Déterminisme durant lexécution
- Lorsquune machine à états offre plusieurs
possibilités, laquelle choisir? - Différentes stratégies valides sont possibles.
- Choix aléatoire Implémentation se comporterait
comme la simulation. - Quel proctype choisir ?
- Lorsque tous les proctype sont bloqués,
l exécution sarrête.
Proctype A
Proctype B
19Implémentation obtenue
- Un Process Unix gère tous les proctype.
- La communication avec l utilisateur se fait
uniquement via lécran (printf ...)
chaudière
pompes
unités_physiques
init
Programme_de_contrôle
ProcessUnix
20Implémentation Distribuée
- Deux spécifications Promela, lune pour le
programme de contrôle, lautre pour les unités
physiques. - Définition de canaux externes (asynchrones)
- Communication par Sockets
21Conclusions et prospectives
- Promela convient tout à fait à la description
dun problème technique tel que celui de la
chaudière à vapeur - Possibilités de bien structurer le problème
- Nous navons pas couvert tout le problème mais on
arrive déjà à un modèle trop compliqué pour la
validation exhaustive. - Le compilateur et les transmissions de messages
ne sont pas validées - Limplémentation se comporte plus ou moins comme
la simulation - Champ dapplication principale prototypage
rapide - Etude dune autre démarche SDL comme langage
source et C ou Java comme langage cible