Principe de la 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
yt = f (xt - 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 [PLG91], 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
mais aussi «pro-actifs».
|