Thèse soutenue

Compilation optimisée des modèles UML

FR  |  
EN
Auteur / Autrice : Asma Charfi Smaoui
Direction : Pierre Boulet
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 12/12/2011
Etablissement(s) : Paris 11
Ecole(s) doctorale(s) : Ecole doctorale Informatique de Paris-Sud
Partenaire(s) de recherche : Laboratoire : Laboratoire d'Ingénierie dirigée par les modèles pour les Systèmes Embarqués
Jury : Président / Présidente : Guy Vidal-Naquet
Examinateurs / Examinatrices : Pierre Boulet, Guy Vidal-Naquet, Pierre-Alain Muller, Xavier Blanc, Chokri Mraidha, Albert Henri Cohen
Rapporteurs / Rapporteuses : Pierre-Alain Muller, Xavier Blanc

Résumé

FR  |  
EN

Cette thèse s'inscrit dans le cadre de la mise en œuvre de l’ingénierie dirigée par les modèles (IDM) pour le développement des systèmes embarquées. Ces systèmes ayant généralement des ressources limitées (mémoire et/ou calculs), exigent que le code généré soit le plus optimisé possible. L’objectif de cette thèse est de produire à partir d’un modèle spécifié dans le langage UML, un code assembleur plus compact que le code assembleur produit par les compilateurs de code. Malgré l’évolution croissante des compilateurs optimisés, les compilateurs les plus répandus comme le GCC (Gnu Compiler Collection) sont incapables d’effectuer certains types d’optimisations qu'il est possible d'effectuer à un plus haut niveau d'abstraction dans une phase de pré-génération de code. En effet, certaines informations (liées à la sémantique d’exécution du langage UML) sont perdues lors de la génération de code. Ces informations, utiles pour les optimisations de haut niveau, sont invisibles par le compilateur de code vue qu’il prend toutes les informations liées au système modélisé à partir du code généré. Nous proposons ainsi une nouvelle approche dirigée par les modèles pour le développement des systèmes à ressources limitées, qui élimine l’étape de la génération de code en remplaçant cette étape par une compilation directe des modèles. Nous avons développé le premier compilateur de modèles UML (GUML : le front-end UML pour le compilateur GCC) qui génère directement de l’assembleur (sans passer par un langage de programmation) à partir des modèles UML. GUML permet de compiler les classes, les activités et les machines à états UML. Il permet de générer, en compilant certaines machines à états, un code assembleur plus compact que le code assembleur produit par GCC. Deux optimisations de GCC sont améliorées : l’élimination de code mort et l’élimination des expressions redondantes.