State Machine Diagram & Statechart Diagram i UML
Hvad er et State Machine Diagram?
Stat Diagram bruges til at fange et softwaresystems adfærd. UML State-maskinediagrammer kan bruges til at modellere adfærden for en klasse, et undersystem, en pakke eller endda et helt system. Det kaldes også et Statechart eller State Transition diagram.
Hvad er et Statechart-diagram?
Statechart-diagrammer giver os en effektiv måde at modellere de interaktioner eller kommunikation, der forekommer inden for de eksterne enheder og et system. Disse diagrammer bruges til at modellere det hændelsesbaserede system. En tilstand af et objekt styres ved hjælp af en begivenhed. Statechart-diagrammer bruges til at beskrive forskellige tilstande for en enhed i applikationssystemet.
Der er i alt to typer tilstandsmaskindiagram i UML:
1. Behavioural State Machine Diagram
- Det fanger adfærden hos en enhed, der er til stede i systemet.
- Det bruges til at repræsentere den specifikke implementering af et element.
- Et systems adfærd kan modelleres ved hjælp af adfærdstilstandsmaskinediagram i OOAD.
2. Protokoltilstandsmaskindiagram
- Disse diagrammer bruges til at fange adfærden af en protokol.
- Det repræsenterer, hvordan protokollens tilstand ændrer sig vedrørende hændelsen. Det repræsenterer også tilsvarende ændringer i systemet.
- De repræsenterer ikke den specifikke implementering af et element.
Hvorfor State Machine Diagram?
Statechart diagram bruges til at fange det dynamiske aspekt af et system. Statsmaskindiagrammer bruges til at repræsentere en applikations adfærd. Et objekt gennemgår forskellige tilstande i løbet af sin levetid. Et objekts levetid forbliver, indtil programmet afsluttes. Objektet går fra flere tilstande afhængigt af den hændelse, der opstår i objektet. Hver stat repræsenterer nogle unikke oplysninger om objektet.
Statechart-diagrammer bruges til at designe interaktive systemer, der reagerer på enten intern eller ekstern hændelse. Statechart-diagram i UML visualiserer strømmen af eksekvering fra en tilstand til en anden tilstand af et objekt.
Det repræsenterer et objekts tilstand fra oprettelsen af et objekt, indtil objektet er ødelagt eller afsluttet.
Det primære formål med et statechart-diagram er at modellere interaktive systemer og definere hver eneste tilstand af et objekt. Statechart-diagrammer er designet til at fange den dynamiske adfærd i et applikationssystem. Disse diagrammer bruges til at repræsentere forskellige tilstande af et system og enheder i systemet.
Notation og symbol for State Machine Diagram (Statechart Diagram)
Følgende er de forskellige notationer, der bruges i hele tilstandsdiagrammet. Alle disse notationer, når de kombineres, udgør et enkelt diagram.
Oprindelig tilstand
Starttilstandssymbolet bruges til at angive begyndelsen af et tilstandsmaskindiagram.
Endelig tilstand
Dette symbol bruges til at angive slutningen af et tilstandsmaskindiagram.
Beslutningsboks
Den indeholder en betingelse. Afhængigt af resultatet af en evalueret vagttilstand tages en ny vej til programudførelse.
Transition
En overgang er en ændring i en tilstand til en anden tilstand, som opstår på grund af en eller anden begivenhed. En overgang forårsager en ændring i et objekts tilstand.
Statskasse
Det er et specifikt øjeblik i en genstands levetid. Det defineres ved hjælp af en betingelse eller en erklæring i klassificeringsorganet. Det bruges til at repræsentere statiske såvel som dynamiske situationer.
Det er angivet ved hjælp af et rektangel med runde hjørner. Navnet på en tilstand er skrevet inde i det afrundede rektangel.
Navnet på en tilstand kan også placeres uden for rektanglet. Dette kan gøres i tilfælde af sammensatte eller undermaskinetilstande. Man kan enten placere navnet på en tilstand inden for rektanglet eller uden for rektanglet i en tabelformet boks. Man kan ikke udføre begge dele på samme tid.
En tilstand kan enten være aktiv eller inaktiv. Når en tilstand er i arbejdstilstand, er den aktiv, så snart den stopper med at udføre og går over i en anden tilstand, bliver den forrige tilstand inaktiv, og den aktuelle tilstand bliver aktiv.
Typer af stat
Unified Modeling Language definerer tre typer tilstande:
- Simpel tilstand
- De har ikke nogen understat.
- Sammensat tilstand
- Disse typer stater kan have en eller mere end én undertilstand.
- En sammensat tilstand med to eller flere undertilstande kaldes en ortogonal tilstand.
- Submachine tilstand
- Disse tilstande er semantisk lig med de sammensatte tilstande.
- I modsætning til den sammensatte tilstand kan vi genbruge submachine-tilstandene.
Hvordan tegner man et Statechart-diagram?
Statechart-diagrammer bruges til at beskrive de forskellige tilstande, som et objekt passerer igennem. En overgang mellem en tilstand til en anden tilstand sker på grund af en eller anden udløst hændelse. At tegne et tilstandsdiagram ind UML, skal man identificere alle mulige tilstande for en bestemt enhed.
Formålet med disse UML-diagrammer er at repræsentere tilstande i et system. Stater spiller en afgørende rolle i staters overgangsdiagrammer. Alle de væsentlige objekter, tilstande og begivenheder, der forårsager ændringer i tilstandene, skal først analyseres, før diagrammet implementeres.
Følgende regler skal tages i betragtning, når du tegner et statdiagram:
- Navnet på en tilstandsovergang skal være unikt.
- Navnet på en stat skal være let forståeligt og beskrive en stats adfærd.
- Hvis der er flere objekter, bør kun væsentlige objekter implementeres.
- Egennavne for hver overgang og en begivenhed skal oplyses.
Hvornår skal man bruge et State Machine Diagram?
Tilstandsdiagrammer bruges til at implementere virkelige arbejdsmodeller og objektorienterede systemer i dybden. Disse diagrammer bruges til at sammenligne et systems dynamiske og statiske karakter ved at fange et systems dynamiske adfærd.
Statechart-diagrammer bruges til at fange ændringerne i forskellige enheder i systemet fra start til slut. De bruges til at analysere, hvordan en hændelse kan udløse ændring inden for flere tilstande i et system.
Tilstandstegndiagrammer bruges:
- At modellere objekter i et system.
- At modellere og implementere interaktive systemer.
- For at vise hændelser, der udløser ændringer i staterne.
Eksempel på statsmaskine
Følgende tilstandsdiagram eksempeldiagram repræsenterer brugergodkendelsesprocessen.
Der er i alt to tilstande, og den første tilstand angiver, at OTP'en skal indtastes først. Derefter er OTP markeret i beslutningsboksen, hvis det er korrekt, vil der kun ske tilstandsovergang, og brugeren vil blive valideret. Hvis OTP er forkert, vil overgangen ikke finde sted, og den vil igen gå tilbage til starttilstanden, indtil brugeren indtaster den korrekte OTP som vist i ovenstående eksempel på tilstandsmaskindiagrammet.
State Machine Diagram vs. Flowchart
Følgende er de vigtigste forskelle mellem Statechart Diagram og Flowchart
Statsmaskindiagram | Flowdiagram |
---|---|
Det repræsenterer forskellige tilstande i et system. | Flowdiagrammet illustrerer programafviklingsforløbet. |
Statsmaskinen har et WAIT-koncept, dvs. vente på en handling eller en begivenhed. | Flowchartet beskæftiger sig ikke med at vente på et koncept. |
Statsmaskiner bruges til et levende kørende system. | Flowchart visualiserer forgreningssekvenser af et system. |
Statsmaskinen er et modelleringsdiagram. | Et flowchart er et sekvensflow eller et DFD-diagram. |
Statsmaskinen kan udforske forskellige tilstande i et system. | Flowchart omhandler stier og kontrolflow. |
Resumé
- Statechart-diagrammer kaldes også tilstandsmaskine-diagrammer.
- Disse diagrammer bruges til at modellere det hændelsesbaserede system.
- En tilstand af en enhed kontrolleres ved hjælp af en begivenhed.
- Der er i alt to typer tilstandsmaskinediagrammer: 1) Behavioural State Machine Diagram 2) Protocol State Machine Diagram
- Statechart diagram bruges til at fange det dynamiske aspekt af et system.
- En tilstand er et bestemt øjeblik i et objekts levetid.