27 janvier 2009

Contexte

Lorsque l’on transmet des commandes vers un instrument (les télécommandes) ou lorsque l’on reçoit les données transmises par cet instrument (les télémétries), il y a un échange de données qui s’établit entre deux systèmes, l’instrument et les moyens de test, selon un protocole de communication précis qui définit le format des échanges (structure des paquets, valeurs des différents champs, etc.). Tous ces échanges se font dans un format binaire et non dans un langage naturel directement exploitable : il est nécessaire d’utiliser des logiciels pour transformer ces données dans un format utilisable par les ingénieurs et les scientifiques.

Chaque nouvel instrument possède son propre langage dépendant de différents facteurs comme le protocole utilisé pour la communication ou la structure des données échangées. Cela signifie donc qu’il est nécessaire, pour chaque nouvel instrument, de réécrire de nouveaux logiciels à même d’interpréter les données échangées. Ce besoin est encore plus flagrant quand on considère que les mêmes données seront interprétées différemment selon les corps de métiers (là où un électronicien verra une tension au sortir d’un capteur, un scientifique lira une intensité lumineuse) et que leur format pourra évoluer dans le temps (le format peut changer pendant les phases de conception, d’intégration et même pendant l’utilisation de l’instrument en cas de modification volontaire de son fonctionnement).

Il devenait donc nécessaire de faciliter et d’accélérer le développement de ces logiciels.

Le projet PALISADE

Pour répondre à ce besoin, l’équipe Logiciel instrumentaux a développé un ensemble d’outils rassemblés dans le projet PALISADE (Parsing Library and Structural Description).

Ce projet est constitué de deux entités :

  • un langage de description,
  • une bibliothèque de composants logiciels.

L’idée est d’utiliser le langage pour décrire le format des données. Nous appellerons par la suite cette description une méta-définition. Les composants logiciels sont capables de récupérer cette méta-définition et de se structurer de manière à pouvoir interpréter correctement les données. Si une méta-définition différente est fournie, les composants se restructurent dynamiquement et s’adaptent au nouveau format. Par la suite nous utiliserons l’anglicisme parser pour désigner ces composants.

Les données binaires présentées au parser seront interprétées et rendues dans un format générique facilement utilisable par le programme de traitement (processus d’analyse), et des données fournies dans ce format générique seront interprétées pour obtenir un format binaire (processus de compilation).

PALISADE

Le langage de méta-définition

Ce méta langage a été entièrement défini via XML et XML Schema. Il fournit un ensemble de structures classiques (boucles, expressions conditionnelles, gestion de variables, utilisation de formules…) qui permettent de simplement décrire la structure des différents flux de données associés à l’instrument. La simplicité d’utilisation de XML, associée à l’expressivité du langage défini par PALISADE, permet d’écrire simplement une méta-définition, facile à comprendre et à modifier.

La bibliothèque de composants logiciels

La bibliothèque est construite autour d’un ensemble de composants coopérants que nous avons nommé parser, chargé des opérations d’analyse et de compilation. Outre ces composants, la bibliothèque fournit différents outils périphériques permettant, par exemple, de traiter en aval les données produites par le parser ou de gérer les différents fichiers de méta-définition.

La bibliothèque a été développée en C++ en utilisant les différents paradigmes de la programmation objet. Fortement modulaire, elle peut rapidement et simplement être enrichie.

Contact : Loïc Gueguen