8. díl - Vývojové diagramy

Návrhové vzory UML Vývojové diagramy

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, UML - Activity diagram, jsme si představili Acvitity diagram. Již víme, že slouží ke grafické reprezentaci procesů. Také jsme si zmínili tzv. vývojové diagramy (anglicky flowcharts), které se používaly před UML. Jelikož se s nimi ještě určitě setkáte a protože se bohužel stále učí na některých státních školách, uděláme si dnes malou odbočku od standardního UML. Jako vždy na ITnetwork si ukážeme i využití na příkladu z praxe.

Symboly

Naprostá většina vývojových diagramů používá jen zjednodušenou sadu symbolů s jediným typem vazby a to plnou čárou s šipkou.

Základní symboly

Základní symboly jsou následující:

Terminál
Symbol terminál vývojového diagramu

Diagramy by měly začínat a ideálně i končit v symbolu Terminál. Toto pravidlo ovšem není tak striktní, jako tomu bylo např. v Activity diagramu v UML. Terminál je většinou zakreslen jako obdélník s výrazně kulatými rohy. V některých diagramech se ovšem můžete setkat i s elipsou nebo kruhem. Terminál, ve kterém tok (flow) procesu začíná, v sobě obsahuje obvykle text "Start" a ten, ve kterém proces končí, "Konec". Některé diagramy mají koncových bodů více a některé žádný. Můžete se setkat s diagramy, kde je pro zjednodušení poslední proces zakreslen s kulatými konci jako terminál.

Proces

Jednotlivé kroky algoritmu/procesu zakreslujeme většinou jako obdélníky, kromě několika speciálních, jako je např. již zmíněný terminál a nebo další procesy dále. Proces má v některých diagramech hranaté rohy a v některých kulaté, měl by jít bezpečně rozeznat od terminálu, který je více zakulacený.

Symbol proces vývojového diagramu
Data (vstup/výstup)

Většina programů nějak reaguje na vstup a výstup (I/O). Tyto procesy zakreslujeme kosodélníkem, typicky zde načítáme data od uživatele do proměnných nebo vypisujeme data uživateli. Ačkoli pro vkládání a výpis dat uživatelem existují další speciální symboly, v naprosté většině diagramů se používá výhradně tento symbol. V ukázce níže by vypisoval uživateli text "Ahoj světe".

Symbol pro data ve vývojovém diagramu
Rozhodnutí

Asi posledním symbolem nutným k vytvoření přínosných diagramů je kosočtverec, označující rozhodnutí. Z programátorského hlediska se jedná o podmínku. Pomocí podmínek se obvykle zapisují i cykly, kde jednu větev na konci navedeme zpět na začátek podmínky, čímž vzniká smyčka.

Symbol pro rozhodnutí ve vývojovém diagramu

Vidíme, že symbolů nabízí vývojové diagramy mnohem více, než Activity diagram. Můžeme říci, že Activity diagram z UML je zjednodušený a standardizovaný typ vývojového diagramu.

Další symboly pro práci s daty

Symbolů pro práci s daty nabízí vývojové diagramy více, některé vám mohou přijít vhod, jiné pravděpodobně nikdy nepoužijete.

Databáze

Databázi zakreslujeme standardně jako cylindr. Některé diagramy používají podobnou notaci i pro pevný disk.

Symbol pro databázi ve vývojovém diagramu
Interní úložiště

Interní úložiště, dnes s nejvyšší pravděpodobností reprezentující paměť RAM, zakreslujeme jako obdélník rozdělený nerovnoměrně na 4 části. Symbol se nabízí použít např. pro práci s pamětí Cache. Pro klasické operace s proměnnými používejte kosodélníky ze standardní sady symbolů.

Symbol pro interní úložiště ve vývojovém diagramu
Přímá data a Uložená data

Zařízení s přímým přístupem je chápáno jako pevný disk. Druhý symbol níže označuje libovolný proces práce s uloženými daty, který nelze zapsat jiným způsobem (viz další symboly).

Symbol pro přímá a uložená data ve vývojovém diagramu
Extrakce, Slučování, Řazení, Příprava dat

Pro práci s daty nabízí vývojové diagramy několik symbolů. Na obrázku níže vidíme zleva:

  • Extrakci - Extrakce jedné nebo více částí z množiny dat. Někdy může označovat i rozdělení toku na více procesů.
  • Slučování (Merge) - Slouží ke sloučení dat dohromady. Někdy může označovat sloučení několika několika toků nebo dokonce měření. Flowcharts zkrátka nejsou standardizované diagramy.
  • Řazení (Sort) - Seřazení dat.
  • Přípravu (Collate) - Organizování dat, typicky do nějakého standardního formátu nebo uskupení.
Symboly pro extrakci, spojení, řazení a přípravu dat ve vývojovém diagramu
Stará média

Jelikož vývojové diagramy jsou tu s námi již velmi dlouho, pro zpestření si můžeme uvést symboly pro historická úložiště. Dnes je již asi nepotkáte. Jedná se zleva o děrný štítek, papírovou pásku a magnetickou pásku. Můžete zahlédnout i symbol pro více štítků.

Symboly pro stará média ve vývojovém diagramu

Další symboly pro řízení toku

Občas je třeba sáhnout po dalších symbolech ovlivňujících tok v diagramu. Jsou to:

On-page a Off-page konektory

Pomocí On-page konektorů, které zakreslujeme jako kruhy s textovým nebo číselným označením, se můžeme přesouvat do různých míst na jedné stránce diagramu. Typicky je použijeme tam, kde by bylo body obtížné spojit čárou, protože jsou např. daleko od sebe. Úplně stejně fungují i tzv. Off-page konektory, ty ale umožňují toku pokračovat na jiné stránce.

Symboly konektorů ve vývojovém diagramu
Podprogram

Funkce, metoda, procedura, podprogram, subrutina... Jakkoli se ve vašem jazyce říká volání nějaké předdefinované funkcionality, zapíšete ji symbolem obdélníku rozděleným na 3 svislé částí.

Symbol pro podprogram ve vývojovém diagramu
Zpoždění

V diagramu můžeme tok pozastavit a to ať na určitý čas (např. na 1 vteřinu při ovládání nějakého stroje) nebo můžeme např. čekat na vrácení dat. Zpoždění zakreslujeme jako obdélník se silně zakulacenou pravou stranou.

Symbol pro zpoždění ve vývojovém diagramu
Nebo

V některých diagramech dává smysl používat rozhodovací symboly. Jsou to logické "nebo" a logické "a zároveň". Zapisujeme je jako kruh 2x přeškrtnutý buď diagonálně nebo svisle a vodorovně. Pro klasické programy využívejte k větvení symbol rozhodnutí.

Symbol pro nebo ve vývojovém diagramu Symbol pro a zároveň ve vývojovém diagramu

Další symboly pro vstup/výstup

Ve většině příkladů pro vstup a výstup používáme pouze kosodélník. Existuje ovšem několik dalších symbolů, které pro tyto účely můžeme použít.

Displej

Symbol nápadně připomínající katodovou trubici je symbol pro displej. Dává jej smysl používat zejména v případě, když zobrazujete na displej, který není standardním výstupem aplikace.

Symbol displeje ve vývojovém diagramu
Dokument a Dokumenty

Pro vytváření nebo čtení dokumentů, případně pro tisk, můžeme použít symboly dokumentu, případně dokumentů. Zakreslujeme je jako obdélník se zvlněnou dolní stranou.

Symboly dokumentů ve vývojovém diagramu
Manuální vstup

Pokud nám z nějakého důvodu nestačí zapsat vstup jako standardní kosodélník, můžeme využít symbolu pro manuální vstup, tedy akci, kdy uživatel zadává data do systému. Grafickou notací je obdélník se seříznutým levým horním rohem po délce celé horní strany.

Symbol pro manuální vstup ve vývojovém diagramu

Ostatní symboly

Zmiňme si ještě několik symbolů, se kterými se můžete v diagramech setkat. Určitě jich existuje ještě více, ovšem ve většině případů si vystačíte i se základní sadou zmíněnou na začátku dnešní lekce.

Anotace

Anotace, nebo-li poznámky pod čarou, je způsob, jak do diagramu vkládat komentáře. Anotace zakreslujeme jako "vidličky" a napojujeme plnou či přerušovanou čárou do místa, ke kterému se váží.

Symbol pro anotace ve vývojovém diagramu
Cykly

Jak jsme si již říkali, cykly se často zakreslují jednoduše pomocí symbolu rozhodnutí. V některých diagramech se můžete setkat s notací pomocí symbolu Příprava (vlevo) nebo Limitu cyklu (vpravo).

Symbol pro cykly ve vývojovém diagramu

Symbol Připrava, obdélník se zašpičatěnou levou a pravou stranou, můžeme používat i obecně k jakékoli inicializaci nebo přípravným operacím.

Příklad

Ukažme si použití diagramu na příkladu. Opět jde přímo o jeden z interních diagramů z vývoje sítě, které nám slouží pro lepší orientaci v informačním systému ITnetwork. Tento konkrétní popisuje upomínací proces výukového asistenta, který pomáhá našim studentům při výuce. Jedná se tedy o ten samý proces, jako jsme jej již popisovali pomocí UML Activity diagramu. Můžete si oba výsledky porovnat. V procesu asistent zjistí, kde se uživatel v kurzech nyní zrovna nachází, a navrhne mu další postup. Proces a kód je poměrně komplikovaný a použití diagramu vývoji značně ulehčuje.

Ukažme si nejprve diagram a poté si jej popišme.

Vývojový diagram výukového asistenta

Barevné odlišení prvků diagramu je jen pro lepší orientaci a není součástí notace. Diagram obsahuje 3 části:

  • Absolvované lekce - Asistent zjišťuje, zda uživatel již absolvoval alespoň jednu lekci na síti, aby zjistil, co jej zajímá, a mohl mu pomáhat s dalšími kroky jeho studia.
  • Závislosti - Kontroluje se, zda mají všechny absolvované lekce daného uživatele uspokojené tzv. závislosti. To znamená, zda uživatel absolvoval předchozí kurzy, na které lekce navazují. Zkráceně zda mu nic nechybí.
  • Navazující kurzy - Vybírají se další lekce a navazující kurzy.

Absolvované lekce

Program se pokusí nalézt nějaké absolvované lekce uživatele. Pokud žádné nenalezne, vyzve jej, aby si na síti nejprve vybral nějaký kurz a absolvoval první lekci. Pokud nějaké lekce nalezl, je program schopný sestavit tzv. strom lekcí a inteligentně pomáhat dále ve výuce.

Závislosti

Jakmile má program lekce uživatele, namapuje si kurzy, do kterých tyto lekce patří, a podívá se, zda má uživatel absolvované předchozí kurzy. Předchozím kurzům, na které současné kurzy navazují, říkáme závislosti. Pokud vše souhlasí, tok se přesouvá do další části. Pokud je nalezen kurz s neabsolvovaným předchozím kurzem, program se podívá, zda má tento kurz test. Pokud ne, zeptá se uživatele, zda ovládá znalosti neabsolvovaného předchozího kurzu a chce jej přeskočit. Pokud test existuje, podívá se program, zda jej uživatel absolvoval. Pokud ne, sdělí uživateli, že mu chybí předchozí kurz a měl by se testem ujistit, že danou látku ovládá. Pokud uživatel test absolvoval, podívá se program na výsledek. Pokud je dobrý, nabídne uživateli přeskočení kurzu. V opačném případě uživateli doporučí absolvování tohoto kurzu.

Navazující kurzy

Když se tok dostane až do části "Navazující kurzy", znamená to, že je vše v pořádku a má uživatele namotivovat k pokračování ve výuce. Prvně se podívá, zda jsou v některém z kurzů, které uživatel čte, neabsolvované lekce. Pokud ano, jednoduše doporučí, aby pokračoval některou z těchto lekcí. Pokud nejsou v současných kurzech uživatele žádné další lekce k pokračování, pokusí se nalézt navazující obecný kurz. Při úspěchu uživateli doporučí pokračovat právě tímto kurzem. Pokud má uživatel všechny související obecné kurzy absolvované, podívá se po navazujících speciálních kurzech. To jsou kurzy, které dávají uživateli specializaci na určitou technologii a obvykle si vybere jen několik málo těchto kurzů k jeho vybraným jazykům. Pokud je takový specializovaný kurz nalezen, je uživateli doporučen. V opačném případě se skript podívá, jaké kurzy uživatel na ITnetwork ještě neabsolvoval. Pokud nějaké takové kurzy existují, nabídne mu jejich seznam a nechá jej vybrat nový předmět. V opačném případě sdělí uživateli, že se naučit vše na síti. K tomuto poslednímu případu při rozsahu sítě asi nikdy nedojde, ale rozhodovací strom by měl být kompletní.

Ufff. Můžete se podívat, kolik textu zabralo popsání algoritmu. A nyní se podívejte na obrázek. Je dokázané, že lidský mozek vnímá vizuální nákresy velmi výrazně efektivněji, než text. Diagram je u takto složitého rozhodovacího algoritmu nezbytná pomůcka dobrého programátora. Jen těžko lze ladit kód, o kterém si nejste jistí, co má v kterém bodě přesně udělat. Doporučujeme ovšem použít spíše standardní notaci Activity diagramu z UML než vývojový diagram.

V příští lekci, UML - Package diagram a deployment diagram, se podíváme na Diagram balíčků a Diagram nasazení.


 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Miniatura
Předchozí článek
UML - Activity diagram
Miniatura
Všechny články v sekci
UML
Aktivity (1)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!