• Aucun résultat trouvé

6.2.1 Les systèmes réactifs

Le concept de système réactif a été défini, dans la littérature par plusieurs travaux. Selon [?], un système réactif est défini de la manière suivante :

Définition 6 (système réactif) Un système réactif est un système qui réagit continuement avec son environnement à un rythme imposé par cet environnement. Il reçoit, par l’intermédiaire de capteurs des entrées provenant de l’environnement, appelées stimuli, réagit à tout ces stimuli en effectuant un certain nombre d’opérations et produit, grâce à des actionneurs, des sorties utilisées par l’environnement, appelées réactions ou commandes (figure??).

capteurs actionneurs stimuli environnement réactions (système de contrôle) (système contrôlé) système réactif

FIGURE6.1 – Modèle d’un système réactif

Nous appelons systèmes réactifs, les systèmes logiciels qui réagissent de manière continue à leur environnement, et à une vitesse déterminée par cet environnement. Cette classification a été introduite par [?] afin de différencier ces systèmes des systèmes transformationnels d’une part (les systèmes classiques dont les entrées sont disponibles en début d’exécution et qui fournissent des sorties quand ils se terminent) et des systèmes interactifs d’autres part (systèmes qui interagissent de manière continue avec leur environnement mais à leur vitesse propre, comme dans le cas des systèmes d’exploitation). La plupart des systèmes industriels temps-réel sont des systèmes réactifs. Nous pouvons également citer comme autres exemples les protocoles de communication dans les réseaux ainsi que les interfaces homme-machine.

Les systèmes réactifs sont des systèmes à événements discrets. Leur comportement peut être représenté par une séquence de réactions à des stimuli. Classiquement, les évolutions séquentielles sont décrites en termes d’états et de transitions. Les modèles simples comme les machines séquen-tielles sont inadaptés lorsqu’il s’agit de représenter des applications modernes. Ces applications sont généralement complexes et conçues comme un ensemble de sous-systèmes communicants et évoluant d’une manière concurrente avec de nombreuses interactions (synchronisations, pré-emptions). Un sous-système peut lui-même être décomposé. En conséquence, les modèles pour

systèmes réactifs devraient être hiérarchiques, supporter les évolutions parallèles, des formes de synchronisation et de communication diverses.

Dans un système réactif, la validité d’une commande ne dépend pas uniquement de la validité de la valeur de son résultat, mais aussi de son instant de délivrance. Parfois dans la littérature, le système est appelé système de contôle, et l’environnement est appelé système contrôlé.

La figure ?? est un exemple très simple d’un système réactif de la régulation de niveau d’eau dans un réservoir. Dans cet exemple, l’environnement est constitué d’un réservoir d’eau, d’une vanne et deux capteurs sensibles à la présence d’eaux. Supposons qu’à l’instant t=0 le niveau d’eau dans le réservoir soit au niveau du capteur 1 et que la vanne soit ouverte. Le rôle de ce système est de maintenir le niveau d’eau entre les deux capteurs 1 et 2 : si le capteur 2 est mouillé, le système doit envoyer une commande de fermeture de la vanne avant que le réservoir déborde, et si le capteur 1 est sec le système doit envoyer une commande d’ouverture de la vanne.

ouvrir / fermer oui / non oui / non environnement actionneur capteur 2 capteur 1 système réactif 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111

FIGURE6.2 – Exemple d’un système réactif

Les exigences fonctionnelles et temporelles sont donc deux caractéristiques essentielles des systèmes réactifs qu’ils doivent respecter. Les exigences fonctionnelles imposent au système de produire des résultats corrects du point de vue leurs valeurs. Les exigences temporelles imposent au système de produire ces résultats à temps, c’est-à-dire que le système doit réagir à chaque événe-ment de l’environneévéne-ment externe avant l’échéance imposée par l’environneévéne-ment pour le prochain événement.

6.2.2 Caractéristiques des systèmes réactifs

Les systèmes réactifs sont caractérisés par :

• La Concurrence : la concurrence entre le système et son environnement doit être prise en compte. Le plus souvent, il est important de considérer un tel système comme un ensemble de composants (processus ou tâches) parallèles qui coopèrent pour atteindre un comportement

désiré. Ces systèmes sont parfois implémentés sur des architectures distribuées afin d’accroître leurs performances et leurs rentabilité.

• Ils sont soumis à des contraintes de temps strictes. Ces contraintes concernent le temps de ré-ponse du système à ces entrées. Ces contraintes doivent être exprimées dans les spécifications du système (cahier des charges), doivent être prises en compte à la conception et doivent être satisfaites sur l’implémentation. Le respect de ces contraintes de temps nécessitent une implé-mentation efficace, et plus spécialement une évaluation précise des temps d’exécution.

• Ils sont déterministes : Les sorties des systèmes réactifs sont entièrement déterminées par les va-leurs et les occurrences dans le temps des entrées. Cet aspect déterministe distingue les systèmes réactifs des systèmes interactifs : la majorité des systèmes interactifs sont intrinsèquement non-déterministes. Un système d’exploitation, par exemple, dispose d’un ordonnanceur qui active et désactive dynamiquement les processus suivant certains critères (charge du CPU, disponibilité des ressources, priorité des tâches, . . . ). Le résultat d’un appel système dépend généralement de ces paramètres. La conception, l’analyse et le débogage d’un système déterministe sont bien plus aisés. Par conséquent, le déterminisme des spécifications de systèmes réactifs se doit d’être préservé lors de leur implémentation.

• Leur fiabilité est un point crucial : Il est important que la présence d’erreurs dans un système réactif peut avoir des conséquences graves : ils impliquent des vies humaines et un coût financier très important. Les conséquences économiques et humaine liées à une erreur dans un logiciel de commande d’un satellite ou d’une centrale nucléaire est bien évidemment inestimable. Par conséquent, ces systèmes nécessitent des méthodes de conception particulièrement rigoureuses et constituent un champ ou les techniques formelles de vérification doivent être considérées.

6.2.3 Modèles synchrones pour systèmes réactifs

Un modèle est une formalisation mathématique d’un système réactif (à concevoir ou à étudier), qui peut être structuré selon la complexité de ce système, ou selon le niveau de détail désiré dans la description. Ce modèle peut avoir plusieurs représentations différentes selon les outils de synthèse ou de vérification qu’on veut lui faire. La définition d’un modèle approprié à la modélisation des systèmes réactifs qu’on veut étudier permet d’appliquer le raisonnement formel sur ces systèmes, particulièrement pour faire de la vérification.

Les modèles ne sont toujours pas utilisables pour une description directe des systèmes. Ils ne peuvent que constituer une représentation intermédiaire entre un langage, et les outils de synthèse ou de vérification associés avec ce langage. Un langage de description des systèmes doit dispo-ser d’une sémantique formelle qui décrit la manière dont les programmes peuvent être compilés en modèles plus concrets. Il est important que cette sémantique présente des propriétés à base desquelles le raisonnement formel est possible.

Divers formalismes et langages sont proposés pour décrire les systèmes réactifs, cependant l’approche synchrone s’est présentée comme une alternative incontournable pour la modélisation de cette catégorie de systèmes, car elle est fondée sur les hypothèses les plus simples et repose

sur des langages dédiés au formalisme synchrone. Les langages synchrones les plus connus sont ESTEREL, LUSTER et SIGNAL. Les STATECHARTS sont parfois classés parmi les langages syn-chrones, bien que leurs sémantiques n’exigent pas forcément une loyauté totale à l’hypothèse de synchronisme. On trouve également de nombreux formalismes et langages qui reposent sur des hypothèses synchrones, et pourrait donc être classés avec les langages synchrones. C’est le cas par exemple du GRAPHSETdont des travaux ont tenté de traduire ce formalisme en langage ESTEREL pour construire des modèles à sémantique formelle et de permettre par conséquent un raisonnement (vérification) formel.

Les langages synchrones proposent des constructions qui permettent de décrire des systèmes réactifs, telles que la composition (comme le parallélisme) de plusieurs sous-systèmes commu-niquant par diffusion synchrone. L’hypothèse de synchronisme suppose que le temps de réaction d’un système est nul, c’est à dire les sorties sont considérées comme simultanées aux entrées qui les provoquent. Cette hypothèse synchrone sera décrite en détails dans la suite de ce chapitre, qui est entièrement consacré à l’approche synchrone ainsi qu’au langage SIGNAL.