Programmation synchrone

Système réactif

Heptagon installé : heptc

Ce qu’on a appris jusqu’ici

Programmation réactive

reactive

Exemple réactif

Caractéristiques essentielles des systèmes réactifs

Dans le logiciel critique, il faut faire “ceinture et bretelle”.

echantillonage

Correction temporelle \leftrightarrow correction fonctionnelle \RA il y a des cas où ça va ensemble

Mathématiques nées avec la révolution industrielle

Exemple : Régulateur à boules de Watt

Langages synchrones

Langages spécialisés pour la programmation des systèmes réactifs

Objectifs

\RA Idée sous-jacente : Notion de temps logique, discret et global

Langages conçus en France : à Grenoble (notamment), Nice, Rennes et Paris.

Schéma-bloc

Utilisés pour palier les besoins des ingénieurs avec un background “automatique” vers le code C

schema-bloc

Heptagon : la programmation synchrone a flots de données

Cf. Dossier de code

heptagonExécution cyclique à 3 phases :

abstraction
A la fin de développement : vérification des contraintes temporelles.

On programme dans un langage avec un temps logique et un temps discret.

On considère qu’entre le début et la fin du cycle, aucun temps ne s’est écoulé, afin que l’environnement n’ait pas le temps de changer.

D’un certain point de vue, on peut représenter un programme synchrone comme une machine à état / un automate (à mémoire) finie et déterministe. Notre automate, en plus d’avoir des entrées, possède des sorties, c’est un transducteur.

Pour prouver si deux automates sont égaux, on peut faire une bisimulation.

Une bisimulation est une relation R \subseteq S \times S tel que \forall (s_{1}, s_{2}) \in R, on a :

  1. s_{1} final \Leftrightarrow s_{2} est final
  2. Si s_{1} \xrightarrow{a} s_{1}', il existe s_{2}' tel que s_{2} \xrightarrow{s_{2}'} et (s_{1}', s_{2}') \in R
    part2
  3. si s_{2} \xrightarrow{a} s_{2}', il existe s_{1}' tel que s_{1} \xrightarrow{a} s_{1}' et (s_{1}', s_{2}') \in R

Théorème : deux états finaux s_{1} et s_{2} reconnaissent le même langage ssi il existe une bisimulation R telle que (s_{1}, s_{2}) \in R

Exemple : automate
Bisimulation : R = \{ (x, u)_{x}, (y, v)_{x}, (y, w)_{x}, (z, w)_{x}, (z, v)_{x} \}

Exemple transducteur :
transducteur