Vérification formelle de spécifications AADL via FIACRE - IDL
Vérification formelle de spécifications AADL via FIACRE - IDL
Vérification formelle de spécifications AADL via FIACRE - IDL
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
<strong>Vérification</strong> <strong>formelle</strong> <strong>de</strong> <strong>spécifications</strong> <strong>AADL</strong> <strong>via</strong><br />
<strong>FIACRE</strong> 1<br />
Bernard Berthomieu Jean-Paul Bo<strong>de</strong>veix Silvano Dal Zilio<br />
Mamoun Filali François Vernadat<br />
IRIT-CNRS ; LAAS- CNRS<br />
Université <strong>de</strong> Toulouse, France<br />
Ecole d’été temps réel<br />
ETR’11<br />
29 Août - 2 Septembre , 2011<br />
1. Ce travail a été partiellement financé par le projet, du pôle <strong>de</strong> compétitivité<br />
AESE, Topcased ainsi que par la région Midi-Pyrénées et <strong>de</strong> la FRAE.<br />
1 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Outline<br />
1 Introduction<br />
2 Le langage Fiacre<br />
3 Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
4 Conclusions<br />
2 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Introduction<br />
Projet Cotre.<br />
Projet RNTL<br />
AIRBUS, ENSTB, IRIT, LAAS, ONERA, TNI.<br />
Projet Topcased.<br />
Pôle <strong>de</strong> compétitivité AESE. FUI DGE.<br />
AIRBUS, . . .<br />
3 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Origines <strong>de</strong> Fiacre : Topcased<br />
Topcased : Toolkit in OPen-source for Critical Applications<br />
& SystEms Development<br />
2005-2010 FUI-DGE & CR Midi-Pyrénées<br />
Partenariat : Airbus, Continental, Astrium, Thales, C&S,<br />
Atos-Origin, Anyware, ..., Ellidiss INRIA, CEA, Irit, Onera,<br />
Laas, ...<br />
Réduire <strong>de</strong>s couts <strong>de</strong> développement<br />
Pérenniser un atelier <strong>de</strong> d’eveloppement <strong>via</strong> une aproche<br />
open-source<br />
Disposer d’un processus et <strong>de</strong> l’outillage associé permettant<br />
<strong>de</strong> passer - sans discontinuité - <strong>de</strong> la conception du modèle<br />
jusqu’au co<strong>de</strong> en passant par la simulation, documentation, ...<br />
vérification <strong>formelle</strong>.<br />
4 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Topcased overview<br />
TOPCASED<br />
Mo<strong>de</strong>l editors<br />
TOPCASED<br />
Mo<strong>de</strong>l to Mo<strong>de</strong>l<br />
Transformations<br />
TOPCASED<br />
Simulator Engines<br />
TOPCASED<br />
Mo<strong>de</strong>l to Text<br />
Transformations<br />
TOPCASED<br />
Formal Checking<br />
Configuration, Change and Requirements management<br />
tools communication<br />
1<br />
Source co<strong>de</strong>,<br />
Test co<strong>de</strong>,<br />
Documentation,<br />
…<br />
5 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Description et <strong>Vérification</strong> <strong>formelle</strong>s Logiciels<br />
concurrents, réactifs, répartis, temps réel<br />
Points durs :<br />
Formel/Métier , Passage à l’échelle, Problèmes indécidables<br />
Domaines :<br />
Logiciels temps réel, Protocoles <strong>de</strong> communication,<br />
Critique/Embarqué<br />
6 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Fiacre : Langage pivot pour la vérification<br />
⇒<br />
Fiacre : Format intermédiare pour l’assemblage <strong>de</strong><br />
composants embarqués répartis<br />
Langage formel inspiré <strong>de</strong> la théorie <strong>de</strong> la concurrence,<br />
V-Cotre, NTIF, E-LOTOS, BIP<br />
7 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Topcased Chaînes <strong>de</strong> <strong>Vérification</strong><br />
MetaMo<strong>de</strong>ller<br />
Mo<strong>de</strong>lling Languages<br />
Editors<br />
June 05 IRISATECH<br />
PDL<br />
Transformation Engine<br />
ATL,KERMETA,...<br />
Compilers<br />
Mo<strong>de</strong>lCheckers<br />
Simulator<br />
MetaMo<strong>de</strong>lling<br />
<strong>AADL</strong> SDL SYSML<br />
UML2.0<br />
Common Format<br />
Mo<strong>de</strong>l Transformation<br />
Translation<br />
TINA CADP<br />
...<br />
Simulation & Formal Verification<br />
...<br />
1<br />
8 / 46
Traits<br />
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Langage formel <strong>de</strong> <strong>de</strong>scription <strong>de</strong> systèmes TR<br />
Process = composants <strong>de</strong> base<br />
États explicites, transitions symboliques<br />
Structures <strong>de</strong> contrôle classiques<br />
Riches types <strong>de</strong> données<br />
Communications (variables partagées ET messages)<br />
Component = compositons + contraintes<br />
Description <strong>de</strong>s interactions entre sous-composants<br />
Contraintes temporelles sur interactions<br />
Contraintes <strong>de</strong> priorité sur interactions<br />
9 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Types <strong>de</strong> données<br />
Basiques :<br />
int, nat, bool<br />
Intervalles :<br />
type byte is 0..255<br />
Unions et énumérations :<br />
type color is union red | green | blue end<br />
type response is union Bat of nat | Bool of bool end<br />
Enregistrements :<br />
type size is record width : nat, height : nat end<br />
Tableaux et files <strong>de</strong> taille fixe :<br />
type table is array 10 of nat end<br />
type fifo is queue 5 of byte end<br />
10 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Composants <strong>de</strong> base<br />
Process, paramétrés par :<br />
<strong>de</strong>s canaux <strong>de</strong> communications, typés et orientés<br />
<strong>de</strong>s variables partagées, typées et avec contrôle d’accés<br />
<strong>de</strong>s valeurs typées<br />
process Q [p : in nat] (&x : read 0..7, z : bool)<br />
Transitions :<br />
définies par un état initial s et un bloc d’instructions S<br />
définissant les actions à effectuer <strong>de</strong>puis l’état cible : from s S<br />
11 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Instructions (1/2)<br />
Affectations<br />
P1, . . . , Pn := E1, . . . , En<br />
P1, . . . , Pn := any where E<br />
case E of P1 → S1| . . . | Pn → Sn end<br />
Séquences<br />
S1; . . . ; Sn<br />
Boucles et branchements<br />
if E then S1 else S2 end<br />
foreach E do S end<br />
while E do S end<br />
12 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Instructions (2/2)<br />
Alternatives<br />
select S1 [] . . . [] Snend<br />
Synchronisation et Communication<br />
Synchronisation : p<br />
Emission : p!E1, . . . , En<br />
Réception filtrante : p?E1, . . . , En where E<br />
Saut vers état suivant<br />
to s<br />
loop<br />
13 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Un exemple (1/2)<br />
type in<strong>de</strong>x is 0..3<br />
type request is union getSum | getValue of int end<br />
type data is array 4 of nat<br />
14 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Un exemple (2/2)<br />
process ATM [req : in request, resp : out nat ] is<br />
states ready, sendSum, sendValue<br />
var c : request, i : in<strong>de</strong>x, sum : nat, val : data := [6,2,7,9]<br />
Init to ready<br />
from ready<br />
req ? c<br />
case c of<br />
req ? getSum → to sendSum<br />
req ? getValue i → to sendValue<br />
end<br />
from sendValue<br />
resp ! val[i] ;<br />
to ready<br />
from sendSum<br />
sum := 0 ;<br />
foreach i do sum := sum + val [i] end ;<br />
resp ! sum ;<br />
to ready 15 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Sémantique <strong>de</strong>s transitions<br />
Peuvent avoir plusieurs chemins d’éxécution<br />
en raison <strong>de</strong>s if, case, ...<br />
en raison du non déterminisme (select, any, ?, ...)<br />
Contrainte<br />
au plus un événement <strong>de</strong> communication/synchronisation<br />
ou écriture VP par chemin d’éxécution<br />
Transitions sont atomiques<br />
éxécutées entièrement (= jusqu’à un saut) ou pas du tout<br />
16 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Composants<br />
Compositions, paramétrés par :<br />
canaux <strong>de</strong> commnication/synchronisation typés et orientés (in, out)<br />
variables {partagées} typées et avec contrôle d’accés (read, write)<br />
Canaux locaux et variables partagées locales<br />
variables {partagées}<br />
canaux locaux {temporellement contraints} port p : 0..7 in [2, 5[<br />
priorités priority p | q | r < a | b<br />
Comportement défini par :<br />
produit synchronisé d’instances <strong>de</strong> processus ou composants<br />
contraintes temporelles sur interactions<br />
contraintes <strong>de</strong> priorité sur interactions<br />
17 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Exemple <strong>de</strong> composant<br />
type msg is ....<br />
process P [inp, out : msg] is<br />
state off, on<br />
init off<br />
from off inp ; to on<br />
from on out ; to off<br />
component C is<br />
port a, b, c, d : msg in [1,3]<br />
priority c > b<br />
par<br />
b − > P [a, b]<br />
|| b, c − > P [b,c]<br />
|| c − > P [c,d]<br />
end<br />
18 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Outillage Fiacre (1/2)<br />
(2007-2010)<br />
Meta-modèle Fiacre<br />
Sémantique <strong>formelle</strong><br />
LAAS-CNRS<br />
- Front : Fiacre → AT<br />
- Frac : AT → TTS/TINA<br />
(2007-2010)<br />
INRIA/VASY<br />
- Flac : AT → LOTOS/CADP<br />
19 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Outillage Fiacre (2/2)<br />
Front : front-end (commun pour Flac et Frac)<br />
Parser (lex, yacc) + Contrôle <strong>de</strong> types + ver. statiques → AST<br />
annoté<br />
Frac : back-end pour Tina-TTS<br />
Réduction <strong>de</strong>s constructions dérivées (select, any, etc) → Core-AST<br />
Composition statique <strong>de</strong>s composants → TTS abstrait<br />
Mise à plat, Instantiations, Passage <strong>de</strong>s paramètres<br />
Optimisations → TTS optimisé<br />
Analyse <strong>de</strong>s variables<br />
Normalisation <strong>de</strong>s transitions<br />
Génération → .tts<br />
.tts = Réseau <strong>de</strong> Petri (.net) + Traitement données (.c selon<br />
API)<br />
Librairie partagée (.dll/.so/.dylib) produite <strong>de</strong>puis .c<br />
20 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
TINA TIme petri Net Analyzer<br />
nd<br />
Editeur graphique et textuel <strong>de</strong> réseaux temporels et d’automates<br />
Interfacé avec outils d’abstraction et <strong>de</strong> vérification<br />
tina (TIme petri Net Analyser)<br />
Génère abstractions <strong>de</strong> comportements<br />
Préservant famille choisie <strong>de</strong> propriétés<br />
Sortie en clair ou formats dédiés<br />
selt, muse, plan<br />
struct<br />
Vérificateurs <strong>de</strong> modèles pour State/Event LTL et Mu-calcul<br />
Analyseur/synthétiseur <strong>de</strong> chemins temporisés<br />
Analyse structurelle<br />
ktzio, ndrio, etc<br />
21 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Modèles pris en compte par TINA<br />
basés Réseaux <strong>de</strong> Petri<br />
Réseaux Temporels (Time Petri Nets Merlin 74, BB/MM 83,<br />
BB/MD 91)<br />
+ Données (Keller Transition Systems + time intervals)<br />
+ Suspension/Reprise (Stopwatch TPNs, BLRV 05, BLVR 07)<br />
+ Priorités (BPV 06, BPV 07)<br />
Structure Mathématique : Timed Transition Systems<br />
Etats, transitions discretes et temporisées<br />
22 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
TPNs – Abstractions supportées par TINA<br />
Abstractions : Graphes <strong>de</strong> classes d’états<br />
Classe d’état = ensemble d’état<br />
classe = marquage (état discret) + polyèdre (information<br />
temporelle)<br />
Differentes constructions, préservant :<br />
Marquages + traces (LTL) (SCG [BM83], Essential states<br />
[Popova91])<br />
Marquages (SCG⊂)<br />
Marquages + états + traces (SSCG [BV03])<br />
Marquages + états (SSCG⊂)<br />
Marquages + états + traces + branchements (CTL ∗ ) (ASCG<br />
[BV03])<br />
Théorème : Abstractions finies ssi réseau est borné<br />
23 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
<strong>AADL</strong> (I)<br />
Logiciel avionique critique<br />
Langage MetaH<br />
Analyse temps réel<br />
long experience<br />
−−−−−−−−−−−−→<br />
”good practice”<br />
Architecture<br />
Analysis<br />
Description<br />
Language<br />
Aujourd’hui <strong>AADL</strong> est :<br />
un standard <strong>de</strong> la SAE.<br />
une base pour le standard <strong>de</strong> l’OMG : MARTE.<br />
le langage <strong>de</strong> modélisation <strong>de</strong>s systèmes temps réel <strong>de</strong><br />
l’environnement TOPCASED (environnement générique <strong>de</strong><br />
modélisation <strong>de</strong> langages).<br />
24 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
<strong>AADL</strong> (II)<br />
<strong>AADL</strong> est un langage <strong>de</strong> <strong>de</strong>scription d’architecture :<br />
Components :<br />
Logiciel : process, thread, thread group, subprogram, and data.<br />
Matériel : processor, bus, memory, <strong>de</strong>vice.<br />
Système : system.<br />
Sémantique d’exécution précise par rapport à :<br />
l’ordonnancement,<br />
la communication,<br />
la synchronisation.<br />
25 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
sli<strong>de</strong>_light<br />
sli<strong>de</strong>_warn<br />
handle<br />
handle_pos<br />
pressure_warn<br />
pres_warn<br />
flight_loc<br />
in_fligh on_ground airspeed3 airspeed2 airspeed1<br />
door1_ECAM door2_ECAM<br />
lock<br />
RDC_access<br />
door1<br />
RDC1<br />
door2<br />
door afdx<br />
closed_sensor1<br />
closed<br />
closed_sensor2<br />
RDC2<br />
closed<br />
lock_latched1<br />
ll<br />
lock_latched2<br />
ll<br />
lock_latched3<br />
ll<br />
iface<br />
AFDX<br />
airspeed1<br />
airspeed2<br />
airspeed3<br />
on_ground<br />
in_fligh<br />
door1<br />
door2<br />
dps1<br />
dps2<br />
DPS1<br />
dps<br />
DPS2<br />
dps<br />
doors_process2<br />
doors_process1<br />
door_handler1<br />
airspeed1<br />
airspeed2 door_info<br />
airspeed3<br />
door_lock<br />
on_ground<br />
in_fligh<br />
iface<br />
dps1<br />
dps2<br />
door_handler2<br />
OCU1<br />
cll<br />
CPIOM1<br />
afdx<br />
door1_info door2_info<br />
CPIOM2<br />
doors_mix<br />
door1_lock<br />
door_2lock<br />
cll<br />
OCU2<br />
cll<br />
cll<br />
26 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Le modèle d’exécution <strong>AADL</strong> (résumé à partir <strong>de</strong> la documentation<br />
officielle) :<br />
At dispatch, a thread reads its input ports<br />
Dispatched thread execute (i.e. access to the processor)<br />
during at most their WCET, until completion, un<strong>de</strong>r the<br />
control of a scheduler.<br />
Completion must occur before <strong>de</strong>adline for the system to be<br />
schedulable.<br />
At completion, a thread writes its results computed from its<br />
input ports to its output ports. (In the following, we suppose<br />
each thread has only one output port).<br />
If two threads linked by immediate connections are dispatched<br />
simultaneously, the sen<strong>de</strong>r’s completion occurs before the<br />
receiver’s start of execution, immediate links transfer data at<br />
that time and the corresponding input ports are read again by<br />
the thread, thus refreshing the value obtained at dispatch.<br />
27 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
The graph of no<strong>de</strong>s connected by immediate links should be<br />
acyclic.<br />
Delayed and unsynchronized immediate connectors read<br />
output ports at the sen<strong>de</strong>r <strong>de</strong>adline and update input ports at<br />
receiver dispatch. The update causally prece<strong>de</strong>s the<br />
simultaneous reading of input ports.<br />
28 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Exemple d’architecture dynamique <strong>AADL</strong><br />
i5 t1:<br />
period: 10<br />
o1<br />
i4 <strong>de</strong>adline: 10 o2<br />
d<br />
i2<br />
d<br />
d<br />
i i<br />
t3:<br />
period: 15<br />
<strong>de</strong>adline: 5<br />
o3<br />
o4<br />
i1<br />
i3<br />
t2:<br />
period: 10<br />
<strong>de</strong>adline: 5<br />
o5<br />
29 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Protocoles <strong>de</strong> communication <strong>AADL</strong><br />
data<br />
event<br />
immediate<br />
data<br />
immediate<br />
data<br />
dispatch start of<br />
execution<br />
complete <strong>de</strong>adline<br />
<strong>de</strong>layed data<br />
immediate connection <strong>de</strong>layed connection<br />
30 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Modélisation Fiacre<br />
S0 S1<br />
S3<br />
dispatch?params_<strong>de</strong>layed<br />
complete!results<br />
computation<br />
S2<br />
execute?<br />
params_immediate<br />
31 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Mise en oeuvre<br />
thread 1 ... thread n<br />
Thread<br />
glue<br />
Complete!D<br />
Dispatch!...<br />
Event_i<br />
EventData_i<br />
Glue<br />
32 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Exemple <strong>de</strong> traduction<br />
system imm end imm ;<br />
system implementation imm . i<br />
subcomponents<br />
p : process p imm . i ;<br />
end imm . i ;<br />
process p imm end p imm ;−− p imm e s t un type <strong>de</strong> p r o c e s s u<br />
process implementation p imm . i −− c h o i x <strong>de</strong> l ’ i m p l a n t a t i o<br />
subcomponents<br />
s : thread t s e n d e r . i ; −− c h o i x <strong>de</strong> l ’ i m p l a n t a t i o n t s e n<br />
r : thread t r e c e i v e r . i ; −− c h o i x <strong>de</strong> l ’ i m p l a n t a t i o n t r<br />
connections −− e n t r e t h r e a d s<br />
−− s . p e s t l e p o r t emetteur r . p e s t l e p o r t r e c e p t e u r .<br />
data port s . p− >r . p ; −− c o n n e x i o n immediate<br />
end p imm . i ;<br />
33 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
−− t h r e a d d e s c r i p t i o n s .<br />
thread t r e c e i v e r<br />
f e a t u r e s<br />
p : i n event port ;<br />
p r o p e r t i e s<br />
D i s p a t c h P r o t o c o l => P e r i o d i c ;<br />
P e r i o d => 10 Ms ;<br />
end t r e c e i v e r ;<br />
thread t s e n d e r<br />
f e a t u r e s<br />
p : out event port ;<br />
p r o p e r t i e s<br />
D i s p a t c h P r o t o c o l => P e r i o d i c ;<br />
P e r i o d => 10 Ms ;<br />
end t s e n d e r ;<br />
34 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Exemple <strong>de</strong> traduction<br />
texte Fiacre (génération du traducteur <strong>AADL</strong>-Fiacre)<br />
process t r e c e i v e r [ F d i s p a t c h : i n i n t#bool ,<br />
F c o m p l e t e : out none ,<br />
F d e a d l i n e : out none ,<br />
F s c h e d u l e : i n F i n t e g e r o p t i o n ,<br />
F CMP 3000 5000 : i n out none ] i s<br />
s t a t e s s0 , F c s0 , st 10756 , st 11378 , s t 1 1 6 4 0<br />
var p : i n t := 0 ,<br />
p opt : F i n t e g e r o p t i o n := F i n t e g e r n o n e ,<br />
p f r e s h : bool := f a l s e<br />
35 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Exemple <strong>de</strong> traduction<br />
i n i t to s0<br />
from s t 1 1 3 7 8 F CMP 3000 5000 ; to F c s 0<br />
from s t 1 0 7 5 6 F s c h e d u l e ? p opt ;<br />
c a s e p opt of<br />
( F i n t e g e r s o m e ( p ) ) → p f r e s h := true<br />
| F i n t e g e r n o n e → n u l l<br />
end ;<br />
i f p f r e s h then to s t 1 1 3 7 8<br />
e l s e to F c s 0<br />
end<br />
from s0 F d i s p a t c h ?p , p f r e s h ; to s t 1 0 7 5 6<br />
from s t 1 1 6 4 0 F d e a d l i n e ; to s0<br />
. . .<br />
36 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Réalisations.<br />
Traducteur <strong>AADL</strong>-Fiacre.<br />
Annexe comportementale (contribution).<br />
Sémantiques <strong>de</strong> sous ensembles <strong>de</strong> <strong>AADL</strong> (B, Coq).<br />
Compléter la couverture <strong>AADL</strong> : mo<strong>de</strong>s.<br />
37 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Conclusions<br />
Retours d’expérience.<br />
Travaux en cours.<br />
38 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Retour d’expérience et travaux en cours<br />
+ Etu<strong>de</strong>s <strong>de</strong> cas “significatives” :<br />
Protocoles avioniques : étu<strong>de</strong> <strong>de</strong> cas APOTA.<br />
Protocole <strong>de</strong> communication entre le pilote et les stations au<br />
sol.<br />
Utilsation <strong>de</strong> l’outil A<strong>de</strong>le.<br />
Développement “sur le terrain” (CS) : (5 threads, une dizaine<br />
<strong>de</strong> buffers).<br />
Parking (Rétro Ingénierie UFSC).<br />
Traduction BPEL-Fiacre. E. Fares, N. Guermouche.<br />
Etu<strong>de</strong>s <strong>de</strong> cas NRBC, Ticketing.<br />
Protocole <strong>de</strong> redondance (maître-esclave).<br />
Portes d’avion. (projet CESAR).<br />
.<br />
39 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Résultats Topcased / Fiacre<br />
Polychrony<br />
LOTOS<br />
CADP<br />
<strong>AADL</strong><br />
<strong>AADL</strong>2Fiacre<br />
<strong>FIACRE</strong><br />
Front<br />
Flac Frac<br />
TTS<br />
SDL<br />
TINA<br />
...<br />
QUARTEFT<br />
FNRAE<br />
FNRAE<br />
ARTEMIS<br />
ITEmIS<br />
ANR<br />
OPEES<br />
ITEA<br />
1<br />
40 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Retours d’expérience<br />
Quelle confiance dans les<br />
transformations successives ?<br />
– Transformations complexes<br />
Support <strong>de</strong> validation ⇒<br />
Mécanisation Coq,B.<br />
Retours <strong>de</strong> vérification au<br />
niveau Métier. Possibilité <strong>de</strong><br />
factoriser les aspects temps<br />
réels.<br />
Fiacre ⇒ RT-Fiacre<br />
41 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Travaux en cours<br />
Enrichissement du langage Fiacre.<br />
Etu<strong>de</strong> <strong>de</strong> la validation <strong>de</strong> la chaîne <strong>de</strong> traduction.<br />
Mécanisation <strong>de</strong> la sémantique <strong>de</strong> sous ensembles<br />
“synchrones” <strong>de</strong> <strong>AADL</strong> en B, Coq (M. Garnacho).<br />
Support <strong>de</strong> raisonnement pour <strong>de</strong>s programmes Fiacre<br />
“infinis”, paramétrés.<br />
Base sémantique pour <strong>de</strong>s extensions :modularité, raffinement<br />
(A. Boudjadar, E. Fares).<br />
Extension <strong>de</strong> Fiacre : contrats (J.-B. Raclet).<br />
42 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Retours d’expérience<br />
Possibilité d’étendre Fiacre<br />
– Simplifier <strong>de</strong>s traductions<br />
– Optimiser <strong>de</strong>s traductions<br />
Expression <strong>de</strong>s propriétés<br />
43 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Evolutions <strong>de</strong> Fiacre<br />
Fonctions<br />
Natives<br />
Importée <strong>de</strong>puis C (selon API publiée)<br />
Langage d’observation<br />
Autres<br />
Son<strong>de</strong>s (à la DTrace/Instruments)<br />
Observables<br />
Observateurs en O-Fiacre<br />
Polymorphisme paramétrique (un peu <strong>de</strong>)<br />
Déclarations locales plus souples<br />
. . .<br />
44 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Evolutions <strong>de</strong> Tina<br />
Optimisations en espace<br />
<strong>Vérification</strong>/écriture <strong>de</strong>s espaces d’états à la volée<br />
Mémoriser ensembles plutôt que graphes<br />
Représentations spécialisées<br />
Compression <strong>de</strong>s (représentations <strong>de</strong>s) états<br />
Passage à l’échelle<br />
Exploration/<strong>de</strong> vérification parallèles<br />
Espaces d’états conservés en bases <strong>de</strong> données<br />
Optimisation <strong>de</strong> modèles<br />
Simplification/Optimisation <strong>de</strong> modèles (réductions, etc)<br />
Prise en compte informations spécifiques (symetries, invariants)<br />
Interprétation abstraite, pour systèmes infinis (Fiacre)<br />
45 / 46
Introduction<br />
Le langage Fiacre<br />
Modélisation <strong>de</strong> protocoles <strong>de</strong> communication <strong>AADL</strong><br />
Conclusions<br />
Trugarez<br />
Merci<br />
http ://www.topcased.org/<br />
http ://gforge.enseeiht.fr/projects/quarteft/<br />
http ://gforge.enseeiht.fr/projects/fiacre/<br />
http ://homepages.laas.fr/bernard/fiacre/<br />
http ://homepages.laas.fr/bernard/tina/<br />
46 / 46