Génération de code Java à partir de modèles AADL

Le but de ce projet est de créer un générateur de code Java à partir de modèles AADL. Bien que certains n'ont pas appréciés le cours sur la modélisation, il faut garder à l'esprit que ce type de langage est de plus en plus utilisé dans la construction de systèmes critiques. Par conséquent, ce projet permet de se forger un peu avec les techniques de génération de code avec un langage simple à manipuler.

Vous devrez construire un générateur de code. Pour cela, il faut bien avoir en tête quels sont les langages source et cible. Dans notre cas, le langage source est AADL tandis que le langage cible est Java. Vous devrez donc construire les arbres syntaxiques des deux langages. Lors de la lecture du modèle, l'arbre syntaxique du langage source sera construit. Dès lors, l'arbre syntaxique du langage cible devra être construit en utilisant des patrons de conversion. Une fois ces patrons appliqués, il vous suffit alors de parcourir l'arbre du langage cible et d'écrire les fichiers Java correspondants.

Pour construire le générateur, deux solutions s'offrent à vous

  • Partir de zéro, en construisant votre propre générateur. Attention toutefois, partir de zéro implique la construction d'un parser AADL (avec la construction des arbres syntaxiques) et de toute l'infrastructure qui va autour (manipulation des arbres syntaxiques, ...).
  • Utiliser un générateur déjà existant comme Ocarina. Même si certains n'aiment pas Ada, programmer dans ce langage reste un plus indéniable car il est très utilisé dans le domaine des systèmes critiques. Partir avec une telle base vous affranchira de faire l'arbre syntaxique source, le parser AADL et le générateur de code. Vous n'aurez qu'à décrire l'arbre syntaxique cible et vos patrons de conversion.

Au vu de la densité du projet, il est fortement conseillé de partir d'un générateur déjà existant. Cela vous épargnera de lourdes tâches (construction de l'abre IDL source ...) et vous permettra de vous concentrer au maximum sur le coeur de votre projet. Cependant, il n'y a aucune obligation à réutiliser ce programme.

Bien entendu

Crash-test

On appelle crash-test un test à effectuer avec le programme issu du projet. Bien entendu, plus le programme valide de tests, plus la note sera élevée. L'ensemble des tests peut être trouvé dans l'archive disponible ici (vous les retrouverez dans l'archive d'Ocarina). Voici l'ordre des tests à passer :

  • RMA
  • Ping
  • Toy
  • Sunseeker
  • Flight Management

Rendu demandé

  • Une archive contenant votre programme ou un patch si vous modifiez un outil existant
  • Un rapport détaillant la démarche entreprise au cours du projet

Quelques pointeurs