IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

8. diel - Vývojové diagramy

V predchádzajúcom kvíze, Kvíz - Use Case diagram a doménový model v UML, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Kvíz - Use Case diagram a doménový model v UML , sme si predstavili Acvitity diagram. Už vieme, že slúži ku grafickej reprezentácii procesov. Tiež sme si spomenuli tzv. Vývojové diagramy (anglicky flowcharts), ktoré sa používali pred UML. Keďže sa s nimi ešte určite stretnete a pretože sa bohužiaľ stále učí na niektorých štátnych školách, urobíme si dnes malú odbočku od štandardného UML. Ako vždy na ITnetwork si ukážeme aj využitie na príklade z praxe.

Symboly

Prevažná väčšina vývojových diagramov používa len zjednodušenú sadu symbolov s jediným typom väzby a to plnou čiarou s šípkou.

Základné symboly

Základné symboly sú nasledujúce:

Terminál

Symbol terminál vývojového diagramu - UML

Diagramy by mali začínať a ideálne aj končiť v symbole Terminál. Toto pravidlo však nie je tak striktný, ako tomu bolo napr. V Activity diagramu v UML. Terminál je väčšinou zakreslený ako obdĺžnik s výrazne guľatými rohmi. V niektorých diagramoch sa však môžete stretnúť aj s elipsou alebo kruhom. Terminál, v ktorom tok (flow) procesu začína, v sebe obsahuje zvyčajne text "Štart" a ten, v ktorom proces sa končí, "Koniec". Niektoré diagramy majú koncových bodov viac a niektoré žiadny. Môžete sa stretnúť s diagramy, kde je pre zjednodušenie posledný proces zakreslený s guľatými konci ako terminál.

Proces

Jednotlivé kroky algoritmu / procesu zakresľujú väčšinou ako obdĺžniky, okrem niekoľkých špeciálnych, ako je napr. Už spomínaný terminál a alebo ďalšie procesy ďalej. Proces má v niektorých diagramoch hranaté rohy a v niektorých okrúhle, mal by ísť bezpečne rozoznať od terminálu, ktorý je viac zaguľatený.

Symbol proces vývojového diagramu - UML

Dáta (vstup / výstup)

Väčšina programov nejako reaguje na vstup a výstup (I / O). Tieto procesy zakresľujú kosodĺžnika, typicky tu načítame dáta od užívateľa do premenných alebo vypisujeme dáta užívateľmi. Hoci pre vkladanie a výpis dát užívateľom existujú ďalšie špeciálne symboly, v úplnej väčšine diagramov sa používa výhradne tento symbol. V ukážke nižšie by vypisoval užívateľovi text "Ahojte všetci".

Symbol pre dáta vo vývojovom diagrame - UML

Rozhodnutie

Asi posledným symbolom nutným k vytvoreniu prínosných diagramov je kosoštvorec, označujúci rozhodnutia. Z programátorského hľadiska ide o podmienku. Pomocou podmienok sa zvyčajne zapisujú aj cykly, kde jednu vetvu na konci prekryjeme späť na začiatok podmienky, čím vzniká slučka.

Symbol pre rozhodnutie vo vývojovom diagrame - UML

Vidíme, že symbolov ponúka vývojové diagramy oveľa viac, než Activity diagram. Môžeme povedať, že Activity diagram z UML je zjednodušený a štandardizovaný typ vývojového diagramu.

Ďalšie symboly pre prácu s dátami

Symbolov pre prácu s dátami ponúka vývojové diagramy viac, niektoré vám môžu prísť vhod, iné pravdepodobne nikdy nepoužijete.

Databázy

Databázu zakresľujú štandardne ako cylinder. Niektoré diagramy používajú podobnú notáciu aj pre pevný disk.

Symbol pre databázu vo vývojovom diagrame - UML

Interné úložisko

Interné úložisko, dnes s najvyššou pravdepodobnosťou reprezentujúci pamäť RAM, zakresľujú ako obdĺžnik rozdelený nerovnomerne na 4 časti. Symbol sa ponúka použiť napr. Na prácu s pamäťou cache. Pre klasické operácie s premennými používajte kosodĺžnika zo štandardnej sady symbolov.

Symbol pre interné úložisko vo vývojovom diagrame - UML

Priama dáta a Uložené dáta

Zariadenie s priamym prístupom je chápané ako pevný disk. Druhý symbol nižšie označuje ľubovoľný proces práce s uloženými dátami, ktorý nemožno zapísať iným spôsobom (viď ďalšie symboly).

Symbol pre priama a uložené dáta vo vývojovom diagrame - UML

Extrakcie, Zlučovanie, Radenie, Príprava dát

Pre manipuláciu s dátami ponúka vývojové diagramy niekoľko symbolov. Na obrázku nižšie vidíme zľava:

  • Extrakciu - Extrakcia jednej alebo viacerých častí z množiny dát. Niekedy môže označovať aj rozdelenie toku na viacerých procesov.
  • Zlučovanie (Merge) - Slúži k zlúčeniu dát dohromady. Niekedy môže označovať zlúčenie niekoľkých tokov alebo dokonca merania. Flowcharts skrátka nie sú štandardizované diagramy.
  • Radenie (Sort) - Zoradenie dát.
  • Prípravu (Collate) - Organizovanie dát, typicky do nejakého štandardného formátu alebo zoskupení.
Symboly na extrakciu, spojenie, radenie a prípravu dát vo vývojovom diagrame - UML

Stará médiá

Keďže vývojové diagramy sú tu s nami už veľmi dlho, pre spestrenie si môžeme uviesť symboly pre historická úložiska. Dnes je už asi nestretnete. Jedná sa zľava o stĺpcové dierne štítky, papierovú pásku a magnetickú pásku. Môžete zahliadnuť aj symbol pre viac štítkov.

Symboly pre stará médiá vo vývojovom diagrame - UML

Ďalšie symboly pre riadenie toku

Občas je potrebné siahnuť po ďalších symboloch ovplyvňujúcich tok v diagrame. Sú to:

On-page a Off-page konektory

Pomocou On-page konektorov, ktoré zakresľujú ako kruhy s textovým alebo číselným označením, sa môžeme presúvať do rôznych miest na jednej stránke diagrame. Typicky je použijeme tam, kde by bolo body ťažké spojiť čiarou, pretože sú napr. Ďaleko od seba. Úplne rovnako fungujú aj tzv. Off-page konektory, tie ale umožňujú toku pokračovať na inej stránke.

Symboly konektorov vo vývojovom diagrame - UML

Podprogram

Funkcie, metóda, procedúra, podprogram, subrutina ... Akokoľvek sa vo vašom jazyku hovorí volanie nejaké preddefinované funkcionality, zapíšete ju symbolom obdĺžnika rozdeleným na 3 zvislé častí.

Symbol pre podprogram vo vývojovom diagrame - UML

Oneskorenie

V diagrame môžeme tok pozastaviť a to či na určitý čas (napr. Na 1 sekundu pri ovládaní nejakého stroja) alebo môžeme napr. Čakať na vrátenie dát. Oneskorenie zakresľujú ako obdĺžnik so silne zaguľatenou pravou stranou.

Symbol pre oneskorenie vo vývojovom diagrame - UML

Alebo

V niektorých diagramoch dáva zmysel používať rozhodovacie symboly. Sú to logické "alebo" a logické "a zároveň". Zapisujeme je ako kruh 2x preškrtnutý buď diagonálne alebo zvisle a vodorovne. Pre klasické programy využívajte k vetvenie symbol rozhodnutiu.

Symbol pre alebo vo vývojovom diagrame - UML Symbol pre a zároveň vo vývojovom diagrame - UML

Ďalšie symboly pre vstup / výstup

Vo väčšine príkladov pre vstup a výstup používame iba kosodĺžnik. Existuje však niekoľko ďalších symbolov, ktoré pre tieto účely môžeme použiť.

Displej

Symbol nápadne pripomínajúce katódovú trubicu je symbol pre displej. Dáva ho zmysel používať najmä v prípade, keď zobrazujete na displej, ktorý nie je štandardným výstupom aplikácie.

Symbol displeja vo vývojovom diagrame - UML

Dokument a Dokumenty

Pre vytváranie alebo čítanie dokumentov, prípadne pre tlač, môžeme použiť symboly dokumentu, prípadne dokumentov. Zakresľujú je ako obdĺžnik so zvlnenou dolnej stranou.

Symboly dokumentov vo vývojovom diagrame - UML

Manuálny vstup

Ak nám z nejakého dôvodu nestačí zapísať vstup ako štandardné kosodĺžnik, môžeme využiť symbolu pre manuálny vstup, teda akciu, kedy užívateľ zadáva dáta do systému. Grafickú notáciou je obdĺžnik so zrezaným ľavým horným rohom po dĺžke celej hornej strany.

Symbol pre manuálny vstup vo vývojovom diagrame - UML

Ostatné symboly

Spomeňme si ešte niekoľko symbolov, s ktorými sa môžete v diagramoch stretnúť. Určite ich existuje ešte viac, avšak vo väčšine prípadov si vystačíte aj so základnou sadou spomínanou na začiatku dnešnej lekcie.

Anotácie

Anotácie, alebo ak poznámky pod čiarou, je spôsob, ako do diagramu vkladať komentáre. Anotácia zakresľujú ako "vidličky" a napojujeme plnú či prerušovanou čiarou na miesto, ku ktorému sa viažu.

Symbol pre anotácie vo vývojovom diagrame - UML

Cykly

Ako sme si už hovorili, cykly sa často zakresľujú jednoducho pomocou symbolu rozhodnutia. V niektorých diagramoch sa môžete stretnúť s notáciou pomocou symbolu Príprava (vľavo) alebo Limitu cyklu (vpravo).

Symbol pre cykly vo vývojovom diagrame - UML

Symbol Príprava, obdĺžnik so zašpicatený ľavú a pravou stranou, môžeme používať aj všeobecne k akejkoľvek inicializácii alebo prípravným operáciám.

Príklad

Ukážme si použitie diagramu na príklade. Opäť ide priamo o jeden z interných diagramov z vývoja siete, ktoré nám slúžia pre lepšiu orientáciu v informačnom systéme ITnetwork. Tento konkrétny popisuje upomienku proces výukového asistenta, ktorý pomáha našim študentom pri výučbe. Jedná sa teda o ten istý proces, ako sme ho už opisovali pomocou UML Activity diagramu. Môžete si obidva výsledky porovnať. V procese asistent zistí, kde sa užívateľ v kurzoch teraz práve nachádza, a navrhne mu ďalší postup. Proces a kód je pomerne komplikovaný a použitie diagramu vývoji značne uľahčuje.

Ukážme si najprv diagram a potom si ho popíšme.

Vývojový diagram výukového asistenta - UML

Farebné odlíšenie prvkov diagramu je len pre lepšiu orientáciu a nie je súčasťou notácie. Diagram obsahuje 3 časti:

  • Absolvované lekcie - Asistent zisťuje, či používateľ už absolvoval aspoň jednu lekciu na sieti, aby zistil, čo ho zaujíma, a mohol mu pomáhať s ďalšími krokmi jeho štúdia.
  • Závislosti - Kontroluje sa, či majú všetky absolvované lekcie daného užívateľa uspokojené tzv. Závislosti. To znamená, či používateľ absolvoval predchádzajúce kurzy, na ktoré lekcie nadväzujú. Skrátene či mu nič nechýba.
  • Nasledujúce kurzy - Vyberajú sa ďalší lekcie a nadväzujúce kurzy.

Absolvované lekcie

Program sa pokúsi nájsť nejaké absolvované lekcie užívateľa. Ak žiadne nenájde, vyzve ho, aby si na sieti najprv vybral nejaký kurz a absolvoval prvú lekciu. Ak nejaké lekcie našiel, je program schopný zostaviť tzv. Strom lekcií a inteligentne pomáhať ďalej vo výučbe.

Závislosti

Akonáhle má program lekcie užívateľa, namapuje si kurzy, do ktorých tieto lekcie patrí, a pozrie sa, či má používateľ absolvované predchádzajúce kurzy. Predchádzajúcim kurzom, na ktoré súčasné kurzy nadväzujú, hovoríme závislosti. Ak všetko súhlasí, tok sa presúva do ďalšej časti. Ak je nájdený kurz s neabsolvovaným predchádzajúcim kurzom, program sa pozrie, či má tento kurz test. Ak nie, spýta sa užívateľa, či ovláda znalosti neabsolvovaného predchádzajúceho kurzu a chce ho preskočiť. Ak test existuje, pozrie sa program, či ho užívateľ absolvoval. Ak nie, oznámi používateľovi, že mu chýba predchádzajúce kurz a mal by sa testom uistiť, že danú látku ovláda. Ak používateľ test absolvoval, pozrie sa program na výsledok. Ak je dobrý, ponúkne užívateľovi preskočenie kurzu. V opačnom prípade užívateľovi odporučí absolvovaní tohto kurzu.

Nadväzujúce kurzy

Keď sa tok dostane až do časti "Nasledujúce kurzy", znamená to, že je všetko v poriadku a má užívateľa namotivovať k pokračovanie vo výučbe. Najprv sa pozrie, či sú v niektorom z kurzov, ktoré používateľ číta, neabsolvovanú lekcie. Ak áno, jednoducho odporučí, aby pokračoval niektorú z týchto lekcií. Pokiaľ nie sú v súčasných kurzoch používateľa žiadne ďalšie lekcie k pokračovaniu, pokúsi sa nájsť nadväzujúce všeobecný kurz. Pri úspechu užívateľovi odporučí pokračovať práve týmto kurzom. Ak má používateľ všetky súvisiace všeobecné kurzy absolvované, pozrie sa po nadväzujúcich špeciálnych kurzoch. To sú kurzy, ktoré dávajú užívateľovi špecializáciu na špecifickú technológiu a zvyčajne si vyberie len niekoľko málo týchto kurzov k jeho vybraným jazykom. Ak je taký špecializovaný kurz nájdený, je užívateľovi doporučený. V opačnom prípade sa skript pozrie, aké kurzy užívateľ na ITnetwork ešte neabsolvoval. Pokiaľ nejaké takéto kurzy existujú, ponúkne mu ich zoznam a nechá ho vybrať nový predmet. V opačnom prípade oznámi používateľovi, že sa naučiť všetko na sieti. K tomuto poslednému prípadu pri rozsahu siete asi nikdy nedôjde, ale rozhodovací strom by mal byť kompletný.

Ufff. Môžete sa pozrieť, koľko textu zabralo opísanie algoritmu. A teraz sa pozrite na obrázok. Je dokázané, že ľudský mozog vníma vizuálne nákresy veľmi výrazne efektívnejšie, než text. Diagram je u takto zložitého rozhodovacieho algoritmu nevyhnutná pomôcka dobrého programátora. Len ťažko možno ladiť kód, o ktorom si nie ste istí, čo má v ktorom bode presne urobiť. Odporúčame však použiť skôr štandardné notáciu Activity diagramu z UML než vývojový diagram.

V budúcej lekcii, UML - Package diagram a deployment diagram , sa pozrieme na Diagram balíčkov a Diagram nasadenia.


 

Predchádzajúci článok
Kvíz - Use Case diagram a doménový model v UML
Všetky články v sekcii
UML
Preskočiť článok
(neodporúčame)
UML - Package diagram a deployment diagram
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
2 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity