State Machine Diagram & Statechart Diagram v UML

Co je schรฉma stรกtnรญho stroje?

Stavovรฝ diagram se pouลพรญvajรญ k zachycenรญ chovรกnรญ softwarovรฉho systรฉmu. Diagramy UML State machine lze pouลพรญt k modelovรกnรญ chovรกnรญ tล™รญdy, subsystรฉmu, balรญฤku nebo dokonce celรฉho systรฉmu. Nazรฝvรก se takรฉ stavovรฝ diagram nebo diagram pล™echodu stavu.

Co je stavovรฝ diagram?

Stavovรฉ diagramy nรกm poskytujรญ efektivnรญ zpลฏsob, jak modelovat interakce nebo komunikaci, ke kterรฝm dochรกzรญ v rรกmci externรญch entit a systรฉmu. Tyto diagramy se pouลพรญvajรญ k modelovรกnรญ systรฉmu zaloลพenรฉho na udรกlostech. Stav objektu je ล™รญzen pomocรญ udรกlosti. Stavovรฉ diagramy se pouลพรญvajรญ k popisu rลฏznรฝch stavลฏ entity v aplikaฤnรญm systรฉmu.

V UML existujรญ celkem dva typy diagramลฏ stavovรฉho stroje:

1. Behavioral State Machine Diagram

  • Zachycuje chovรกnรญ entity pล™รญtomnรฉ v systรฉmu.
  • Pouลพรญvรก se k reprezentaci konkrรฉtnรญ implementace prvku.
  • Chovรกnรญ systรฉmu lze modelovat pomocรญ diagramu stavovรฉho stroje v OOAD.

2. Protokol Stavovรฉ schรฉma stroje

  • Tyto diagramy se pouลพรญvajรญ k zachycenรญ chovรกnรญ protokolu.
  • Pล™edstavuje, jak se zmฤ›nรญ stav protokolu tรฝkajรญcรญ se udรกlosti. Pล™edstavuje takรฉ odpovรญdajรญcรญ zmฤ›ny v systรฉmu.
  • Nepล™edstavujรญ konkrรฉtnรญ implementaci prvku.

Proฤ State Machine Diagram?

Stavovรฝ diagram se pouลพรญvรก k zachycenรญ dynamickรฉho aspektu systรฉmu. Diagramy stavovรฝch strojลฏ se pouลพรญvajรญ k reprezentaci chovรกnรญ aplikace. Objekt prochรกzรญ bฤ›hem svรฉ ลพivotnosti rลฏznรฝmi stavy. ลฝivotnost objektu zลฏstรกvรก, dokud nenรญ program ukonฤen. Objekt pล™echรกzรญ z vรญce stavลฏ v zรกvislosti na udรกlosti, kterรก nastane v objektu. Kaลพdรฝ stav pล™edstavuje nฤ›jakรฉ jedineฤnรฉ informace o objektu.

Stavovรฉ diagramy se pouลพรญvajรญ k nรกvrhu interaktivnรญch systรฉmลฏ, kterรฉ reagujรญ na vnitล™nรญ nebo vnฤ›jลกรญ udรกlosti. Stavovรฝ diagram v UML vizualizuje tok provรกdฤ›nรญ z jednoho stavu do jinรฉho stavu objektu.

Pล™edstavuje stav objektu od vytvoล™enรญ objektu aลพ do zniฤenรญ nebo ukonฤenรญ objektu.

Primรกrnรญm รบฤelem stavovรฉho diagramu je modelovat interaktivnรญ systรฉmy a definovat kaลพdรฝ stav objektu. Stavovรฉ diagramy jsou navrลพeny tak, aby zachycovaly dynamickรฉ chovรกnรญ aplikaฤnรญho systรฉmu. Tyto diagramy se pouลพรญvajรญ k reprezentaci rลฏznรฝch stavลฏ systรฉmu a entit v systรฉmu.

Zรกpis a symbol pro schรฉma stรกtnรญho stroje (diagram stรกtnรญho schรฉmatu)

Nรกsledujรญ rลฏznรฉ zรกpisy, kterรฉ se pouลพรญvajรญ v celรฉm diagramu stavovรฉho diagramu. Vลกechny tyto zรกpisy, kdyลพ jsou kombinovรกny, tvoล™รญ jeden diagram.

Zรกpisy stavovรฝch diagramลฏ UML
Zรกpisy stavovรฝch diagramลฏ UML

Poฤรกteฤnรญ stav

Symbol poฤรกteฤnรญho stavu se pouลพรญvรก k oznaฤenรญ zaฤรกtku diagramu stavovรฉho stroje.

Koneฤnรฝ stav

Tento symbol se pouลพรญvรก k oznaฤenรญ konce schรฉmatu stavovรฉho stroje.

Rozhodovacรญ box

Obsahuje podmรญnku. V zรกvislosti na vรฝsledku vyhodnocenรฉho ochrannรฉho stavu se pro provedenรญ programu zvolรญ novรก cesta.

Pล™echod

Pล™echod je zmฤ›na jednoho stavu do jinรฉho stavu, ke kterรฉ doลกlo v dลฏsledku nฤ›jakรฉ udรกlosti. Pล™echod zpลฏsobรญ zmฤ›nu stavu objektu.

State box

Je to specifickรฝ okamลพik v ลพivotnosti pล™edmฤ›tu. Je definovรกn pomocรญ nฤ›jakรฉ podmรญnky nebo pล™รญkazu v tฤ›le klasifikรกtoru. Pouลพรญvรก se k zobrazenรญ jakรฝchkoli statickรฝch i dynamickรฝch situacรญ.

Oznaฤuje se pomocรญ obdรฉlnรญku s kulatรฝmi rohy. Nรกzev stรกtu je napsรกn uvnitล™ zaoblenรฉho obdรฉlnรญku.

Nรกzev stรกtu lze takรฉ umรญstit mimo obdรฉlnรญk. To lze provรฉst v pล™รญpadฤ› sloลพenรฝch nebo submachine stavลฏ. Nรกzev stรกtu lze buฤ umรญstit do obdรฉlnรญku nebo mimo obdรฉlnรญk do tabulkovรฉho rรกmeฤku. Nelze provรกdฤ›t obojรญ souฤasnฤ›.

Stav mลฏลพe bรฝt aktivnรญ nebo neaktivnรญ. Kdyลพ je stav v pracovnรญm reลพimu, je aktivnรญ, jakmile se zastavรญ provรกdฤ›nรญ a pล™ejde do jinรฉho stavu, pล™edchozรญ stav se stane neaktivnรญm a aktuรกlnรญ stav se stane aktivnรญm.

Typy stรกtu

Unified Modeling Language definuje tล™i typy stavลฏ:

  • Jednoduchรฝ stav
  • Nemajรญ ลพรกdnรฝ substรกt.
  • Sloลพenรฝ stav
  • Tyto typy stavลฏ mohou mรญt jeden nebo vรญce podstavลฏ.
  • Sloลพenรฝ stav se dvฤ›ma nebo vรญce podstavy se nazรฝvรก ortogonรกlnรญ stav.
  • Stav samopalu
  • Tyto stavy se sรฉmanticky rovnajรญ sloลพenรฝm stavลฏm.
  • Na rozdรญl od sloลพenรฉho stavu mลฏลพeme stavy submachine znovu pouลพรญt.

Jak nakreslit stavovรฝ diagram?

Stavovรฉ diagramy se pouลพรญvajรญ k popisu rลฏznรฝch stavลฏ, kterรฝmi objekt prochรกzรญ. Pล™echod mezi jednรญm stavem do jinรฉho stavu nastรกvรก kvลฏli nฤ›jakรฉ spuลกtฤ›nรฉ udรกlosti. Chcete-li nakreslit stavovรฝ diagram UML, je tล™eba identifikovat vลกechny moลพnรฉ stavy jakรฉkoli konkrรฉtnรญ entity.

Jejich รบฤelem UML diagramy je reprezentovat stavy systรฉmu. Stavy hrajรญ zรกsadnรญ roli ve stavovรฝch pล™echodovรฝch diagramech. Pล™ed implementacรญ diagramu musรญ bรฝt nejprve analyzovรกny vลกechny podstatnรฉ objekty, stavy a udรกlosti, kterรฉ zpลฏsobujรญ zmฤ›ny ve stavech.

Pล™i kreslenรญ diagramu stavovรฉho diagramu je tล™eba vzรญt v รบvahu nรกsledujรญcรญ pravidla:

  1. Nรกzev pล™echodu stavu musรญ bรฝt jedineฤnรฝ.
  2. Nรกzev stรกtu musรญ bรฝt snadno srozumitelnรฝ a musรญ popisovat chovรกnรญ stรกtu.
  3. Pokud existuje vรญce objektลฏ, mฤ›ly by bรฝt implementovรกny pouze zรกkladnรญ objekty.
  4. Pro kaลพdรฝ pล™echod a udรกlost musรญ bรฝt uvedena sprรกvnรก jmรฉna.

Kdy pouลพรญt schรฉma stรกtnรญho stroje?

Stavovรฉ diagramy se pouลพรญvajรญ k implementaci reรกlnรฝch pracovnรญch modelลฏ a objektovฤ› orientovanรฝch systรฉmลฏ do hloubky. Tyto diagramy se pouลพรญvajรญ k porovnรกnรญ dynamickรฉ a statickรฉ povahy systรฉmu zachycenรญm dynamickรฉho chovรกnรญ systรฉmu.

Stavovรฉ diagramy se pouลพรญvajรญ k zachycenรญ zmฤ›n v rลฏznรฝch entitรกch systรฉmu od zaฤรกtku do konce. Pouลพรญvajรญ se k analรฝze toho, jak mลฏลพe udรกlost vyvolat zmฤ›nu ve vรญce stavech systรฉmu.

Pouลพรญvajรญ se stavovรฉ char diagramy:

  1. Modelovat objekty systรฉmu.
  2. Modelovat a implementovat interaktivnรญ systรฉmy.
  3. Chcete-li zobrazit udรกlosti, kterรฉ spouลกtฤ›jรญ zmฤ›ny ve stavech.

Pล™รญklad State Machine

Nรกsledujรญcรญ pล™รญklad diagramu stavovรฉho diagramu pล™edstavuje proces ovฤ›ล™ovรกnรญ uลพivatele.

Stavovรฝ diagram UML

Stavovรฝ diagram UML

Existujรญ celkem dva stavy a prvnรญ stav znamenรก, ลพe jako prvnรญ je tล™eba zadat OTP. Potรฉ se OTP zaลกkrtne v rozhodovacรญm poli, pokud je sprรกvnรฉ, dojde pouze k pล™echodu stavu a uลพivatel bude ovฤ›ล™en. Pokud je OTP nesprรกvnรฉ, pak se pล™echod neuskuteฤnรญ a vrรกtรญ se zpฤ›t do poฤรกteฤnรญho stavu, dokud uลพivatel nezadรก sprรกvnรฉ OTP, jak je znรกzornฤ›no ve vรฝลกe uvedenรฉm pล™รญkladu schรฉmatu stavovรฉho stroje.

Diagram stavu stroje vs. vรฝvojovรฝ diagram

Nรญลพe jsou uvedeny klรญฤovรฉ rozdรญly mezi stavovรฝm diagramem a vรฝvojovรฝm diagramem

Schรฉma stรกtnรญho stroje Vรฝvojovรฝ diagram
Pล™edstavuje rลฏznรฉ stavy systรฉmu. Vรฝvojovรฝ diagram znรกzorลˆuje tok provรกdฤ›nรญ programu.
Stavovรฝ automat mรก koncept WAIT, tj. ฤekรกnรญ na akci nebo udรกlost. Vรฝvojovรฝ diagram se nezabรฝvรก ฤekรกnรญm na koncept.
Stavovรฉ stroje se pouลพรญvajรญ pro ลพivรฝ systรฉm. Vรฝvojovรฝ diagram zobrazuje vฤ›tvenรฉ sekvence systรฉmu.
Stavovรฝ automat je modelovacรญ diagram. Vรฝvojovรฝ diagram je sekvenฤnรญ tok nebo DFD diagram.
Stavovรฝ automat mลฏลพe zkoumat rลฏznรฉ stavy systรฉmu. Vรฝvojovรฝ diagram se zabรฝvรก cestami a ล™รญzenรญm toku.

Shrnutรญ

  • Stavovรฉ diagramy se takรฉ nazรฝvajรญ diagramy stavovรฝch strojลฏ.
  • Tyto diagramy se pouลพรญvajรญ k modelovรกnรญ systรฉmu zaloลพenรฉho na udรกlostech.
  • Stav entity je ล™รญzen pomocรญ udรกlosti.
  • Existujรญ celkem dva typy diagramลฏ stavovรฉho stroje: 1) Stavovรฝ strojovรฝ diagram chovรกnรญ 2) Stavovรฝ strojovรฝ diagram protokolu
  • Stavovรฝ diagram se pouลพรญvรก k zachycenรญ dynamickรฉho aspektu systรฉmu.
  • Stav je specifickรฝ okamลพik v ลพivotnosti objektu.

Shrลˆte tento pล™รญspฤ›vek takto: