270 likes | 470 Views
Marzhin: Simulation multi-agents de modèles AADL. Ecole d’été du Temps-Réel Brest, 31 août 2011. Pierre Dissaux. Olivier Marc. AADL Centric tool strategy. AADL Centric tool strategy. STOOD graphical editors HOOD-AADL-UML. CHEDDAR real-time analysis. ADELE graphical editor
E N D
Marzhin: Simulation multi-agents de modèles AADL Ecole d’été du Temps-Réel Brest, 31 août 2011 Pierre Dissaux Olivier Marc
AADL Centric tool strategy AADL Centric tool strategy STOOD graphical editors HOOD-AADL-UML CHEDDAR real-time analysis ADELE graphical editor TOPCASED/SPICES MARZHIN multi-agent model animation AADL Inspector MARTE to AADL model transformation TOPCASED/LAMBDA static rules checkers: - AADL Legality rules - AADL Naming rules - AADL Consistency rules - Metrics - Project specific rules TASTE graphical editor ASSERT bridge to other AADL tools OSATE, OCARINA Other domain specific graphical editors
AADL AADL • Architecture Analysis and Design Language • Standard international SAE AS5506A, janvier 2009 • Langage de modélisation de systèmes intégrant • les applicatifs logiciels et leurs plateformes d’exécution • Langage principalement textuel • Sémantique précise permettant l’analyse des modèles • Langage extensible par ajout de propriétés et d’annexes www.aadl.info
Le « multi-agents » • Agent • Une définition parmi d'autres : • « Un agent est une entité autonome, réelle ou abstraite, qui est capable d’agir sur elle-même et sur son environnement, qui, dans un univers multi-agents, peut communiquer avec d’autres agents, et dont le comportement est la conséquence de ses observations, de ses connaissances et des interactions avec les autres agents. » • Propriétés : • Autonomie. • Action. • Perception. • Communication.
Le « multi-agents » • Système multi-agents (SMA) • Environnement d'exécution distribué composé • d'un ensemble d'agents. • Propriétés : • Chaque agent a un point de vue limité de l'environnement. • Pas de contrôle central. • Les comportements des agents sont asynchrones. • Un but à réaliser conjointement par les agents.
Le « multi-agents » • Domaines d'application des SMA • Télécommunication (aspect distribué). • Data mining (WEB). • Ethologie. • Jeux vidéo.
Le « multi-agents » Exemple : Simulateur de vol hirondelle.
Le « multi-agents » Exemple : Simulateur de vol hirondelle.
Le « multi-agents » Exemple : Foule
Le « multi-agents » • Mise en œuvre des SMA : • Agent : entité logiciel de type objet avec une ou plusieurs unité(s) d'exécution. • Ordonnanceur gérant les unités d'exécution des agents. (ordre prédéfini, ordre aléatoire...)
Le « multi-agents » • SMA et MARZHIN : • Concepts retenus : • Description locale des agents → modélisation simple. • 1 entité AADL = 1 agent. • Comportements locaux → comportement global. • Ordonnanceur simple et maîtrisé n'appelant que les unités d'exécution des agents.
Marzhin historique • fin 2007: étude de faisabilité • 2008-2010: développement du simulateur travaux sur fonds propres • juin 2009: démonstration lors du workshop AADL • 2010: intégration dans l’outil TASTE-CV contrat ESA • 2011: intégration dans l’outil AADL Inspector travaux sur fonds propres • août 2011: sortie commerciale de AADL Inspector 1.0 téléchargement sur www.ellidiss.com
Marzhin overview • Multi-agents simulator: • minimalistic scheduler • behavior is distributed over the threads • based on an existing multi-agents engine developed by Virtualys • runs on a JRE • AADL support: • (single) processor • threads • event ports • shared data access • subprogram calls • behavior annex
Marzhin AADL processor
Suspended Call remote subprogram Dispatch Ready Preempt Awaiting Return Resume Running Return remote subprogram Complete Unblock due to Release Resource Block due to Get Resource Awaiting Resource Marzhin AADL thread states
Marzhin AADL thread dispatch protocols
Marzhin AADL thread features
Marzhin AADL thread properties
Marzhin AADL feature and data properties
Marzhin AADL behavior annex The AADL behavior annex defines an action language to describe the internal behavior of a thread or a subprogram ANNEX Behavior_Specification {** states s : initial complete final state; transitions t : s -[on dispatch]-> s { buffer !<; computation(2 ms); send !; buffer !> }; **};
AADL files Prolog rules Marzin .jar files Prolog predicates aadlrev XML file Simulation trace sbprolog JRE AADL to Marzhin model transformation LMP
Case Studies: Real-Time patterns • Modelling and analysis process: • build the architectural model with Stood • generate the AADL specification • simulate within AADL Inspector • Real-Time communication patterns: • Synchronous dataflow • Message sending • Shared data • Client-server
Synchronous dataflow PACKAGE synchronous PUBLIC WITH HW; SYSTEM synchronous END synchronous; SYSTEM IMPLEMENTATION synchronous.others SUBCOMPONENTS my_process : PROCESS my_process.others; my_platform : SYSTEM HW::RMA_board; PROPERTIES Actual_Processor_Binding => ( reference(my_platform.cpu) ) applies to my_process; END synchronous.others; PROCESS my_process END my_process; PROCESS IMPLEMENTATION my_process.others SUBCOMPONENTS T1 : THREAD a_thread { Dispatch_Protocol => Periodic; Compute_Execution_Time => 5 ms .. 5 ms; Period => 25 ms; }; T2 : THREAD a_thread { Dispatch_Protocol => Periodic; Compute_Execution_Time => 5 ms .. 5 ms; Period => 20 ms; }; T3 : THREAD a_thread { Dispatch_Protocol => Periodic; Compute_Execution_Time => 5 ms .. 5 ms; Period => 15 ms; }; CONNECTIONS PORT T1.output -> T2.input; PORT T2.output -> T3.input; END my_process.others; THREAD a_thread FEATURES input : IN DATA PORT Base_Types::integer; output : OUT DATA PORT Base_Types::integer; END a_thread; END synchronous;
Message sending PACKAGE messages PUBLIC WITH Behavior_Properties; WITH HW; SYSTEM messages END messages; SYSTEM IMPLEMENTATION messages.others SUBCOMPONENTS my_platform : SYSTEM HW::RMA_board; my_process : PROCESS my_process.others; PROPERTIES Actual_Processor_Binding => ( reference(my_platform.cpu) ) applies to my_process; END messages.others; PROCESS my_process END my_process; PROCESS IMPLEMENTATION my_process.others SUBCOMPONENTS sender : THREAD sender.others; receiver : THREAD receiver; CONNECTIONS PORT sender.send -> receiver.receive; END my_process.others; THREAD sender FEATURES send : OUT EVENT PORT; END sender; THREAD IMPLEMENTATION sender.others PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 5ms..7ms; Period => 20ms; ANNEX Behavior_Specification {** states s : initial complete final state; transitions t : s -[on dispatch]-> s { computation(3 ms); send !;computation(3 ms);send ! }; **}; END sender.others; THREAD receiver FEATURES receive : IN EVENT PORT { Dequeue_Protocol => OneItem; Queue_Size => 5; }; PROPERTIES Dispatch_Protocol => Sporadic; Compute_Execution_Time => 2ms..2ms; Period => 21ms; END receiver; END messages;
Shared data PACKAGE shared_data PUBLIC WITH HW; -- PROCESS IMPLEMENTATION my_process.others SUBCOMPONENTS T1 : THREAD T.i1; D1 : DATA D { Concurrency_Control_Protocol => PRIORITY_CEILING_PROTOCOL; }; D2 : DATA D { Concurrency_Control_Protocol => PRIORITY_CEILING_PROTOCOL; }; T2 : THREAD T.i2; CONNECTIONS DATA ACCESS D1 -> T1.D1; DATA ACCESS D2 -> T1.D2; DATA ACCESS D1 -> T2.D1; DATA ACCESS D2 -> T2.D2; END my_process.others; THREAD T FEATURES D1 : REQUIRES DATA ACCESS D; D2 : REQUIRES DATA ACCESS D; END T; THREAD IMPLEMENTATION T.i1 PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 5ms..5ms; Period => 15 ms; ANNEX Behavior_Specification {** states s : initial complete final state; transitions t : s -[on dispatch]-> s { D1 !<; computation(3 ms);D2 !<;D2 !>; D1 !> }; **}; END T.i1; DATA D END D; THREAD IMPLEMENTATION T.i2 PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 5ms..5ms; Period => 20 ms; ANNEX Behavior_Specification {** states s : initial complete final state; transitions t : s -[on dispatch]-> s { D2 !<; computation(5 ms); D1 !<; D1 !>; D2 !> }; **}; END T.i2; END shared_data;
Client-server ACKAGE client_server PUBLIC WITH HW; SYSTEM client_server END client_server; SYSTEM IMPLEMENTATION client_server.others SUBCOMPONENTS my_platform : SYSTEM HW::RMA_board; my_process : PROCESS my_process.others; PROPERTIES Actual_Processor_Binding => ( reference(my_platform.cpu) ) applies to my_process; END client_server.others; PROCESS my_process END my_process; PROCESS IMPLEMENTATION my_process.others SUBCOMPONENTS client_T : THREAD client_T.others; server_T : THREAD server_T; CONNECTIONS SUBPROGRAM ACCESS server_T.start -> client_T.start; END my_process.others; THREAD client_T FEATURES start : REQUIRES SUBPROGRAM ACCESS start; END client_T; THREAD IMPLEMENTATION client_T.others PROPERTIES Dispatch_Protocol => Periodic; Compute_Execution_Time => 5ms..7ms; Period => 15 ms; ANNEX Behavior_Specification {** states s : initial complete final state; transitions t : s -[on dispatch]-> s { computation(2 ms); start !; computation(4 ms) }; **}; END client_T.others; THREAD server_T FEATURES start : PROVIDES SUBPROGRAM ACCESS start { Compute_Execution_Time => 3ms..3ms; }; PROPERTIES Dispatch_Protocol => Sporadic; Compute_Execution_Time => 2ms..4ms; Period => 5 ms; END server_T; SUBPROGRAM start END start; END client_server;
Conclusion • Le standard AADL définit une sémantique d’exécution suffisamment précise pour permettre la mise en œuvre de simulations au niveau modèle. • La technologie multi-agents offre une solution simple et évolutive pour réaliser un simulateur léger. • MARZHIN est à ce jour intégré dans la chaîne d’outils TASTE et dans le produit commercial AADL Inspector • De nombreuses pistes d’amélioration sont à l’étude: • gestion des architectures multi-processeur • gestion des modes AADL • prise en compte plus complète de l’annexe comportementale AADL • meilleure gestion des unités de temps • ajout d’une interface d’entrée pour modèles UML/MARTE • amélioration de la visualisation des chronogrammes • pilotage d’une animation du modèle d’architecture • pilotage d’une animation virtuelle de l’application