Configuration et Déploiement d Applications Réparties par Intégration de l Hétérogénéité des Implémentations dans un Langage de Description d Architecture Doctorant: Directeurs de thèse: Bechir ZALILA L. PAUTET et J. HUGUES 07/11/2007
Problématique Conception d une chaîne de production qui inclut: Analyse de l application répartie (sémantique, vérification ) Déploiement automatique de l application répartie Configuration automatique de l intergiciel en fonction de l application Deux axes de recherche principaux: ADL, notamment AADL (Architecture Analysis & Design Language) Analyser et déployer l application Intergiciel schizophrène PolyORB Déployer et configurer l intergiciel Exprimée dans plusieurs projets: ASSERT AdaCore Flex-Eware Page 2-07/11/2007
Objectifs Avoir une chaîne de production qui préserve les propriétés non fonctionnelles (ordonnonçabilité ) Générer automatiquement, dans plusieurs langages de programmation (Ada, C ), une partie des composants de l application répartie et de l intergiciel à partir d un modèle AADL et de ses propriétés (exigences) Assembler correctement les composants avec un intergiciel minimaliste en fonction du langage de programmation cible et garantir que le tout est vérifiable Page 3-07/11/2007
Approche (1/3) Identifier et générer les composants de l intergiciel qui seront produits automatiquement à partir des modèles AADL applicatifs Un générateur de composants applicatifs/intergiciels par langage de programmation Un générateur de composants contextuel en fonction des propriétés incluses dans le modèle Composants: Canaux de communication Empaquetage/dépaquetage des données Instances des tâches Page 4-07/11/2007
Approche (2/3) Concevoir un intergiciel minimal qui contiendra les composants communs à toutes les applications réparties Un intergiciel minimaliste par langage de programmation (mais c est le même en terme de fonctionnalité) Pallier le côté minimaliste grâce à la génération de code Composants: Archétype des tâches Tâche périodique Tâche sporadique Protocoles de communication Couche bas niveau du transport Page 5-07/11/2007
Approche (3/3) Assembler automatiquement les composants applicatifs, les composants intergiciels ainsi que les implémentations fournies par l utilisateur (partie fonctionnelle) Descriptions fonctionnelles (fournies par l utilisateur) appli. appli. appli. Composants générés automatiquement à partir de la description AADL couche d encapsulation intergiciel Intergiciel Minimal Page 6-07/11/2007
Génération de Code (1/3) Approche classique: Outils de traitement et de transformation de modèles (Méta-modélisation, Eclipse) Parcours d un arbre syntaxique AADL et génération du code à la volée Spécificités de notre cas: Projection vs. Transformation : possibilité de perte d information Dépendance du code généré vis-à-vis d une interface d intergiciel Approche adoptée: Structure du générateur semblable à celle d un compilateur: partie frontale expansion partie dorsale Construction d un arbre syntaxique pour le langage cible à partir de celui du modèle source en appliquant des règles de transformation Génération du code à partir de l arbre cible Page 7-07/11/2007
Génération de Code (2/3) AADL model Ada Tree Converter Ada (AST) Printer Ada Code AADL (AST) Expansion AADL (Instance) C Tree Converter C (AST) Printer C Code AADL Tree Converter AADL (AST) AADL Code Printer Page 8-07/11/2007
Génération de Code (3/3) Génération automatique des fonctions de manipulation d arbre, à l aide de l outils mknodes Seules les règles de projection doivent être écrites à la main Séparation entre le code généré et sa disposition dans les fichiers Pas de contrainte sur l ordre de parcours de l arbre initial Possibilité d optimisation du code généré tout en ayant un générateur de code simple et maintenable Factorisation de code Page 9-07/11/2007
Résultats (Intergiciel) Contraintes temps réel dur spécifiques aux systèmes critiques: Modèle de concurrence analysable : Profil Ravenscar Restrictions du langage de programmation pour les systèmes critiques Encore plus restrictif que le profil Ravenscar Pas d allocation dynamique ni d'orienté objet PolyORB-HI: un support d'exécution AADL Supporte les constructions AADL Threads périodiques et sporadiques, données, etc. Configure automatiquement à partir du modèle AADL Ressources calculées et allouées statiquement Pas d intervention requise de la part de l utilisateur Occupe une faible taille en mémoire Toute la valeur ajoutée est dans la phase de génération de code Contribuer à la thématique des usines à intergiciels Page 10-07/11/2007
Résultats (Modélisation) Continuation des travaux de T. Vergnaud Ocarina : bibliothèque & outils pour manipuler AADL Parseurs & afficheurs AADL Vérification sémantique Opérations spécifiques Transformation de modèle Propositions autour de la configuration et la génération de code Model Transformation AADL Model Core Library Specific Analyzers Specific Analyzers (Hardware checks ) (Hardware checks ) Code Generators Petri Nets (CPN-AMI) Sched. Analysis (Cheddar) Ada / C AADL Runtime Runtime Page 11-07/11/2007
Résultats (Contributions à Ocarina) Restructuration significative du code existant Générateurs de code Ada/PolyORB (Ada, C)/PolyORB-HI Pour plusieurs plateformes (Native, LEON, ERC32) Configuration du support d'exécution Vérification & Validation Réseaux de Petri Ordonnancement (Cheddar) Un outil en ligne de commande pour automatiser ces tâches Page 12-07/11/2007
Étude de cas MPC (1/2) 1s Send AADL Process as Partition SC_1 Sender_Thread Data_Source: out event data port AADL Thread as Ada Task object Data_Sink: in event data port 100m s Receiver_Threa 500m s Receiver d d Update Read Local Watch read update Object SC_2 SC_3 AADL Data as Ada Protected object Watcher_Threa Data_Sink: in event data port 100m s Receiver_Threa 500m s Watcher_Threa Receiver d d Update Read Local Watch read update Object LEON TSIM SpaceWire LEON TSIM SpaceWire LEON TSIM Page 13-07/11/2007
Étude de cas MPC (2/2) Tous les patrons d interaction Tâches périodiques et sporadiques Donnée partagées Répartition transparente à l applications Configuration et déploiement des nœuds Vérification effectuées sur le modèle AADL Liaison entre le matériel et les ressources logicielles Types de données Cohérence des connections (flux de données) Ordonnonçabilité (Cheddar) Code généré Tout le code est généré par Ocarina à partir des modèles AADL Code conforme à toutes les restrictions pour les systèmes critiques Exécutables Empreinte mémoire: 792KB Runtime + code utilisateur : 392kB Piles des tâches: 400kB à optimiser grâce à des analyses plus poussées Démonstration sur LEON2+SpaceWire Bus SpaceWire simulé par tsim Pro Page 14-07/11/2007
Conclusions et perspectives Objectifs atteints: Proposition d une chaîne de production pour les systèmes répartis temps-réel. Réalisation de cette chaîne de production à travers l outil de modélisation Ocarina et l intergiciel d exécution PolyORB-HI 5 publications dans des conférences de bonne renommée Expérimentation positive dans le cadre d exemples élaborés d ASSERT et de la SAE. Ce qui reste à faire: Démonstration finale des études de cas du projet ASSERT Rédaction de l annexe génération de code pour le standard AADL 2.0 Une suite de tests de performances sur des plates-formes embarquées Page 15-07/11/2007