Post on 02-Sep-2020
1
1
Systèmes à événements discretsr.hamouche@esiee.fr
Département ISYS (Systèmes Embarqués) –ESIEE/Université Paris Est
Sep 2019
Système à événements discrets (SED)• Système dont l’état change seulement à certains instants lors de l'occurrence d'évènements
particuliers.
2
• Exemples :
2
3
TRANSPORT
Systèmes à événements discretsROBOTIQUE
TELECOM - MOBILE
IMAGE - SIGNAL
MEDICALVIE PRATIQUE INDUSTRIE
…dans les systèmes embarqués
●Différents modes de fonctionnement
● Séquences automatisées
● régulation, asservissement
●Surveillance
● ….
Objectifs et prérequis
• Objectifs▫ Vous découvrirez la modélisation des systèmes complexes à l’aide
du langage uniformisé UML▫ Vous approfondirez le diagramme de machine à états finis
(statechart) pour la modélisation dynamique des systèmes réactifs temps réel
▫ Vous utiliserez l’outil IBM Rhapsody pour construire des modèles exécutable
▫ Vous réaliserez un exemple concret et complet du domaine de l’automobile : un régulateur/limiteur de vitesse
• Prérequis▫ La théorie des machines à états finis▫ La connaissance des bases de l’orienté objet
4
3
Pourquoi modéliser ?
Dans toute les discipline, on modélise depuis longtemps des systèmes complexes
• Maitriser la complexité
• Réduire les risques
• Pour communiquer
▫ Masquage des détails
▫ Abstraction
5
Qu'est-ce qu'un modèle ?
• Simplification de la réalité pour mieux comprendre▫ modèle mathématique, physique, visuels, textuels…
• Un bon modèle : A est un bon modèle de B si A permet de répondre de manière satisfaisante à des questions prédéfinies sur B (D.T. ROSS)
• Un modèle est différent d’un simple dessin !
6
4
Qu’y a-t-il en dessous d’un modèle?
7
• Syntaxe concrète
• Syntaxe abstraite et sémantique▫ Un monde encore plus important…
� Les éléments du modèle et leurs liens
▫ Facteur clé pour� Calcul, analyse� Simulation, test, validation� Traçabilité� …
Qu’y a-t-il en dessous d’un modèle?
8
Syntaxe concrète
Syntaxe abstraite et sémantique
5
MBSE ?
• Model-based system engineering• Passer du document-centric au
model-centric• Les modèles ne sont pas seulement
dédiés à la documentation• Les modèles deviennent des entités
de premier plan ▫ Traçabilité ▫ Aide à la conception,
développement, validation…
9
AVANTCycle en V : cycle classique de conception
10
6
Ingénierie des modèles Problématique
• Conception du logiciel embarqué ▫ Cycle en V : cycle classique de conception
� � développement orienté CODE
11
…
Temps et coût de développement ++
Codage 1 Codage 2 codage 3 codage n
Ingénierie des modèles • Conception du logiciel embarqué
▫ Cycle en V : cycle classique de conception▫ Approche dirigée par les MODELES
12
Génération automatiquede code
Modèle
7
Ingénierie des modèles• Conception du logiciel embarqué
▫ Cycle en V : cycle classique de conception▫ Approche dirigée par les MODELES
� Machines à états finis + temps réel = statechart
13
Modèles
Simulation
Génération automatiquede code
Langage et outil
• Langage UML (Unified Modelling Language) ▫ Notation graphique standardisé orientée multi-vues▫ Machine à états finis est une vue du système: vue comportementale▫ Formalisme orientée objet: schéma classes/objets est une autre vue du système (vue
structurelle)
14
• Outil : IBM Rational Rhapsody• Environnement de modélisation, spécification et simulation de système temps réel
• Génération automatique de code C, C++, Java et Ada.
Modèles
Simulation
8
Langages et outils• Machine à états (temps réel)
▫ IBM Statemate (payant, licence académique)
• Machine à états et UML (temps réel)▫ IBM Rational Rhapsody ((payant, éval 30j, licence académique)
� http://www.ibm.com/developerworks/downloads/r/rhapsodydeveloper/index.html
• UML ▫ Rationnel Rose (payant)
� http://www.rational.com▫ Poseidon (gratuit)
� http://www.gentleware.com/▫ Visual paradigm (gratuit)
� http://www.visual-paradigm.com/▫ ArgoUML (gratuit)
� http://argouml.tigris.org▫ …
15
Démo !
16
9
17
La modélisation structurelle
La modélisation comportementale
Cas d’étude
18
Une montre digitale• Un cadran, quatre boutons (power, mode, set,
start/stop) et une batterie.• Un microcontrôleur pour gérer les modes de
fonctionnement (le contrôleur)• Affichage de l’heure courante • Mise en veille et gestion de la batterie• Fonction chronomètre
10
Modéliser vs spécifier
19
Logiciel embarqué
Modéliser
Spécifier
Décrire la structure du système+
Le comportement dynamique
Système de contrôle Procédé
E ES
S
ModélisationSpécification
E
S
La structure d’un système : une classe
20
Nom du système Structure représentant le système : une classe / un objet
• manipule les attirbuts• appelle les opérations
Comportement dynamique : statechart
Caractéristiques quantifiables : attributs
Comportement exécuté à la demande : operations
11
21
Exemple : Simulateur d’un véhicule
• Modélisation de la structure d’un système : Classe / Object ▫ Données du système : attributs▫ Traitements de base : méthodes▫ Comportement dynamique : statechart
double vitesse;double latenceAcc = 300;double latenceFrein = 150;bool défaut = false;
Accelerer ( intensité ) { }dynMoteur ( ) { }
classe
attributs
méthodes
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
Nom
22
Exemple : un distibuteur de billets
• Modélisation de la structure d’un système : Classe / Object ▫ Données du système : attributs▫ Traitements de base : méthodes▫ Comportement dynamique : statechart
char* nomBanque;char* nomEmplacement;bool enPanne;
insererCarte( c ) { }choisirOp( ) { }
classe
DAB
nomBanque: char*nomEmplacement: char*
enPanne : bool = false
insererCarte( c: Carte ): intchoisirOp( ) : void
nom
attributs
méthodes
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
12
Etude de cas (TD)
• Identifier les attributs et les opérations du procédé
23
Système de contrôle Procédé
E ES
S
ModélisationSpécification
E
S
24
13
Les statecharts
• Système à événements discrets▫ Systèmes temps réel▫ Systèmes réactifs à leur environnement
�Machines à état fini pour le temps réel = les statecharts▫ D.Harel [1987]▫ Extension temps réel pour la description comportementale
des systèmes réactifs
• Statecharts = diagrammes d'états + hiérarchie + orthogonalité +communication par diffusion
25
Plusieurs types d’états
• Etat initial ▫ un seul par diagramme
• Etat intermédiaire▫ Aucun ou plusieurs possibles
• Etat final▫ Plusieurs possibles
• Pseudo-états ▫ dépend des outils
14
Transition
• Représente le passage instantanée et unidirectionnel d’un état à un autre• Format
• À l’arrivée d’une événement, sous une certaine condition, l’action réalise un traitement lors du changement d’état
27
Transition
• Représente le passage instantanée et unidirectionnel d’un état à un autre
• Déclenchée : ▫ Par un événement ▫ Automatique, à la fin d’une activité
• Condition de garde : condition booléenne qui autorise ou bloque la transition
• Action : traitement réalisé lors du changement d’état
• Syntaxe : <Événement> [<Garde>] / <Action><Tirgger> [<Guard>] / <Action>
28
15
Etude de cas (TD)
• Identifier les entrées/sorties du système• Identifier les états stables du procédé et décrire
son comportement
29
Système de contrôle Procédé
E ES
S
ModélisationSpécification
E
S
30
Déclencheur (trigger)
• En provenance des dispositifs d’entrées (capteurs, boutons…), de l’utilisateur (via IHM…)▫ SignalEvent – evName(params)
� Ex.: evAllumer, evEteindre,…
• En provenance d’horloge (timers…)▫ Représente le passage du temps : une durée décomptée à partir
de l’entrée dans l’état courant ▫ TimeEvent (passage du temps) – tm(durée)
• CallEvent – triggered operation()
▫ appel d’une opération par un autre objet –
16
Garde
• Les changements d’état interne• Une contrainte supplémentaire pour une transition • Une condition booléenne
▫ opérande : attributs ou expressions booléennes▫ opérateurs : ! || &&
• Evaluation de la condition :▫ ev [garde] : condition évaluée à l’arrivée de « ev »▫ [garde] : condition évaluée à l’entrée de l’état (cas de Rhapsody)
31
S1
S2
[garde]
tm(100)�Transition réflexive utilisant tm
32
Les sorties d’une statechart
• Action dans une transition ▫ Traitement basique: suite d’instrcutions
▫ Traitement modulaire : appel de méthodes internes
▫ Communication : � diffusion d’un événement en interne (asynchrone)
� Rhapsody : GEN (<nom_evt>([<argument>]) )� Appel synchrone d’une opération réactive
� Rhapsody : trigerredOperation();
17
33
Les actions dans un état
• Dans un état ▫ à l’entrée entry / <action>▫ à la sortie exit / <action>
34
Les actions dans un état
• Dans un état ▫ à l’entrée entry / <action>▫ à la sortie exit / <action>
18
35
Exemple : les actions dans un état
Saisie_code_secret
idle
evCarte/lecture();
evValider / A2();
entry / NePlusAffEntreesClavier()exit / ReAffEntreesClavier()
evCarte � lecture(); NePlusAffEntreesClavier();
evValider � ReAffEntreesClavier(); A2();
Lecture (){numCB=params->num;}
Exemple : les actions dans un état
36
19
37
Réactions internes à un état
• Définir une activité qui ne nécessite pas de quitter l état en cours � Activité nécessitatnt un certain temps d’exécution: action
relativement longue (Interaction utilisateur, signal d’attente…)
▫ Format : evt [Garde] / action
38
Réaction dans un état
• Réaction : evt [Garde] / action
Etat2
Etat 1
e1 / A1( );
e2 / A2( );
Reaction : e3 / A5( );
Entry / A3( );
Exit / A4( );
e4 / A6( );
E
20
39
Réaction dans un état
• Réaction : evt [Garde] / action
Etat2
Etat 1
e1 / A1( );
e2 / A2( );
Reaction : e3 / A5( );
Entry / A3( );
Exit / A4( );
e4 / A6( );
e3 �A5 ( ); (le contexte est préservé)
e4 �A4( ); A6( ); A3( ); (le contexte est réinitialisé)
40
Exemple : les actions dans un état
Saisie_code_secret
idle
evCarte/lecture();
evValider / A2();
entry / NePlusAffEntreesClavier()
exit / ReAffEntreesClavier()
Lecture (){numCB=params->num;}
evKey/ codeU=codeU*10+params->c;
21
Les actions : résumé
• entry, exit : actions courtes• Si action relativement longue :
1. Réaction dans un état
2. État hiérarchique � les sous-statechart
41
État hiérarchique
• Structurer un comportement complexe�Abstraction, hiérarchie
• Dans le sous-statechart, on retrouve les mêmes règles �état initial obligatoire.
42
22
État hiérarchique
• Exemple
43
État hiérarchique
• Factoriser des transitions communes▫ Mêmes événements / actions
44
23
État hiérarchique
• Factoriser des transitions communes▫ Mêmes événements / actions
45
État hiérarchique
• Suspendre/ré-initialiser un comportement
46
État OU
prêt
impression
EvImprimerEvF
in
Arrêt
Running
EvOff
EvOn
A
C
B
24
État hiérarchique
• Suspendre/reprendre un comportement ?
47
État OU
prêt
impression
EvImprimerEvF
in
Arrêt
Running
EvOff
EvOn
A
C
B
« Comment traiter par exemple l’ouverture du bac à papiers ? »
48
Pseudo-état Historique (dernier état visité)
• L'événement fermetureBacPapier entraîne l'état Running, raffiné par prêt et impression, le dernier état visité ( lors de la dernièreoccurrence de ouvertureBacPapier) sera choisi
État OU
prêt
impression
EvImprimerEvF
in
Arrêt
Running
EvOff
EvOn
suspendueouvertureBacPapier
HfermetureBacPapier
• H : mémorise le dernier état visité
E
25
49
Pseudo-état Historique (dernier état visité)
B
D
A
C
H
IT
h
Interruption – reprise
• Gestion des interruptions
Statecharts en concurrence
• Plusieurs comportement concurrent▫ Super-état AND
▫ Évolution parallèle des sous-statecharts▫ État courant : n-uplet (S0,...Sn); n=nbre de sous-statechart
50
26
Statecharts en concurrence
• Dans un état composite
51
Statecharts en concurrence
• Exemple
52
27
Statecharts en concurrence
• Exemple
53
54
Statecharts en concurrence
•Les transitions sont simultanées : à partir de l'état <A,D> la transition e permet d'être en <B,C>notée <A,D> -e-> <B,C>
• Transitions simultanéesenglobantenglobant
A
B
C
D
e e
28
55
Statecharts en concurrence
La transition "t" entraîne l'arrêt immédiat des deux régions F et G.
englobant
F G
englobant
A
B
C
D
E
englobant
F
A
B
G
C
D
Ee e
t
• Préemption d’un état AND
Classe concurrente
• Traitement bloquant dans un thread séparé� Classe active▫ Propriété concurrency = « active »
▫ Surcharger l’opération OnReaction * execute()
56
29
Etude de cas (TD)
• Une montre digitale▫ est munie� d’un écran pour afficher le temps� de quatre boutons : power, mode, set, start/stop…� une batterie
▫ propose une fonction horloge: affichage de l’heure courante
▫ se mets en veille après un certain délai d’inactivité
• Compléter le statechart en intégrant les fonctionnalités ci-dessus
57
Synchroniser des statecharts
• Via une variable (garde)▫ � attention problème d’accès concurrent
• Via un événement ▫ Macro : GEN(<event>)
• Via un état ▫ Macro : IS_IN(<etat>):bool
• Via une barrière de synchronisation : fork/join
58
30
59
Synchronisation via un événementL'événement e entraîne la génération de f qui décl enche simultanément C ->D et E -> F
<A,C,E> -- e -> <B,D,F>
diffusiondiffusion
B
A E
F
C
D
e/GEN(f); ff
60
Exemple : vérification d'un invariant
• invariant par niveau ( par système)• les notions de sûreté et vivacité peuvent être exprimées sur les diagrammes
testInvariant
E1 INVARIANTE2
testInvariant
B
A INIT
VERIF
C
D
testInvariant
E1
B
A
INVARIANT
INIT
VERIF
E2
C
D
e/GEN(INV_E1); INV_E1INV_E2f/GEN(INV_E2);
E
31
61
Synchronisation via un état
testtest
A
B
C
D
test
A
B
C
D
e [IS_IN(B)]
• IS_IN ( B ) retourne true si l’état courant de la région concurrente est égal à B
62
Synchroniser via des barrières
• Fork and Join
A F
paralleleparallele
D E
B C
forkjoin
32
63
Synchroniser via des barrières
• Fork and Join
64
Synchroniser via des barrières
• Fork and Join
33
Pseudo état
• Pseudo-état conditionnal
65
Branche1 : ev [cnd1] / a0() ; a1();Branche2 : ev [cnd2] / a0() ; a2();Branche_else : ev [else] / a0() ; a_else();
/a0()
/a1() /a2()/a_else()
Exemple
• Contrôleur d’ascenseur
66
34
67
Attention au non déterminisme
Quelle transition choisir, en général il y a préemption de l'englobant ?
D
A
B
Ce
e
englobantenglobant
A
B
C
D
e/x=1; e/x=0;
Que vaut x ?
Etude de cas (TD)
• Une montre digitale▫ est munie
� d’un écran pour afficher le temps� de quatre boutons : power, mode, set, start/stop…� une batterie
▫ propose une fonction horloge: affichage de l’heure courante
▫ se mets en veille après un certain délai d’inactivité ▫ Propose une fonction chronomètre
� Le bouton mode active successivement les deux modes horloge et chronomètre
� Le bouton StartStop lance/arrête le chronomètre� Le bouton Set remet le chrono à zéro� Pas de veille possible dans le mode chronomètre
68
35
Etude de cas (TD)
• Une montre digitale▫ est munie
� d’un écran pour afficher le temps� de quatre boutons : power, mode, set, start/stop…� une batterie
▫ propose une fonction horloge: affichage de l’heure courante▫ se mets en veille après un certain délai d’inactivité ▫ Propose une fonction chronomètre
� Le bouton mode active successivement les deux modes horloge et chronomètre
� Le bouton StartStop lance/arrête le chronomètre� Le bouton Set remet le chrono à zéro� Pas de veille possible dans le mode chronomètre
▫ Paralléliser/synchroniser les fonctionnalités ▫ Simuler la consommation de la batterie selon les modes:
� Mode veille : conso = 1% / 5s� Hors mode veille : conso = 1% / 2s
69
Références
• Bruce Powel Douglass. Doing Hard-Time. Developing Real-Time Systmes with UML, objects, Frameworks and Patterns. Addison-Wesley, 1997.
• Hassan Gomaa. Designing Concurrent, Distributed, and Real-Time Applications with UML. Addison-Wesley, 2000.
• Grady Booch, James Rumbaugh, Ivar Jacobson. Le guide de l’utilisateur UML. Eyrolles, 2000.
• Pierre-Alain Muller. Modélisation objet avec UML. Eyrolles, 1997.• C.G. Cassandras, S. Lafortune. Introduction to Discrete Event
Systems. Kluver Academic Publishing 1999.• http://uml.free.fr/• http://www.ilogix.com/• http://robic.julien.free.fr/Programmation/Cours UML - Declercq -
slides 1-145.pdf
70