A. PARALLELLE ARCHITECTUREN

A5. PARTS : Production de logiciel temps-réel pour système parallèle par transformation de spécifications graphiques


Prof. M. LOBELLE, UCL, Unité d'Informatique
Place Sainte-Barbe 2, 1348 Louvain-La-Neuve

Le domaine de recherche du projet PARTS était la transformation automatique de la spécification graphique d'un système temps-réel en logiciel pour environnement parallèle.

Le langage de spécification graphique choisi comme point de départ du projet, appelé G++, présente les spécifications sous forme de machines à états parallèles et hiérarchiques. Ce langage ne spécifiait que le comportement du système mais pas comment réaliser des traitements c'est-à-dire comment manipuler des variables et des types. Ces manipulations constituent ce qu'on appelle l'aspect transformationnel de la spécification. Le langage prévoyait uniquement que de telles manipulations étaient encapsulées dans ce qu'il appelle des actions.

Afin de garantir la cohérence des spécifications à transformer, il a d'abord fallu définir formellement une sémantique du langage incluant les actions. La formalisation reste, en effet, la clé pour aboutir à une implémentation correcte et à une production de code cohérente. De plus, le domaine d'utilisation (essentiellement industriel) des systèmes temps-réel d'envergure impose de pouvoir contrôler et garantir tant la qualité du logiciel produit que la qualité et la pertinence de la spécification. Ces objectifs ne pouvaient être atteint sans une définition complète et formelle du langage de spécification utilisé. Cet aspect du projet s'est révélée d'une envergure significativement plus large que prévue.

Plusieurs tentatives ont été nécessaires pour prendre conscience des différentes facettes de la définition formelle de ce genre de langages :

L'objectif de génération de code, et donc l'impératif de respecter une certaine notion d'exécutabilité s'ajoute aux contraintes.

La nécessité d'aboutir à une définition formelle du langage a guidé notre recherche vers les langages formels existants impliquant une ou plusieurs des facettes citées ci-dessus. Une première piste a été de s'inspirer des calculs de processus comme CCS et SCCS. Malheureusement, ce type de raisonnement mathématique mène à l'introduction d'opérateurs très puissants d'un point de vue théorique mais inadéquats en vue d'aboutir à une forme exécutable à partir de la spécification.

La définition formelle d'autres langages graphiques a alors été examinée, notamment celle des Statecharts (présentée dans les travaux de Huizing). Celle-ci nous a semblé prometteuse et plusieurs tentatives ont été menées pour adapter ces travaux au langage G++ et pour y introduire les actions (qui dans les Statecharts sont reportées dans les activity charts et ne font donc pas partie de la syntaxe). L'adaptation à la syntaxe de G++ ne pose que peu de problèmes malgré certaines différences de conventions, mais l'intégration des aspects temps-réel et l'introduction des actions dans le formalisme utilisé pour les Statecharts ne sont pas aisés.

Une exploration de la signification de la circularité exprimée directement au niveau de la syntaxe dans les langages graphiques nous a permis de mieux comprendre cette notion.

En fin de compte, un langage hybride entre Statecharts et G++a été adopté et les actions y ont été introduites dans la syntaxe même du langage. Les aspects temps-réel doivent encore y être formellement intégrés. Quelques pistes dans cette voie ont été explorées. Le langage résultant de ce travail a été baptisé "First-Order Hierarchical Multi-State Machines". Ce langage introduit la notion d'états paramétrés par des variables.

Les recherches portant sur le langage ont abouti à la définition d'un langage formel alliant la concision des langages graphiques, les possibilités de composition des langages structurés et l'expressivité des langages dynamiques. Le langage est dérivé des Statecharts de Harel et permet des changements dynamiques de la structure hiérarchique des diagrammes.

En parallèle avec les dernières phases de la définition du langage, un prototype d'éditeur/interprète du langage a été réalisé. Celui-ci a permis d'utiliser expérimentalement le langage tout en le définissant et ainsi de s'assurer que les concepts proposés sont bien utilisables en pratique.

Inhoud Volgende Artikel