Stavový diagram je jeden z nástrojů FA. Základní myšlenkou STD je rozdělit proces na řadu jednoznačně definovaných statických stavů, ve kterých se může proces nalézat. Zároveň se jednoznačně stanoví, za jaké podmínky je možno přecházet z jednoho stavu do druhého. Dokud tato podmínka není splněna, proces se nalézá stále ve stejném stavu. Během přechodu z jednoho stavu do druhého může být vykonána nějaká (řídící nebo informační) činnost (akce). Stavový diagram je zvláště vhodný pro úlohy, probíhající v reálném čase a řízené událostmi (v událostně řízeném modelu).
Stavový diagram lze charakterizovat dalšími následujícími vlastnostmi:
Na obr. jsou konstrukty notace stavového diagramu.
Na obr. je ukázka záznamu stavu ve STD.
Z tohoto zápisu by se mohlo zdát, že z jednoho stavu je možno přejít pouze do jednoho jiného stavu. V praxi je však jistě možná situace, že v okamžiku, kdy je proces v nějakém konkrétním stavu, může např. nastat několik různých událostí, které způsobí přechod do různých stavů (mohou být např. stisknuta různá tlačítka). V takovém případě musí být podmínka přechodu složitější, případně ve tvaru přepínače. Tím jsou zároveň automaticky vyloučeny stavové přechody, které nejsou logicky možné nebo jsou zakázané. Dokud tedy nenastane žádná smysluplná událost pro daný stav, žádný přechod ze stavu do stavu ani žádná akce se neprovede.
Na obr. je příklad zápisu STD pro různé stavy objednávky.
Z tohoto příkladu je patrné, jak se zaznamenají do STD jednotlivé stavy objednávky. V praxi může být těchto stavů, ve kterých se může objednávka nalézat, více (např. potvrzená, splněná, redukovaná, zrušená, atd.). Jednou z výhod STD je fakt, že je z něj velice zřetelně vidět, které přechody ze stavu do stavu jsou možné a které ne. (Není možno např. Objednávku ve stavu Nová fakturovat (přejít do stavu fakturovaná).
Jiný příklad použití stavového digramu je na obr. (viz demonstrační příklad na konci kurzu).
Paleta může být z hlediska dopravy ve třech stavech:
Diagram je cyklický, protože dopravní požadavek nemusí být úspěšný a paleta se vrátí do svého původního stavu, ze kterého vyšla. Z diagramu je vidět, že je-li například paleta ve stavu „V“ (vyskladněná), může být přijatá pouze událost (příkaz) „Zaskladnit“. Všechny ostatní možné události musí být potlačeny.
To lze v každém implementačním systému (Access, FoxPro) snadno zařídit v zásadě dvěma způsoby:
Stavový diagram je užitečné použít tak, že jsou v něm uvedeny názvy jednotlivých stavů, přechody mezi nimi a názvy přechodových akcí. Jen výjimečně přechodová akce chybí. Minimálně je zapotřebí změnit hodnotu nějaké stavové proměnné. Přechodové akce je pak vhodné upřesnit pomocí následujícího prostředku FA - Flow Charts (vývojových diagramů).