210 likes | 345 Views
Contexte des travaux. SYSTEM@TIC Usine Logicielle OpenDevFactory PC_xUML. Contexte des travaux. THeSys http://thesys.eu.org. Systèmes hétérogènes. À base de composant (au sens large) assemblage de briques de bases Implantation hétérogène briques de natures différentes
E N D
Contexte des travaux SYSTEM@TIC Usine Logicielle OpenDevFactory PC_xUML CEA -LIST – 23 mars 2007
Contexte des travaux THeSys http://thesys.eu.org CEA -LIST – 23 mars 2007
Systèmes hétérogènes • À base de composant (au sens large) assemblage de briques de bases • Implantation hétérogène briques de natures différentes • Logiciel (différents paradigmes et langages) • Matériel • Mécanique • Modélisation hétérogène Modèles des briques décrits en différents langages • Prendre en compte l’hétérogénéité réelle • Réutiliser des modèles existants CEA -LIST – 23 mars 2007
Implantation hétérogène Pilotage LOGICIEL interface MATERIEL Capteur Vitesse freinage MECANIQUE Pédale accélérateur frein Régulateur de vitesse CEA -LIST – 23 mars 2007
Modélisation hétérogène Langages d’UML VHDL Discret Event Matlab Continuous Time Model Régulateur de vitesse CEA -LIST – 23 mars 2007
Glue • Recoller des traces = • Échanger des valeurs • Synchroniser des temps • En définissant : • Ressources d’exécution • Politique d’exécution : • Concurrence à implémenter (synchrone, asynchrone, parallèle séquentielle…) • ordonnancement CEA -LIST – 23 mars 2007
Objectifs de nos travaux • Définir un langage pour décrire des glues : • Fonctionnelles (modèle de calcul) • Exécutables (modèle d’exécution) • Raisonner sur leurs cycles de développement : • Raffinement • Le test • La preuve Définir un cadre formel (outil indépendant) dédié CEA -LIST – 23 mars 2007
Intégration des travaux • IDM : • décrire formellement la partie comportementale de modèles UML • Intégration dans Accord|UML • VDM : • Test, Model-checking, preuve, simulation, méthodologies • Plateforme AGATHA comme moteur d’exécution CEA -LIST – 23 mars 2007
LEM Langage d’Expression de Modèle d’exécution Langage de recollement de composants hétérogènes • Composant caractérisé par l’ensemble de ses exécutions observables • Colle définition des exécutions du système en fonction de celles de ses composants CEA -LIST – 23 mars 2007
Exemple LEM : la Direction d’un Fast food CLIENT !x ?x COMPTOIR ?y !y CUISINE !t ?t ?z !z CEA -LIST – 23 mars 2007
[I1] [I2] [I3] Tout est EMT ! actions Glue EMT Name Interface Embedded EMT Ports Time { Actions } Name Ports Composants CEA -LIST – 23 mars 2007
Exemple LEM : programmer les interactions EMT Direction (EMT{?x,!y,?t,!z} Comp, {!x,?y} Cli, {!t,?z} Cui) time (real, triggering) timer real timer_1 { when( !x = something ) {reset timer_1 } {!x ?x} ; { when( !y = something and timer_1 ≤ T ) { !y ?y } |w| when( !y = something and timer_1 > T ) {ε} |w| when( !z = something ) { !z ?z } |w| when( !t = something ) { !t ?t } } } !x ?x COMPTOIR CLIENT ?y !y !t ?t CUISINE ?z !z CEA -LIST – 23 mars 2007
SÉMANTIQUE :COMPOSANT arbre GLUE Transformateur d’arbres ||Ci|| TreeInt(EMT Ci) ||Glue|| : TreeInt(EMT C1) … TreeInt(EMT Cn)TreeInt(EMT Glue) donc ||Direction|| (||Comp ||,||Cli ||, ||Cui||) TreeInt(EMT Direction) CEA -LIST – 23 mars 2007
= , , !x !x ?x ?x ?x ?x ?x ?x CLIENT !x !x ?y ?y !y !y !y !y !y !y !t !t CUISINE CLIENT COMPTOIR ?y ?y ?z ?z COMPTOIR ?t ?t ?t ?t !z !z !z !z !t !t ?t ?t CUISINE ?z ?z !z !z Direction Comptoir Client Cuisine Fast food ||Direction|| (||Comp ||,||Cli ||, ||Cui||) TreeInt(EMT Direction) CEA -LIST – 23 mars 2007
Σ0Fast food !x = something reset Direction.timer !x ?x Σ1Fast food Fast food Les états des machines LEM : des snapshots ||Direction|| (||Comp ||, ||Cli ||, ||Cui||) CEA -LIST – 23 mars 2007
Les états des machines LEM : des snapshots Σ0Fast food = (σ0Direction, τ0Direction,{Σ0Comptoir,Σ0Client, Σ0Cuisne}) !x = (x0, )?x = (, ) !y = (, ) ?y = (, ) !z = (, ) ?z = (, ) !t = (, ) ?t = (, ) état temporel enregistrement avec σ0= (σ0 = σ0Direction σ0Comptoir σ0Client σ0Cuisine) Σ0Fast food snapshot Direction.time0 Direction.timer0 τ0Direction = !x = something reset Direction.timer !x ?x Σ1Fast food = (σ1Direction, τ1Direction,{Σ1Comptoir,Σ1Client, Σ1Cuisne}) !x = (x0, ) ?x = (,{(S,!x)}) !y = (, ) ?y = (, ) !z = (, ) ?z = (, ) !t = (, ) ?t = (, ) Σ1Fast food avec σ1= (σ1 = σ1Direction σ1Comptoir σ1Client σ1Cuisine) avecDirection.timer1= 0et Direction.time1 System.time0 Direction.time1 Direction.timer1 τ1Direction = Fast food CEA -LIST – 23 mars 2007
Etat de l’art LEM • BIP : langage d’interactions (behavior/interaction/priority), interfaces des composants modélisées par des automates, traitement faible du temps • Ptolemy II : pas formel (codé en Java), hétérogène/hiérarchique • CommUnity : formel (th. des catégories), pas de temps mais causalité (pre/post) • Tag value : modèle purement sémantique, pas de langage associé • Kermeta : MOF + primitives, UML (non formel) CEA -LIST – 23 mars 2007
Questions ? CEA -LIST – 23 mars 2007