Railcar control system case study



Resources
Headlines
Requirements ⤳ Lot 1

Une infrastructure ferroviaire touristique est un circuit fermé de 4 terminaux (Terminal). Sur ce circuit fermé circulent des voitures (Railcar), 3 par exemple. Le sens de circulation des voitures est figé.

Les données sont organisées comme suit :

Terminal
terminal clockwise_next counterclockwise_next
T1 T2 T4
T2 T3 T1
T3 T4 T2
T4 T1 T3

Railcar
railcar origin end is_clockwise
R1 T1 T2 true
R2 T1 T2 true
R3 T3 T2 false

Exercise

  1. UML Class Diagram
  2. UML Object Diagram in consistency with UML Class Diagram

Les voitures sont signalées à une distance 100 puis une distance 80 (R2 s'approche de T2 dans la figure) puis, le cas échéant, stoppées sur la voie si la plateforme du terminal est déjà occupée par une autre voiture (embarquement et/ou débarquement de passagers).

La plateforme ne peut pas accueillir 2 voitures qui seraient dans des sens différents. Les voitures sont donc en concurrence pour l'accès à la plateforme du terminal qu'elles approchent même si elles roulent en sens opposé. Par exemple, R2 puis R3 puis R1 doivent accéder séquentiellement à la plateforme de T2.

Le signal alert100 est envoyé par un centre de contrôle à la voiture en approche ainsi qu'à son terminal d'approche. Le signal alert80 n'est envoyé par le centre de contrôle qu'à la voiture en approche. S'ensuit une interaction entre la voiture en approche et son terminal d'approche.

Une voiture qui circule est considérée dans l'état Cruising. Suit l'état Arriving à une distance inférieure à 100 du terminal d'approche puis l'état Stopped at terminal pour l'embarquement et/ou le débarquement de passagers. Les phases Wait for alert80 (la voiture est à moins de 100 et plus de 80 du terminal d'approche), Wait for terminal order (la voiture est à moins de 80 du terminal d'approche) et Stopped on railway sont incluses dans le processus Arriving.

Les signaux envoyés par son terminal d'approche (end) sont stop (s'arrêter sur la voie), go (quitter le terminal après embarquement et/ou débarquement de passagers), go on (repartir après stoppée sur la voie), terminal stopping (s'arrêter au terminal) et terminal crossing (ne pas s'arrêter au terminal).

Dans le UML Class Diagram, un attribut status est introduit dans Railcar ainsi qu'un type énuméré idoine conforme au UML State Machine Diagram en tant que “behavior” de Railcar. De plus, le UML Class Diagram est rendu conforme au UML Sequence Diagram via la réception des événements.

Exercise

  1. Design Manage -Package- Update Status… -Package- ⤳ set Railcar_control_system package to Validated status
  2. Design Manage -Package- Manage Baselines… -Baselines-
    or -right click- (package within browser) Package Control Package Baselines…
  3. Create baseline Lot 1
  4. Lot 1 Export FileLot_1.xml
  1. Settings Auditing -Model- Auditing Settings Configure Enable Auditing ⤳ check
Requirements ⤳ Lot 2

Les passagers (touristes) dans les voitures disposent d'un bouton « STOP ». Une fois appuyé (et conséquemment illuminé), la voiture doit procéder à un arrêt à son terminal d'approche (end) pour débarquement de passagers. L'appui du bouton est pour la voiture un événement (stop required) qu'elle doit traiter (réceptionner) en toutes circonstances.

Exercise

Etendre le UML Class Diagram Railcar_control_system en ajoutant la réception du signal STOP dans Railcar.

Etendre le UML State Machine Diagram “behavior” de Railcar en modélisant notamment l'envoi de l'événement approaching dans l'état Wait for terminal order. Paramétrer le diagramme à manière à éliminer certains détails : Show Parameter Detail:Name Only.

Introduire stop required comme une transition interne (type internal) dans l'état Railcar.

La transition est associée au “trigger” stop required lui-même piloté par le signal STOP.

Exercise

  1. Design Manage -Package- Update Status… -Package- ⤳ set Railcar_control_system package to Approved status
  2. Create baseline Lot 2
  3. Lot 2 Export FileLot_2.xml
  4. Lot 2Delete Selected
  5. Difference(s) between baseline Lot 1 and model ⤳ Show Differences
  6. Recreation of baseline Lot 2Import File (Lot_2.xml)

La note dans le diagramme Railcar_control_system et dans le package Railcar_control_system ayant été supprimée, la comparaison entre le modèle et la baseline Lot 1 montre (en rouge) les 2 suppressions. Le signal STOP est lui ajouté au package Signals (en vert) ainsi que sa réception dans la classe Railcar (en vert).

Activer (si désiré) Merge to Model : Merge change from baseline to Model annule les 2 suppressions et les 2 ajouts.

Merging piece by piece

Auditing

Exercise

  1. -left click- (Lot 1) Restore to Baseline
  2. -left click- (Lot 2) Restore to Baseline
Requirements ⤳ Lot 3

Les passagers (touristes) dans les terminaux disposent (aussi) d'un bouton « STOP ». Une fois appuyé (et conséquemment illuminé), le terminal doit signaler à la voiture pour laquelle il est son terminal d'approche de procéder à un arrêt pour embarquement de passagers.

Executable StateMachines

Principle

State machines are attached to classes as follows: -right click- (class within browser) Add State Machine

Executable StateMachine Artifact