Réunion du 24/07/2008

Ordre du jour

Compte Rendu

Participants

Annie Ressouche, Jean-Yves Tigli, Domnica Pavel, Vivien Fighiera

Rappel sur le travail effectué par les stagiaires

La notion de connecteur complexe a été formellement définie (voir compte rendus des réunion précédentes). Ce connecteur permet de définir les connections entre un ensemble fini de composants émetteurs d'évènements et un ensemble fini de composants avec des méthodes invocables. L' intersection entre ces deux ensembles peut ne pas être vide.

Pour décrire ce connecteur complexe, un langage LS a été défini par Domnica. Dans ce langage, un connecteur est composé de deux parties:

  1. une partie déclaration qui déclare les objets du connecteur complexe défini:
    1. Ci: eij(pij) déclare les évènements du composant Ci;
    2. C: mij(pij) déclare les méthodes du composant Ci;
    3. C: pij déclare les paramètres du composant Ci
    Dans un premier temps, les paramètres ne seront pas typés, ils le seront dans le futur.
  2. une partie description de la connection . Elle est composée de deux logiques:
    1. une logique de déclanchement
    2. une logique d' éxécution sur les méthodes avec trois opérateurs: "connect" (->), "sequence" (>>) et parallèle (||).
Une sémantque synchrone pour LS a été définie par Domina.

Pour implémenter ce connecteur complexe dans WComp, deux composants spécifiques seront générés:(1) un composant (A) qui gère la logique de déclanchement; (2) un composant (B) qui gère la logique de d' éxécution. De plus, des composants en amont du composant A récupèrent les paramètres des évènements afin de les substituer aux paramètres formelles des méthodes appelées dans la logique de déclanchement. Cette substitution sera faite par des composants en aval du composant B, qui auront aussi pour tache de récupérer les différentes valeurs des méthodes appelées.

Plan de Travail

Extension de la logique de déclanchement

La logique de déclanchement doit gérer une logique booléenne (logique du premier ordre) sur un mode (ou état) donné et aussi gérer une logique de transition entre modes. Il faut donc étendre LS pour ajouter cette notion de mode, en conservant le déterminisme (c'est-à-dire mettre des priorités sur les transitions).

Parsing de LS

La grammaire de LS est spécifiée avec Lex/Yacc et le parser produit est en C. Pour obtenir un parser en C#, compatible avec le code de programmation de WComp, on envisage de changer d'outil de génération d'analyseurs syntaxiques et d'utiliser GOLD (proche de Lex/Yacc).

Implémentation de la logique de déclanchement

Pour implémenter le composant WComp B (qui correspond à la logique de déclanchement), on doit en particulier implémenter l'opérateur de parallèle et respecter la sémantique synchrone de LS. Pour implémenter C1.m1 || C2.m2, on crée un thread pour implémenter C1.m1, un autre pour C2.m2 et un RDV (point de synchronisation) pour attendre la fin des exécutions respectives de C1.m1 et de C2.m2.

Architecture finale sous WComp

Calendrier

  1. en point de mire pour deuxième quinzaine de septembre l'application avec des composants type interrupteur (checkbox) comme émetteurs d'évenements et des composants type lumière (simulé ou réel ) en récepteurs du connecteur complexe.
    Objectif dans ce contexte : décrire toute sorte de logique de déclenchement et de logique d'exécution
  2. Vivien propose de travailler en prirorité sur la génération des composants de la logique de déclenchement (Ag), de la logique d'exécution (B) dans un premier temps
  3. on peut différer le deacute;veloppement des composants amont (en appelant des méthodes sans paramètre dans les composants récepteurs); on peut aussi différer le développement des composants aval (en récupérant des évenements sans paramètre dans les composants émetteurs)
  4. dans un second temps nous étudierons la problématique du dataflow