Remove ads
From Wikipedia, the free encyclopedia
Stavový diagram (anglicky UML state machine)[1] je v UML způsob grafického zápisu vývoje systému, který má konečný počet stavů. Takovým systémem může být konečný automat (stavový automat) či další podobné systémy, které vyjadřují stavy určitého objektu a přechody (přechodovou funkci) mezi nimi. Diagram poskytuje sadu elementů pro popis chování systému, který je vyjádřen průchodem stavy a je řízen vnějším vstupem.
Podle specifikace modelovacího jazyka UML[2] jsou stavové automaty důležitou pomůckou při modelování dynamického chování systému. V průběhu průchodu stavy mohou být vykonávány různé aktivity. Diagramy stavových automatů podle této definice jsou tvořeny třemi základními prvky – stav, událost, přechod.
Charakteristika elementů, pro které má reprezentace stavovým automatem smysl:
V objektově orientovaném modelování mohou stavové automaty být použity k modelování dynamického chování reaktivních objektů, jako jsou třídy, případy užití, podsystémy nebo celé systémy.
Události jsou odesílány pomocí vypínače. Odesláním události „rozsvítit“ (tedy zapnutím vypínače) se přenese žárovka do stavu Rozsvíceno. Odesláním události „zhasnout“ se přenese žárovka do stavu Zhasnuto. V určitém okamžiku může nastat událost „prasknout“ (kdy dojde k prasknutí vlákna žárovky). Tato událost končí životní cyklus žárovky.
Stav charakterizuje trvání konfigurace neměnných podmínek v systému. Stavem může být označená situace, kdy objekt čeká na událost nebo se objekt nějakých způsobem chová. Stavy jsou, kromě počátečního pseudostavu a koncového stavu, znázorněny pomocí obdélníku se zaoblenými rohy a názvem umístěným v horní části. Stav je v daném konkrétním okamžiku určen následujícími faktory:
Akce – proces, který proběhne rychle a je nepřerušitelný.
Aktivita – déle trvající proces, který lze přerušit.
Každá akce ve stavu je přidružena k internímu přechodu, který je následkem události. Interní přechod umožňuje zachytit skutečnost významnou v rámci stavu, která ale nezpůsobuje přechod do stavu jiného.
Přechod (Transition) [3] je přímé propojení jednotlivých stavů. Směřuje od zdrojového stavu k cílovému. Přechod ze stavu do stavu je reakcí na vznik události nebo ukončení činnosti (nebo činností) v aktivním stavu (vznik tzv. completion event). Nad každým přechodem může být volitelný popisek s následující syntaxi Událost [podmínka] / Akce. Každá část popisku je volitelná.
Specifikace UML definuje událost jako „specifikaci něčeho významného, co se stane v určitém čase a prostoru a co nemá trvání.
Signál je balíček informací, které jsou mezi objekty předávány asynchronně. Notace pro zobrazení signálu je stejná jako u diagramů aktivit.
Složené stavy [4] mohou obsahovat jeden nebo více vnořených stavových automatů Vnořené stavy jsou uspořádány do jednoho nebo více regionů. Vnořené stavy dědí všechny přechody svých mateřský stavů (nadstavů). Pokud tedy složený stav obsahuje přechod, znamená to, že všechny vnořené stavy tento přechod obsahují také. Další výhodou stavových podautomatů je jejich znovupoužitelnost. Pokud by se nám to někde hodilo, mohli bychom stav Zpracování použít i v jiném stavovém automatu.
Složené stavy dělíme na dva druhy:
Opustit ortogonální složený stav lze tedy dvěma způsoby:
Jak název napovídá, pseudostavy nejsou stavy. Jedná se o elementy, ve kterých stavový element nezůstává, pouze jimi prochází.
Z počátečního pseudostavu [5] vystupuje právě jeden přechod do tzv. výchozího stavu. Přechod z počátečního stavu nemá definovanou událost (výjimkou je událost se stereotypem <<create>>). Pro přechod z počátečního stavu je možné definovat chování. V jednom regionu může být maximálně jeden počáteční stav.
Pseudostavy spojení a rozvětvení [6] propojují přechody stavů z ortogonálních regionů. Přechody vycházející z uzlu rozvětvení směřují ke stavům v různých regionech. Pro tyto přechody nejsou definovány události a podmínky. Z uzlu rozvětvení vycházejí minimálně dva přechody. Do pseudostavu spojení vstupují přechody ze stavů z různých regionů a pro tyto přechody nejsou definovány spouštěcí události a podmínky. Do spojovacího uzlu vcházejí minimálně dva přechody
Rozhodování[5] reprezentuje větvení přechodů. Po vstupu do pseudostavu dochází k vyhodnocení podmínek definovaných na výstupních přechodech. Realizován bude ten přechod, jehož podmínka bude splněna. Je proto třeba dát pozor při návrhu stavových automatů s rozhodováním, aby vždy byla právě jedna podmínka splněna. Výstupní přechody nemají definované spouštěcí události.
Přechodový pseudostav[5] je vhodný pro konstrukci složených přechodů mezi stavy. Může být využit pro spojení několika přechodů vycházejících z různých stavů do jednoho společného výstupního přechodu nebo pro rozvětvení jednoho přechodu do několika na základě vyhodnocení podmínek na výstupech. V případě větvení pomocí přechodového pseudostavu hovoříme o statickém podmíněném větvení. Vystupující přechody nemají definované spouštěcí události.
Pseudostavy vstupní a výstupní bod[5] reprezentují vstupy a výstupy, kterými jsou uskutečněny přechody do nebo ze složených stavů.
Pseudostav hluboké historie[5] reprezentuje poslední konfiguraci aktivních stavů kompozitního stavu po jeho opuštění (tedy včetně vnořených složených stavů ad.). Z pseudostavu hluboké historie může existovat jen jeden přechod do některého se stavů obsažených ve složeném stavu, kde se hluboká historie nachází. Definuje se tím stav, do kterého se systém dostane v případě, že v hluboké historii není uložena žádná konfigurace stavů (složený stav ještě nebyl aktivní, nebo skončil v koncovém stavu), jedná se tedy o výchozí přechod.
Pseudostav mělké historie[5] reprezentuje poslední substav složeného stavu, který byl aktivní. Přechod vstupující do elementu mělké historie představuje přechod do posledního aktivního substavu složeného stavu. Složený stav může obsahovat jen jeden element mělké historie. Přechod vystupující z mělké historie reprezentuje přechod do výchozího stavu, pokud složený stav ještě nebyl aktivován a v mělké historii tedy není ještě nic uloženo. Mělká historie je více povrchní než hluboká historie, nepamatuje si plnou konfiguraci stavů, ale jen poslední aktivní stav v rámci substavu.
Po dosažení pseudostavu ukončení[5] se zastaví veškeré činnosti. Jediná, která se vykoná, je definována u přechodu do pseudostavu ukončení.
Koncový pseudostav[7] představuje ukončení chování v rámci regionu. Pokud stavový automat nebo složený stav obsahují více regionů, ukončí se chování celého stavového automatu nebo složeného stavu po dosažení koncového pseudostavu v každém regionu. Pro přechod do koncového pseudostavu není explicitně definovaná událost, přechod je vyvolán vznikem tzv. completion event (automatický přechod po dokončení všech akcí a aktivit v posledním stavu před koncovým). Z koncového pseudostavu nevystupuje žádný přechod a nemá definované žádné vnitřní činnosti.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.