La simulation de modèle
                        SysML avec Rhapsody
                        Exemple 1



pascal.roques@prfc.fr                             V1.0, 2012
Présentations : Pascal Roques
 Consultant senior, plus de 20 ans d’expérience
  • SADT, OMT, UML, SysML

 Certifié UML2 et SysML par l’OMG

 Co-fondateur de l’association

 Auteur des ouvrages les plus lus en France sur UML

 … et du premier livre sur SysML
Objectifs
 SysML, la variante d’UML2 standardisée récemment par
  l’OMG, est particulièrement adapté au domaine de
  l’industrie et à la modélisation de systèmes complexes
  (aéronautique, spatial, automobile, énergie, armement, etc.)

 Cette présentation vise à montrer comment utiliser l’outil
  Rhapsody (IBM/Rational) pour animer un modèle SysML en
  s’appuyant sur les diagrammes d’états

 L’étude de cas simple, proposée dans cette
  première présentation est décrite en détail
  dans le livre « UML2 par la pratique »,
  publié chez Eyrolles
  • Statecharts identiques en UML2 et SysML
                                                                 3
Etude de cas : réveille-matin

 Considérons un réveille-matin simplifié :
   • On peut mettre l’alarme « on » ou « off »
   • Quand l’heure courante devient égale à l’heure d’alarme, le réveil
     sonne sans s’arrêter
   • On peut interrompre la sonnerie




                                                                          4
Initialisation du modèle Rhapsody

 Nous utilisons la version 7.6.1 de IBM Rational Rhapsody
  Designer for System Engineers




                                                             5
Cas d’utilisation

 Un premier diagramme très simple




                                     6
Scénario nominal « boite noire »

 Un autre
  diagramme
  simple donnant
  un exemple
  représentatif
  d’utilisation du
  réveille-matin
   • Ébauche
     d’identification
     d’états




                                    7
Premier niveau d’architecture (bdd)

 Deux blocs :
  • Horloge
  • Alarme
 Deux Value
  Types
 Des
  événements
  utilisateur
 Une
  opération
  interne


                                       8
Premier niveau d’architecture (ibd)

 Dans l’ibd, on
  montre le
  connecteur
  entre l’horloge
  et l’alarme
  • C’est l’horloge
    qui va prévenir
    l’alarme




                                       9
Diagramme d’états de l’horloge (1/2)

 L’horloge est responsable
  de l’horodatage courant
   • L’horloge met à jour son
     horodatage,      toutes  les
     secondes, en gérant les
     retours à zéro
   • L’horloge prévient l’alarme
     qu’elle doit s’activer



 L’utilisateur peut modifier
  l’horodatage


                                        10
Diagramme d’états de l’horloge (2/2)




                                       11
Diagramme d’états de l’alarme (1/2)

 L’alarme gère les événements de l’utilisateur :
   • ev_armer(Heure hAlarme,Minute mnAlarme)
        En positionnant le booléen enAlarme à true
        Maj des valeurs heureAlarme et minuteAlarme
   • ev_desarmer
        En positionnant le booléen enAlarme à false
   • ev_arreterSonnerie


 L’alarme réagit à l’événement généré par l’horloge :
   • ev_sonner
        En positionnant le booléen sonne




                                                         12
Diagramme d’états de l’alarme (2/2)




                                      13
Création d’un panel graphique (1/3)




                                      14
Création d’un panel graphique (2/3)
 Chaque élément du panel est lié à une valeur ou un état
  du modèle
  • heureCourante, etc.




                                                            15
Création d’un panel graphique (3/3)
 Chaque élément du panel est lié à une valeur ou un état
  du modèle
  • Etat Sonnerie de l’alarme




                                                            16
Préparation de l’animation
 Préparation de l’espace de test




                                    17
Création d’un template de Sequence diagram
 Ce diagramme vide servira de modèle aux diagrammes de
  séquence générés par la simulation




                                                          18
Initialisation de l’animation (1/2)
 Une fois que le modèle est terminé : Full Build
   • L’animation peut démarrer




 D’abord : Go Idle
   • Initialise le modèle avec les valeurs par défaut et les initial states
         Le panel est initialisé
         ainsi que le diagramme de séquence simulé
         Et les statecharts




                                                                              19
Initialisation de l’animation (2/2)




                                      20
Démarrage de l’animation
 Event Generator
  • Pour injecter des événements utilisateur




                                               21
Etape 1
 L’utilisateur met à l’heure : 23h30




                                        22
Etape 1 : résultats

 Mise à l’heure :
  23h30




                       23
Etape 2
 L’utilisateur arme l’alarme : 06h30




                                        24
Etape 2 : résultats (1/2)

 Alarme
  armée :
  06h30




                             25
Etape 2 : résultats (2/2)




                            26
Etape 3 (1/2)
 Pas d’intervention utilisateur : le temps s’écoule…




                                                        27
Etape 3 (2/2)




                28
Etape 4 (1/2)

 Le temps atteint l’heure d’alarme !




                                        29
Etape 4 (2/2)




                30
Etape 5
 L’utilisateur arrête la sonnerie




                                     31
Etape 5 : résultats (1/2)

 Arrêt
  sonnerie




                             32
Etape 5 : résultats (2/2)




                            33
Etape 6
 L’utilisateur désarme l’alarme




                                   34
Etape 6 : résultats (1/2)

 enAlarme
  = false




                             35
Etape 6 : résultats (2/2)




                            36

Prfc rhapsody simulation_1.0

  • 1.
    La simulation demodèle SysML avec Rhapsody Exemple 1 pascal.roques@prfc.fr V1.0, 2012
  • 2.
    Présentations : PascalRoques  Consultant senior, plus de 20 ans d’expérience • SADT, OMT, UML, SysML  Certifié UML2 et SysML par l’OMG  Co-fondateur de l’association  Auteur des ouvrages les plus lus en France sur UML  … et du premier livre sur SysML
  • 3.
    Objectifs  SysML, lavariante d’UML2 standardisée récemment par l’OMG, est particulièrement adapté au domaine de l’industrie et à la modélisation de systèmes complexes (aéronautique, spatial, automobile, énergie, armement, etc.)  Cette présentation vise à montrer comment utiliser l’outil Rhapsody (IBM/Rational) pour animer un modèle SysML en s’appuyant sur les diagrammes d’états  L’étude de cas simple, proposée dans cette première présentation est décrite en détail dans le livre « UML2 par la pratique », publié chez Eyrolles • Statecharts identiques en UML2 et SysML 3
  • 4.
    Etude de cas: réveille-matin  Considérons un réveille-matin simplifié : • On peut mettre l’alarme « on » ou « off » • Quand l’heure courante devient égale à l’heure d’alarme, le réveil sonne sans s’arrêter • On peut interrompre la sonnerie 4
  • 5.
    Initialisation du modèleRhapsody  Nous utilisons la version 7.6.1 de IBM Rational Rhapsody Designer for System Engineers 5
  • 6.
    Cas d’utilisation  Unpremier diagramme très simple 6
  • 7.
    Scénario nominal «boite noire »  Un autre diagramme simple donnant un exemple représentatif d’utilisation du réveille-matin • Ébauche d’identification d’états 7
  • 8.
    Premier niveau d’architecture(bdd)  Deux blocs : • Horloge • Alarme  Deux Value Types  Des événements utilisateur  Une opération interne 8
  • 9.
    Premier niveau d’architecture(ibd)  Dans l’ibd, on montre le connecteur entre l’horloge et l’alarme • C’est l’horloge qui va prévenir l’alarme 9
  • 10.
    Diagramme d’états del’horloge (1/2)  L’horloge est responsable de l’horodatage courant • L’horloge met à jour son horodatage, toutes les secondes, en gérant les retours à zéro • L’horloge prévient l’alarme qu’elle doit s’activer  L’utilisateur peut modifier l’horodatage 10
  • 11.
    Diagramme d’états del’horloge (2/2) 11
  • 12.
    Diagramme d’états del’alarme (1/2)  L’alarme gère les événements de l’utilisateur : • ev_armer(Heure hAlarme,Minute mnAlarme)  En positionnant le booléen enAlarme à true  Maj des valeurs heureAlarme et minuteAlarme • ev_desarmer  En positionnant le booléen enAlarme à false • ev_arreterSonnerie  L’alarme réagit à l’événement généré par l’horloge : • ev_sonner  En positionnant le booléen sonne 12
  • 13.
    Diagramme d’états del’alarme (2/2) 13
  • 14.
    Création d’un panelgraphique (1/3) 14
  • 15.
    Création d’un panelgraphique (2/3)  Chaque élément du panel est lié à une valeur ou un état du modèle • heureCourante, etc. 15
  • 16.
    Création d’un panelgraphique (3/3)  Chaque élément du panel est lié à une valeur ou un état du modèle • Etat Sonnerie de l’alarme 16
  • 17.
    Préparation de l’animation Préparation de l’espace de test 17
  • 18.
    Création d’un templatede Sequence diagram  Ce diagramme vide servira de modèle aux diagrammes de séquence générés par la simulation 18
  • 19.
    Initialisation de l’animation(1/2)  Une fois que le modèle est terminé : Full Build • L’animation peut démarrer  D’abord : Go Idle • Initialise le modèle avec les valeurs par défaut et les initial states  Le panel est initialisé  ainsi que le diagramme de séquence simulé  Et les statecharts 19
  • 20.
  • 21.
    Démarrage de l’animation Event Generator • Pour injecter des événements utilisateur 21
  • 22.
    Etape 1  L’utilisateurmet à l’heure : 23h30 22
  • 23.
    Etape 1 :résultats  Mise à l’heure : 23h30 23
  • 24.
    Etape 2  L’utilisateurarme l’alarme : 06h30 24
  • 25.
    Etape 2 :résultats (1/2)  Alarme armée : 06h30 25
  • 26.
    Etape 2 :résultats (2/2) 26
  • 27.
    Etape 3 (1/2) Pas d’intervention utilisateur : le temps s’écoule… 27
  • 28.
  • 29.
    Etape 4 (1/2) Le temps atteint l’heure d’alarme ! 29
  • 30.
  • 31.
    Etape 5  L’utilisateurarrête la sonnerie 31
  • 32.
    Etape 5 :résultats (1/2)  Arrêt sonnerie 32
  • 33.
    Etape 5 :résultats (2/2) 33
  • 34.
    Etape 6  L’utilisateurdésarme l’alarme 34
  • 35.
    Etape 6 :résultats (1/2)  enAlarme = false 35
  • 36.
    Etape 6 :résultats (2/2) 36