Projet Ep-Atr

previous up next contents
Précédent : Composition de l'équipe Remonter : Projet EP-ATR, Environnement de programmation Suivant : Fondements scientifiques



Présentation générale et objectifs

Le projet EP-ATR conduit des travaux à la fois théoriques, méthodologiques, algorithmiques et d'expérimentation sur le thème de la conception de systèmes (ou d'applications) enfouis temps réel; ces travaux sont basés sur une approche synchrone de la description de processus.

Contexte des études

Les produits informatiques enfouis, le plus souvent avec des contraintes temps réel fortes, dans des systèmes industriels de grande envergure comme les centrales nucléaires, les systèmes de contrôle aérien, les télécommunications, ou dans des systèmes de taille plus modeste (avions, automobiles...), mais aussi de petite taille comme les processeurs ou contrôleurs divers utilisés dans des produits de grande diffusion, ont pour caractéristique commune de devoir fonctionner selon un mode de coopération permanente avec un environnement. Le système peut influencer sérieusement le comportement de cet environnement, non seulement par son activité mais aussi par son inactivité : ainsi le dysfonctionnement d'un système de commande de vol peut par exemple entraîner un accident d'avion; celui d'un système de régulation thermique, la perte d'une entreprise avicole. En fonction de la gravité des conséquences prévisibles d'un dysfonctionnement du composant informatique sur les plans économique, humain, ou social, le développement des applications considérées est l'objet de procédures plus ou moins lourdes visant à la réduction des risques d'erreurs ou de défaillances du système.

Traditionnellement le développement de ces applications s'appuie sur un cycle en V qui de l'amont vers l'aval, en partant d'un cahier des charges, passe par l'établissement de spécifications aussi complètes et consistantes que possible, sur lesquelles s'appuie la conception globale puis détaillée à partir de laquelle est produit le codage de l'application. La confiance dans le produit réalisé repose sur le respect de procédures codifiées incluant un chemin de vérification, inverse du chemin de conception, du test unitaire au test système. Les méthodes formelles, s'appuyant sur des modèles mathématiques correctement définis, trouvent aujourd'hui une place grandissante dans ces méthodologies et sont d'ores et déjà admises, voire recommandées, comme complément dans les méthodes traditionnelles, y compris dans des documents normatifs.

Objectif général du projet

C'est dans ce cadre que s'inscrivent les activités conduites par le projet EP-ATR : elles visent à proposer des modèles théoriques, des enrichissements du contexte méthodologique traditionnel (cycle en V) prenant en compte ces modèles, et enfin des logiciels (à l'état de prototype avancé) permettant de mettre en oeuvre ces méthodes de conception nouvelles et de conduire des expérimentations des solutions proposées. Ayant débuté dans le domaine du traitement temps réel du signal en télécommunication, nos travaux ont trouvé de nouveaux contextes d'applications, en particulier par des collaborations suivies avec différents projets de l'Inria (robotique, image), avec EDF, avec nos partenaires du projet Esprit Sacres, et dans le domaine des télécommunications, là encore en collaboration avec des projets de l'Inria, avec Alcatel et le Cnet. En même temps que se sont élargis les domaines d'applications, les problèmes que nous considérons se sont étendus d'une part en amont vers la spécification de systèmes temps réel, d'autre part en aval vers la génération de code enfoui, éventuellement sous la forme de code distribué sur des architectures hétérogènes et au delà, vers la prise en compte de composants matériels, en synthèse et en modélisation.

Ces travaux, qui concernent ainsi aujourd'hui le développement des applications temps réel depuis leur spécification jusqu'à leur mise en oeuvre matérielle, reposent sur une modélisation homogène des niveaux de description rencontrés au cours de la conception : cette approche, fondée sur un modèle mathématique de la programmation synchrone, permet de mettre formellement en relation différentes versions de l'application, réduisant en cela les risques liés à des ruptures dans le cycle de leur conception.

Conception synchrone

L'idée assez simple du modèle de conception synchrone est de considérer qu'un programme plongé dans un environnement (constitué de procédés, d'opérateurs, d'autres programmes), interagit significativement avec cet environnement au travers d'un ensemble fini de supports de communication à des instants formant un ensemble dénombrable (partiellement) ordonné. À chaque instant, plusieurs actions (messages reçus, émis, calculs...) peuvent être effectuées; elles sont alors simultanées et possèdent un même indice temporel. L'écoulement du temps résulte des successions de ces communications, mais aussi de changements explicites décrits dans l'algorithme que le programme met en oeuvre (par exemple pour une équation $y_t = f(x_{t-1})$, la sortie y sera simultanée à chaque occurrence suivante de l'entrée x). Selon les formalismes, les sorties calculées sont, sauf changement explicite dans le programme, soit simultanées aux entrées qui ont provoqué leur calcul comme dans les langages Esterel, Lustre ou Signal, soit produites à l'instant suivant comme dans Statemate ou VHDL par exemple.

Le langage Signal [9], conçu et mis en oeuvre dans le projet, est de plus, comme Lustre, construit selon une approche flot de données faisant d'un programme un système d'équations. À la différence de ce qui se passe en Lustre, le système d'équations d'un programme Signal décrit une relation entre les signaux d'entrée et de sortie du système; ceci permet d'utiliser Signal pour donner des spécifications partielles ou décrire des comportements non déterministes. Cette banalisation (néanmoins partielle) des entrées et des sorties permet en outre la spécification et la programmation de systèmes réactifs [HP85] mais aussi «pro-actifs».

Thèmes de recherche

  S'appuyant sur une expression en Signal des différentes versions d'un système en cours de conception, la méthodologie que nous développons consiste en l'application d'une série de transformations de descriptions respectant le schéma suivant :

Nos activités de recherche concernent les différentes étapes de ce schéma de conception.

Description de processus

  La description d'une application, tant au niveau de la spécification que de la conception, suppose l'existence d'un langage suffisamment expressif pour les classes d'applications visées; la réduction des ruptures dans le cycle de conception est favorisée par le support logiciel des traitements dans une sémantique homogène. Les études portant sur l'augmentation du pouvoir d'expression du langage Signal ont pour but d'étendre le domaine d'application des techniques synchrones, soit par la définition de relations sémantiques entre les formalismes synchrones et d'autres formalismes, soit par l'adjonction de nouvelles primitives ou de nouveaux concepts dans le langage lui-même.

Le format commun de la programmation synchrone (DC+) résulte de travaux menés depuis plusieurs années, tout d'abord par les équipes françaises dans lesquelles ont été conçus les langages synchrones Esterel, Lustre et Signal au sein du groupement C2A, puis dans le cadre d'un projet européen Eureka (Synchron), et actuellement dans le cadre des projets européens LTR Syrf et R&D Sacres [Sac96]. La définition de ce format a été décidée en vue de favoriser le partage de logiciels issus de la communauté synchrone, mais aussi de permettre une large ouverture vers d'autres formalismes en amont, et d'autres outils, latéralement et en aval.

Le projet européen Sacres (voir section [*]) a précisément pour objectif de développer un environnement de conception multi-formalisme synchrone à destination des applications critiques enfouies; outre les études sur le format lui-même, nous y conduisons des travaux sur la traduction de Statemate en DC+ (voir section [*]).

Étude des propriétés des processus synchrones

  Un programme Signal décrit le comportement d'un système de transitions dont divers formalismes permettent d'étudier les propriétés.

Jusqu'à une période récente, nos travaux sur ce thème ont porté essentiellement sur une modélisation des comportements par des systèmes dynamiques polynomiaux sur les entiers modulo 3 (permettant le codage des booléens et de l'absence d'occurrence d'un signal à un instant donné). Un système de calcul symbolique (Sigali) a été développé dans ce cadre (voir section [*]). C'est dans ce système que sont maintenant étudiées des techniques de synthèse de contrôleurs, techniques utilisables pour affiner des spécifications, pour aider à la conduite de postes de commandes, voire à la génération automatique de tests (voir section [*]).

Les systèmes dynamiques (voir section [*]) permettent d'analyser (partiellement) les trajectoires des processus dans un ensemble d'états résultant de la combinaison de variables du programme Signal. Cet ensemble lui-même est l'objet, dès la compilation, de calculs qui reposent sur une représentation par hiérarchie de BDD (appelé calcul d'horloges [1]). Ces calculs sont utilisés en particulier pour effectuer des transformations de programmes en vue de vérification, de distribution et de génération de code.

Une autre approche pour l'étude des propriétés des programmes consiste en la génération d'un automate fini qui peut alors être fourni à des outils de vérification automatique largement développés et utilisés dans la communauté. Nos travaux portent ici sur la génération d'automates prenant en compte la hiérarchie des horloges, et sur des méthodes de réduction et de comparaison (voir section [*]).

Les applications temps réel enfouies peuvent être mises en oeuvre sur des systèmes d'exploitation temps réel offrant différents mécanismes de gestion de tâches [11], incluant éventuellement la préemption. Pour bien comprendre les effets de ces systèmes d'exploitation sur les mises en oeuvre obtenues des programmes synchrones, il est important de disposer d'un cadre sémantique intégrant des primitives de préemption dans les langages synchrones (voir section [*]).

Méthodes et outils pour la conception d'architectures de mise en oeuvre

  La définition de l'architecture supportant l'application temps réel peut comporter différentes classes de composants comme des processeurs standards, des DSP, des Asics, etc., et c'est donc dans la perspective de mise en oeuvre sur de telles cibles hétérogènes que nous inscrivons aussi bien nos études sur la conception détaillée et le codage que des activités relevant de la conception conjointe matériel/logiciel.

Une première recherche conduite en coopération avec le projet Api et le soutien du Cnet vise à construire un cadre théorique homogène pour la conception d'applications comportant à la fois du calcul régulier et des parties de contrôle irrégulier. Le problème posé est alors celui de l'interface logiciel/logiciel ou logiciel/matériel entre ces deux composantes de l'application; nous l'abordons par l'introduction de fonctions affines sur des horloges (voir section [*]), permettant de transformer un traitement global instantané (par exemple un produit de matrices) en une succession de communications (de vecteurs ou d'éléments) avec un opérateur spécifique (par exemple systolique).

Le problème du partitionnement d'un programme flot de données synchrone est abordé en s'attachant aux propriétés structurelles du graphe de l'application; supposant donnée une répartition du code sur une architecture cible (cette répartition peut résulter d'algorithmes d'optimisation ou être explicitée comme spécification non fonctionnelle, par exemple pour des raisons de traçabilité), nous nous proposons de produire, par des transformations locales à chaque composant de cette architecture, à la fois le code pour ces composants et les protocoles de communication à mettre en oeuvre (voir section [*]). Cette mise en oeuvre peut être «Globalement Asynchrone Localement Synchrone» (GALS). Le cadre théorique de nos recherches permet de caractériser des mises en oeuvre synchrones ou partiellement désynchronisées en terme de préservations de propriétés de flots, d'ordres partiels, de taille mémoire, par rapport au programme initial.

Pour la génération de composants matériels ou de code exécutable sur un processeur programmable, l'approche que nous adoptons est là encore celle de la transformation de programmes conduisant à une expression en Signal aussi proche que possible de la structure du code cible (C ou VHDL actuellement). Cette approche diminue les risques d'incorrection liés au passage à un autre langage.

Elle est accompagnée d'études sur la modélisation synchrone de composants matériels en vue du prototypage rapide de circuits spécifiques, qui participent à l'activité grandissante du projet sur le thème de la conception conjointe matériel/logiciel (voir section [*]).

Dans l'approche synchrone, les durées d'exécution ne sont pas directement prises en compte. La prise en compte de ces durées, nécessaire à la vérification de la correction de la mise en oeuvre en regard des contraintes temps réel, est effectuée en considérant une interprétation qui, à un programme synchrone et une architecture donnée, associe un programme synchrone sur nombres entiers; l'image du programme initial modélise les durées d'exécution de la mise en oeuvre. On peut alors simuler le programme image ou chercher à utiliser des techniques analytiques, comme par exemple celles qu'offre l'algèbre MaxPlus (voir section [*]).

Développements et expérimentations

  Les travaux théoriques conduits dans le projet aboutissent à des prototypes mettant en oeuvre les algorithmes conçus au cours de ces études. Nous nous efforçons de conserver et diffuser ce savoir-faire du projet par une intégration dans un environnement de conception construit autour du langage Signal. Une section est consacrée à la présentation de ce logiciel (section [*]).

Des expérimentations (voir section [*]) sont conduites pour valider les algorithmes en relation avec des industriels. Elles concernent également la diffusion des principes synchrones par des développements donnant à des formalismes divers une traduction en Signal.

Enfin l'étude d'applications en coopération avec des industriels ou des projets académiques est une source importante des problèmes nouveaux que traite le projet EP-ATR.

Problèmes ouverts et perspectives

Le développement d'un système enfoui temps réel, tel que décrit dans ces pages, prend des processus discrets pour modèles des procédés physiques de l'environnement et suppose donc l'étude algorithmique (par exemple de lois de commande) effectuée. Or la validation d'un système complet doit prendre en compte, soit par modèle, soit dans des maquettes matérielles (et souvent les deux), les fonctions continues dirigeant le comportement des procédés. Si des travaux d'interfaçage entre des langages synchrones et des outils dédiés au continu tels que Matlab ont été entrepris, il reste beaucoup à faire pour obtenir une réelle intégration des formalismes discrets et continus dans des systèmes hybrides.

Un obstacle sérieux à la mise en oeuvre correcte par construction des systèmes temps réel reste le lien entre temps physique et temps logique et entre différents grains de temps discret, en particulier pour les points suivants :

Pour aller vers la vérification complète des propriétés d'un système, il est nécessaire de prendre en compte des domaines plus riches que les booléens. Nous comptons entreprendre des études visant à compléter dans un premier temps le calcul d'horloges par des techniques provenant des résolutions de contraintes sur domaines finis; pour aller plus loin, il deviendra nécessaire d'adapter des techniques de démonstration automatique. Nous envisageons de conduire ces études en collaboration avec des équipes spécialisées sur ces thèmes de recherche.

Même si les techniques formelles progressent, tant dans les esprits de leurs utilisateurs potentiels que dans les performances des algorithmes mis en oeuvre, la simulation et le test resteront des activités nécessaires à la validation d'un système. C'est pourquoi nous envisageons de participer à des études sur la génération automatique de tests, principalement d'intégration, qui posent des problèmes non résolus.

En supposant un système correct vis-à-vis de spécifications de comportements nominaux, l'étude du comportement du système en présence de défaillances reste un sujet majeur pour les entreprises mettant en oeuvre des systèmes critiques. Les études théoriques (qui bien sûr ne peuvent concerner les seuls informaticiens) doivent être développées. Nous comptons aborder ce sujet sans prétendre à des solutions à court terme.



previous up next contents Précédent : Composition de l'équipe Remonter : Projet EP-ATR, Environnement de programmation Suivant : Fondements scientifiques