18.11.2012 Views

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

SHOW MORE
SHOW LESS

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 />

Meta­Mo<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>l­Checkers<br />

Simulator<br />

Meta­Mo<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!