6. týždeň

Modelovanie správania

Popis správania sa modelovaného systému pomocou UML diagramov správania.

Ciele

  1. Naučiť sa opisovať stavy systému (alebo jeho komponentov) a prechody medzi nimi pomocou stavových diagramov.
  2. Naučiť sa opisovať procesy v systéme použitím diagramu aktivít.
  3. Naučiť sa opisovať interakcie entít systému použitím diagramov sekvencií.

Úvod

Diagramy správania znázorňujú to, čo sa v modelovanom systéme deje. Na tomto cvičení by ste sa mali naučiť vytvárať niektoré z týchto diagramov.

Úvod do diagramov správania

Postup

Krok 1: UML stavové diagramy

Stavový diagram slúži na opis stavov, ktoré môže nadobúdať systém, alebo jeho časť. Znázorňuje stavy a prechody medzi nimi na základe udalostí.

Stav modeluje situáciu pri vykonávaní správania konečnostavového automatu, počas ktorého platí istá nemenná podmienka. Podmienka nie je zvyčajne definovaná, ale odvodená, zvyčajne na základe mena priradeného ku stavu.

Diagram stavov článku v blogu (otvoriť v diagrams.net)
Obr. 1: Diagram stavov článku v blogu (otvoriť v diagrams.net)

Notácia stavu je zaoblený obdĺžnik, ktorý môže byť rozdelený na „priehradky“:

  1. priehradka názvu stavu

  2. priehradka pre interné správanie sa, ktorá má formát „typ-správania / akcia“ pričom typ-správania môže nadobúdať hodnoty:

    • entry — vykonané pri vstupe do stavu,
    • do — vykonávané stále, kým nie je stav opustený,
    • exit — vykonané pri výstupe zo stavu.

Prechod je označený orientovanou hranou začínajúca v zdrojovom stave a končiaca v cieľovom stave. Hrana prechodu je typicky označená názvom udalosti, ktorá spôsobí prechod. Opis prechodu však môže byť zložitejší a vtedy má tvar „spúšťač [strážca] / akcia“, pričom spúšťač (trigger) je názov udalosti, ktorá spustí prechod, strážca (guard) je podmienka, ktorá musí byť splnená pre spustenie prechodu a akcia špecifikuje správanie, ktoré sa vykoná pri prechode.

Úloha 1.1

Rozšírte diagram o stav Naplánovaný. Článok v tomto stave je naplánovaný na vydanie v konkrétny dátum a čas.

Poznámka

Pozrite si zdroje opisujúce diagramy stavov, napríklad

Poznámka

Pri stavovom diagrame vždy musí existovať objekt, ktorý sa môže nachádzať v jednom z uvedených stavov. V príkladoch vyššie je to článok v blogu. Dávajte pozor na to, aby pri vašich stavových diagramoch bolo vždy možné jednoznačne odpovedať na otázku: čo sa môže nachádzať v týchto stavoch.

Krok 2: UML diagramy aktivít

Diagramy aktivít sú využívané pre popis procedurálnej logiky, biznis procesov a pracovného toku. Prvkami diagramu sú akcie znázorňované ako obdĺžniky so zaoblenými rohmi a tok riadenia znázornený šípkami.

Tieto diagramy sú podobné vývojovým diagramom. Rozdiel je ten, že diagramy aktivít podporujú paralelné vykonávanie. Kvôli podpore paralelného vykonávania diagramy obsahujú symboly „rozdeľovač“ (fork) a „spájač“ (join), znázornené ako hrubé úsečky.

Príklad diagramu aktivít opisujúceho spracovávanie objednávky (zdroj: M. Fowler: UML Distilled (2003), strana 90)
Obr. 2: Príklad diagramu aktivít opisujúceho spracovávanie objednávky (zdroj: M. Fowler: UML Distilled (2003), strana 90)

Vyskúšajme modelovať proces prípravy článku v redakcii časopisu. Článok je kontrolovaný a pripomienkovaný redaktorom, kým sa nedostane do stavu, kedy je pripravený na publikovanie. Potom súčasne korektor opravuje prípadné chyby a ilustrátor kreslí ilustrácie. Keď to všetko je dokončené, redaktor môže článok publikovať.

Všimnite si, že diagram je rozdelený do tzv. „plaveckých dráh“ (swimlanes), ktoré určujú kto je zodpovedný za príslušnú aktivitu. To nie je povinné, ale v niektorých prípadoch veľmi užitočné.

Diagram aktivít opisujúci proces prípravy článku v redakcii (otvoriť v diagrams.net)
Obr. 3: Diagram aktivít opisujúci proces prípravy článku v redakcii (otvoriť v diagrams.net)

Úloha 2.1

Doplňte do diagramu možnosť odmietnutia článku redaktorom, a tiež aktivitu naplánovania článku šéfredaktorom na konkrétny dátum.

Poznámka

Pozrite si zdroje opisujúce diagramy aktivít, napríklad

Krok 3: UML sekvenčné diagramy

Sekvenčný diagram je jedným z diagramov UML, ktoré slúžia na vyjadrenie interakcií. Interakcie sú vhodné pre získanie pohľadu na komunikáciu medzi procesmi — popis protokolov komunikácie.

Hlavnou súčasťou sekvenčného diagramu sú objekty alebo procesy a k ním pripojené „línie života“ (lifelines), ktoré znázorňujú beh času (smerom dole). Medzi líniami života jednotlivých objektov sú správy, pomocou ktorých tieto objekty komunikujú (znázornené šípkami).

Príklad diagramu znázorňuje priebeh komunikácie medzi používateľom systému, jeho komponentmi a externými web servermi.

Diagram sekvencií pre pridanie článku do systému read-later
Obr. 4: Diagram sekvencií pre pridanie článku do systému read-later

Pomocou sekvenčného diagramu môžeme znázorniť aj priebeh moderovania komentárov v redakčnom systéme.

Sekvenčný diagram znázorňujúci moderovanie komentárov (otvoriť v diagrams.net)
Obr. 5: Sekvenčný diagram znázorňujúci moderovanie komentárov (otvoriť v diagrams.net)

V niektorých prípadoch môže byť vhodné znározniť aj alternatívy alebo cykly. Na to je možné využiť ohraničené fragmenty. Na ďalšom obrázku sú pomocou fragmentu alt znázornené rôzne alternatívy rozhodnutia moderátora.

Príklad fragmantu znázorňujúceho alternatívy
Obr. 6: Príklad fragmantu znázorňujúceho alternatívy

Úloha 3.1

Doplňte do diagramu automatickú kontrolu na spam externou službou. V prípade, že tato služba identifikuje spam, ručná moderácia už nebude potrebná.

Poznámka

Pozrite si zdroje opisujúce sekvenčné diagramy, napríklad

Krok 4: Zadania

Úloha 4.1

Pokiaľ vo vašom zadaní existuje niečo, čo sa môže nachádzať v jednom z konečnej množiny stavov, zakresliť to pomocou stavového diagramu.

Úloha 4.2

Navrhnite a nakreslíte diagram aktivít opisujúci niektorý zložitý proces vo vašom zadaní.

Úloha 4.3

Navrhnite a nakreslite sekvenčný diagram opisujúci komunikáciu účastníkov a komponentov vo vašom zadaní.

Poznámka

Vo vašom zadaní opíšte a navrhnite diagram aspoň 3 dôležitých procesov, interakcií alebo stavových prechodov. Použite aspoň 2 rôzne typy diagramov.

Zdroje

  1. Martin Fowler. UML Distilled (2003)