Précédent : Présentation générale et
objectifs Remonter : Projet MEIJE, Parallélisme, Synchronisation et
Suivant : Grands domaines d'application
Résumé : La mobilité est devenue l'un des aspects importants des systèmes informatiques, et particulièrement des systèmes distribués. Notre projet s'intéresse à la notion de «code mobile» - et donc à une notion de mobilité logique, plutôt que physique. Il s'agit de dégager les concepts utilisés dans les langages de programmation récemment proposés pour permettre la mobilité des calculs, et d'en formaliser la sémantique.
Nos recherches sur le pi-calcul en tant que modèle pour la programmation des systèmes distribués s'articulent autour de plusieurs axes. L'approche objet étant très largement dominante dans le domaine des systèmes répartis, l'étude formelle du modèle objet, dans ses relations avec le pi-calcul, est naturellement une composante importante de notre travail. Nous étudions aussi comment peut s'étendre la notion de type, et comment elle peut être utile dans le raisonnement à propos des programmes parallèles. Cette notion de type, familière dans la programmation séquentielle, paraît encore plus importante dans un cadre distribué, ne serait-ce que pour assurer une certaine cohérence dans les communications.
Les questions de sécurité sont encore peu abordées dans nos travaux. En particulier, la modélisation explicite de la migration, avec la notion de «localité» et celle, associée, de site défaillant, ou simplement temporairement déconnecté, est une direction qu'il est essentiel d'explorer.
Résumé : Le langage Esterel permet la programmation de systèmes réactifs synchrones. La syntaxe impérative du langage est adaptée aux systèmes dominés par le contrôle. Elle repose sur des primitives spécifiques de parallélismes et de préemptions. La sémantique formelle permet la définition exacte des programmes, leur traduction vers des formats adaptés à la synthèse de logiciel ou de matériel, l'optimisation de cette synthèse, et la vérification de propriétés de programmes.
Les applications d'Esterel sont les contrôleurs temps-réel, les systèmes embarqués, les protocoles de communication, les interfaces homme-machine, et plus généralement les systèmes réactifs dominés par le contrôle.
Un programme Esterel est traduit en un système d'équations
booléennes avec mémoires, c'est-à-dire en un circuit synchrone.
Cette traduction permet la synthèse directe de circuits
électroniques ou la synthèse de programmes par tri des équations
et traduction directe en C. Elle permet également de s'interfacer
avec de nombreux systèmes de vérification formelle comme ceux
décrits en section .
Les recherches développées autour du langage et de son modèle concernent :
Résumé : Le vocable anglais de model-checking recouvre la généralité des méthodes de vérification et d'analyse automatiques de systèmes parallèles communicants à base d'exploration exhaustive des espaces de configurations atteignables. Cette approche est maintenant largement développée, et elle donne lieu à une intense recherche sur les modes de représentation et les algorithmiques dédiées face au problème de l'explosion combinatoire. Notre objectif est de pouvoir valider des spécifications ou programmes de taille réelle, dans le cadre synchrone (Esterel) ou asynchrone (calculs de processus).
La problématique fondamentale des logiciels d'analyse par modèles (model checkers) est de combattre l'explosion combinatoire. Ceci peut être exploré par l'algorithmique, l'application de méthodes compositionnelles ou la réduction des problèmes par abstraction, ou encore l'introduction de types de données symboliques pour la représentation «en compréhension» des entités manipulées. D'un point de vue pratique on doit également s'interroger sur l'introduction «la plus harmonieuse possible» de ces méthodes dans un cycle de développement logiciel les permettant (par exemple, dans notre cas, sur des programmes Esterel).
Résumé : L'approche réactive a pour but d'étudier divers modèles de programmation dans lesquels existe une horloge logique définissant des instants globaux. Elle a également pour objectif d'implémenter des langages de programmation construits sur ces modèles.
Plusieurs langages et formalismes réactifs ont été notamment définis et implantés en Reactive-C : réseaux de processus réactifs, langage synchrone SL, objets réactifs. Ils sont décrits dans un livre qui présente également Reactive-C en détail [1].
Nos travaux actuels portent sur le développement des scripts
réactifs autour de Java (voir section ), ainsi que sur
la programmation graphique par Icobjs (voir section
).