Goede avond mede tweakers,
recentelijk werd mij verzocht om middels een Trein Simulatie voorbeeld aan te geven dat ik een realtime systeem kon weergeven in enkele UML diagrammen. De keuze voor de te gebruiken modellen was vrij, je moest het alleen kunnen verdedigen waarom nu juist deze.
De case is als volgt:
Je hebt een tunnel, aan weerszijden van de tunnel is een ingaand en een uitgaand spoor. Treinen kunnen maar in 1 richting rijden, op elke in/uitgang staat een sensor welke aangeeft dat daar een trein staat, en aan weerszijden van de tunnel is een stoplicht. Vrij simpel allemaal, maar hieronder volgt een plaatje om het eventueel te verduidelijken.

Nu heb ik gekozen voor een Klassendiagram zoals dit hieronder te zien is. Je kunt duidelijk zien dat er gekozen is voor een scheiding tussen een Embedded systeem en een Simulatie systeem.

Om dit te ondersteunen heb ik ook nog gekozen voor een Statechart. Je kunt hierin zien dat de tunnel 3 statussen kan aannemen. TunnelGesloten, TunnelOpenLinks en TunnelOpenRechts, afhankelijk van de status wordt ook een method uitgevoerd, wat ook direct te zien is. Deze wordt slechts 1 maal uitgevoerd, enkel en alleen zodra de status geinitieerd wordt.

En nog een Use Case Diagram

Ik krijg echter het gevoel dat ik de samenhang tussen de diagrammen mis, en of dat mijn diagrammen incompleet zijn. Een voorbeeld hiervan is bijvoorbeeld bij het Statechart diagram. Als de tunnel de status TunnelOpenLinks heeft, en sensor 2 voor de andere kant getriggerd wordt, hoe ik dan kan weergeven dat de Tunnel eerst wacht tot de tunnel gesloten is, (dus alle treinen eruit zijn) en dan pas de tunnel weer vrij geeft?
Tot slot heb ik ook nog 3 Use Case Beschrijvingen gemaakt, om het een en ander nog tekstueel te verhelderen.
TunnelOpenRechts
Actoren: Sensor 1
Preconditie: Tunnel status is TunnelGesloten
Beschrijving:
1. Sensor 1 geeft een puls
2. Simulator stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status en stuurt deze naar de GUI met SendTunnelState
5. GUI stuurt de SendTunnelState naar de Simulator
6. Simulator voert StoplichtRGroen uit
Postconditie: Tunnel status is OpenTunnelRechts
TunnelOpenLinks
Actoren: Sensor 2
Preconditie: Tunnel status is TunnelGesloten
Beschrijving:
1. Sensor 2 geeft een puls
2. Simulator systeem stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status en stuurt deze naar de GUI met SendTunnelState
5. GUI stuurt de SendTunnelState naar de Simulator
6. Simulator voert StoplichtLGroen uit
Postconditie: Tunnel status is OpenTunnelLinks
TunnelSluiten
Actoren: Sensor 3 óf Sensor 4
Preconditie: Tunnel status is OpenTunnelLinks óf OpenTunnelRechts
Beschrijving:
1. Sensor 3 óf 4 geeft een puls
2. Simulator stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status, en stuurt deze naar GUI met SendTunnelState
5. GUI stuurt SendTunnelState naar Simulator
6. Simulator voert StoplichtLRood uit
7. Simulator voert StoplichtRRood uit
Postconditie: Tunnel status is TunnelGesloten
Indien iemand hier met voldoende UML kennis aanwezig is om me op de goede weg wil helpen zou ik hem/haar zeer dankbaar zijn. Ook als iemand me kan zeggen welke diagrammen ik eventueel nog extra kan maken om het hele verhaal te ondersteunen zal ik me hier eens in verdiepen. Ik wil namelijk wel een goed voorbeeld neer te zetten waarmee ik ook kan aantonen dat ik met UML kan omgaan, en dat áls ik iets fout doe, dat ik ook snap wát er precies fout gaat in mijn gedachtengang.
Gracias alvast
recentelijk werd mij verzocht om middels een Trein Simulatie voorbeeld aan te geven dat ik een realtime systeem kon weergeven in enkele UML diagrammen. De keuze voor de te gebruiken modellen was vrij, je moest het alleen kunnen verdedigen waarom nu juist deze.
De case is als volgt:
Je hebt een tunnel, aan weerszijden van de tunnel is een ingaand en een uitgaand spoor. Treinen kunnen maar in 1 richting rijden, op elke in/uitgang staat een sensor welke aangeeft dat daar een trein staat, en aan weerszijden van de tunnel is een stoplicht. Vrij simpel allemaal, maar hieronder volgt een plaatje om het eventueel te verduidelijken.

Nu heb ik gekozen voor een Klassendiagram zoals dit hieronder te zien is. Je kunt duidelijk zien dat er gekozen is voor een scheiding tussen een Embedded systeem en een Simulatie systeem.

Om dit te ondersteunen heb ik ook nog gekozen voor een Statechart. Je kunt hierin zien dat de tunnel 3 statussen kan aannemen. TunnelGesloten, TunnelOpenLinks en TunnelOpenRechts, afhankelijk van de status wordt ook een method uitgevoerd, wat ook direct te zien is. Deze wordt slechts 1 maal uitgevoerd, enkel en alleen zodra de status geinitieerd wordt.

En nog een Use Case Diagram

Ik krijg echter het gevoel dat ik de samenhang tussen de diagrammen mis, en of dat mijn diagrammen incompleet zijn. Een voorbeeld hiervan is bijvoorbeeld bij het Statechart diagram. Als de tunnel de status TunnelOpenLinks heeft, en sensor 2 voor de andere kant getriggerd wordt, hoe ik dan kan weergeven dat de Tunnel eerst wacht tot de tunnel gesloten is, (dus alle treinen eruit zijn) en dan pas de tunnel weer vrij geeft?
Tot slot heb ik ook nog 3 Use Case Beschrijvingen gemaakt, om het een en ander nog tekstueel te verhelderen.
TunnelOpenRechts
Actoren: Sensor 1
Preconditie: Tunnel status is TunnelGesloten
Beschrijving:
1. Sensor 1 geeft een puls
2. Simulator stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status en stuurt deze naar de GUI met SendTunnelState
5. GUI stuurt de SendTunnelState naar de Simulator
6. Simulator voert StoplichtRGroen uit
Postconditie: Tunnel status is OpenTunnelRechts
TunnelOpenLinks
Actoren: Sensor 2
Preconditie: Tunnel status is TunnelGesloten
Beschrijving:
1. Sensor 2 geeft een puls
2. Simulator systeem stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status en stuurt deze naar de GUI met SendTunnelState
5. GUI stuurt de SendTunnelState naar de Simulator
6. Simulator voert StoplichtLGroen uit
Postconditie: Tunnel status is OpenTunnelLinks
TunnelSluiten
Actoren: Sensor 3 óf Sensor 4
Preconditie: Tunnel status is OpenTunnelLinks óf OpenTunnelRechts
Beschrijving:
1. Sensor 3 óf 4 geeft een puls
2. Simulator stuurt een SendEventTunnel
3. GUI ontvangt SendEventTunnel, en stuurt deze naar Tunnel
4. Tunnel bepaalt de nieuwe status, en stuurt deze naar GUI met SendTunnelState
5. GUI stuurt SendTunnelState naar Simulator
6. Simulator voert StoplichtLRood uit
7. Simulator voert StoplichtRRood uit
Postconditie: Tunnel status is TunnelGesloten
Indien iemand hier met voldoende UML kennis aanwezig is om me op de goede weg wil helpen zou ik hem/haar zeer dankbaar zijn. Ook als iemand me kan zeggen welke diagrammen ik eventueel nog extra kan maken om het hele verhaal te ondersteunen zal ik me hier eens in verdiepen. Ik wil namelijk wel een goed voorbeeld neer te zetten waarmee ik ook kan aantonen dat ik met UML kan omgaan, en dat áls ik iets fout doe, dat ik ook snap wát er precies fout gaat in mijn gedachtengang.
Gracias alvast
Wanna play?