IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

8. diel - Vývojové diagramy

V minulej lekcii, UML - Activity diagram, sme si predstavili Acvitity diagram. Už vieme, že slúži na grafickú reprezentáciu 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čia 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 iba zjednodušenú sadu symbolov s jediným typom väzby a to plnou čiarou so šípkou.

Základné symboly

Základné symboly sú nasledujúce.

Terminál

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 diagrame v UML. Terminál je väčšinou zakreslený ako obdĺžnik s výrazne okrúhlymi rohmi. V niektorých diagramoch sa však môžete stretnúť aj s elipsou alebo kruhom:

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

Terminál, v ktorom tok (flow) procesu začína, v sebe obsahuje obvykle text "Start" a ten, v ktorom proces končí, "End". Niektoré diagramy majú koncových bodov viac a niektoré žiadne. Môžete sa stretnúť s diagramami, kde je pre zjednodušenie posledný proces zakreslený s guľatými koncami ako terminál.

Proces

Jednotlivé kroky algoritmu/procesu zakresľujeme väčšinou ako obdĺžniky, okrem niekoľkých špeciálnych, ako je napr. už spomínaný terminál 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ľujeme kosodĺžnikom, typicky tu načítavame dáta od užívateľa do premenných alebo vypisujeme dáta užívateľovi. Hoci pre vkladanie a výpis dát užívateľom existujú ďalšie špeciálne symboly, vo väčšine diagramov sa používa výhradne tento symbol. V ukážke nižšie by vypisoval užívateľovi text "Hello world":

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

Rozhodnutie

Asi posledným symbolom nutným na vytvorenie prínosných diagramov je kosoštvorec, označujúci rozhodnutie. Z programátorského hľadiska sa jedná o podmienku. Pomocou podmienok sa obvykle zapisujú aj cykly, kde jednu vetvu na konci navedieme 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úkajú vývojové diagramy viac, niektoré vám môžu prísť vhod, iné pravdepodobne nikdy nepoužijete.

Databáza

Databázu zakresľujeme š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úcou pamäť RAM, zakresľujeme 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ĺžniky zo štandardnej sady symbolov:

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

Priame 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ý nie je možné zapísať iným spôsobom (viď ďalšie symboly):

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

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

Na manipuláciu s dátami ponúka vývojové diagramy niekoľko symbolov:

Symboly pre extrakciu, spojenie, radenie a prípravu dát vo vývojovom diagrame - UML

Na obrázku 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 viac procesov.
  • Zlučovanie (Merge) - Slúži na zlúčenie dát dohromady. Niekedy môže označovať zlúčenie niekoľkých tokov alebo dokonca meranie. 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 zoskupenia.

Staré médiá

Keďže vývojové diagramy sú tu s nami už veľmi dlho, na spestrenie si môžeme uviesť symboly pre historické úložiská. Dnes ich už asi nestretnete. Jedná sa zľava o dierny štítok, 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. Poďme si ich krátko uviesť.

On-page a Off-page konektory

Pomocou On-page konektorov, ktoré zakresľujeme ako kruhy s textovým alebo číselným označením, sa môžeme presúvať do rôznych miest na jednej stránke diagramu. Typicky ich 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

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

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ľujeme 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 ich ako kruh 2x preškrtnutý buď diagonálne alebo zvisle a vodorovne. Pre klasické programy využívajte na vetvenie symbol rozhodnutia:

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é na tieto účely môžeme použiť.

Displej

Symbol nápadne pripomínajúci 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

Na vytváranie alebo čítanie dokumentov, prípadne na tlač, môžeme použiť symboly dokumentu, prípadne dokumentov. Zakresľujeme ich ako obdĺžnik so zvlnenou dolnou stranou:

Symboly dokumentov vo vývojovom diagrame - UML

Manuálny vstup

Pokiaľ nám z nejakého dôvodu nestačí zapísať vstup ako štandardný kosodĺžnik, môžeme využiť symbol pre manuálny vstup, teda akciu, kedy užívateľ zadáva dáta do systému. Grafickou 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 spomenutou na začiatku dnešnej lekcie.

Anotácie

Anotácie, alebo poznámky pod čiarou, je spôsob, ako do diagramu vkladať komentáre. Anotácie zakresľujeme ako „vidličky“ a napájame plnou či prerušovanou čiarou do miesta, 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 Priprava, obdĺžnik so zašpicatenou ľavou a pravou stranou, môžeme používať aj všeobecne na akúkoľvek inicializáciu alebo prípravné operácie.

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 upomínací proces výukového asistenta, ktorý pomáha našim študentom pri výučbe. Ide teda o ten istý proces, ako sme ho už popisovali pomocou UML Activity diagramu. Môžete si oba výsledky porovnať. V procese asistent zistí, kde sa použí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ývoja 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 iba 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.
  • Nadväzujúce kurzy - Vyberajú sa ďalšie lekcie a nadväzujúce kurzy.

Absolvované lekcie

Program sa pokúsi nájsť nejaké absolvované lekcie používateľa. Pokiaľ žiadne nenájde, vyzve ho, aby si na sieti najprv vybral nejaký kurz a absolvoval prvú lekciu. Pokiaľ 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 používateľa, namapuje si kurzy, do ktorých tieto lekcie patria, 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. Pokiaľ všetko súhlasí, tok sa presúva do ďalšej časti. Pokiaľ je nájdený kurz s neabsolvovaným predchádzajúcim kurzom, program sa pozrie, či má tento kurz test. Pokiaľ nie, spýta sa užívateľa, či ovláda znalosti neabsolvovaného predchádzajúceho kurzu a chce ho preskočiť. Pokiaľ test existuje, pozrie sa program, či ho užívateľ absolvoval. Pokiaľ nie, oznámi užívateľovi, že mu chýba predchádzajúci kurz a mal by sa testom uistiť, že danú látku ovláda. Pokiaľ užívateľ test absolvoval, pozrie sa program na výsledok. Pokiaľ je dobrý, ponúkne užívateľovi preskočenie kurzu. V opačnom prípade užívateľovi odporučí absolvovanie tohto kurzu.

Nadväzujúce kurzy

Keď sa tok dostane až do časti "Nadväzujúce kurzy", znamená to, že je všetko v poriadku a má používateľa namotivovať k pokračovaniu 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 niektorou z týchto lekcií. Pokiaľ nie sú v súčasných kurzoch užívateľa žiadne ďalšie lekcie na pokračovanie, pokúsi sa nájsť nadväzujúci všeobecný kurz. Pri úspechu užívateľovi odporučí pokračovať práve týmto kurzom. Pokiaľ má uží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 určitú technológiu a obvykle si vyberie iba niekoľko málo týchto kurzov k jeho vybraným jazykom. Pokiaľ je takýto špecializovaný kurz nájdený, je užívateľovi odporúčaný. V opačnom prípade sa skript pozrie, aké kurzy používateľ na ITnetwork ešte neabsolvoval. Pokiaľ nejaké také kurzy existujú, ponúkne mu ich zoznam a nechá ho vybrať nový predmet. V opačnom prípade oznámi uží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 popí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 pri takto zložitom rozhodovacom algoritme nevyhnutná pomôcka dobrého programátora. Len ťažko je možné 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 ako vývojový diagram.

V nasledujúcom kvíze, Kvíz - Class, State machine, Activity diagram v UML, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Predchádzajúci článok
UML - Activity diagram
Všetky články v sekcii
UML
Preskočiť článok
(neodporúčame)
Kvíz - Class, State machine, Activity diagram v UML
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
3 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