# Základy UML

## O UML

Táto kapitola poskytuje krátky úvod do základov UML. Pripomíname však, že to nie je plnohodnotný úvod. Ak chcete vedieť viac o unifikovanom modelovacom jazyku alebo všeobecne o analýze a návrhu softvéru, prečítajte si jednu z mnohých kníh venovaných tejto tematike. Ako východzí bod môžeme nájsť mnohé práce o tejto téme aj na internete.

Unifikovaný modelovací jazyk (Unified Modelling Language - UML) je notácia diagramov pre špecifikáciu, vizualizáciu a dokumentáciu modelov objektovo-orientovaných softvérových systémov. UML nie je modelom chovania, t.j. nič nehovorí o jednotlivých krokoch, ktoré sú potrebné pre vytvorenie systému. Pomáha však vizualizovať systém a komunikovať s ostatnými. O štandard UML sa stará skupina Object Management Group (OMG) a je to priemyselný štandard pre popis softvérových modelov.

UML bol vytvorený pre objektovo-orientovaný návrh softvéru a preto je pri ostatných paradigmách programovania použiteľný len obmedzene.

UML sa skladá z mnohých prvkov modelu, ktoré predstavujú istý aspekt softvérového systému. Tieto prvky sa kombinujú do diagramu, ktoré predstavujú istú časť alebo istý pohľad na systém. Umbrello podporuje tieto typy diagramov:

- Diagram tried, reprezentuje triedy a ich vzájomné vzťahy

- Diagram prípadov použitia , reprezentuje aktérov (ľudí alebo iných užívateľov systému), prípady použitia (scenáre, ako využívajú aktéri systém) a ich vzájomné vzťahy.

- Sekvenčný diagram, reprezentuje objekty a ich vzájomné vzťahy, pričom dôraz sa kladie na chronologické poradie výmeny správ medzi jednotlivými objektmi.

- Diagram spolupráce, reprezentuje objekty a ich vzájomné vzťahy, pričom dôraz sa kladie na jednotlivé objekty, ktoré sa zúčastňujú výmeny správ.

- Stavový diagram, Reprezentuje stavy, zmeny stavov a výstupy v objekte alebo časti systému.

- Diagram aktivít, reprezentuje aktivity, stavy a zmeny stavov objektov a výstupy v častiach systému.

## Prvky UML

### Diagram prípadov použitia

Diagramy prípadov použitia popisujú vzťahy a závislosti medzi skupinou prípadov použitia a aktérov, ktorí sa zúčastňujú daného procesu

Pripomíname, že diagram prípadov použitia sa v návrhu systému neodzrkadlí a tým nehovorí nič o interných záležitostiach systému. Diagramy prípadov použitia sa používajú len na zjednodušenie komunikácie medzi vývojármi a budúcimi užívateľmi, resp. zákazníkmi. Sú osožné hlavne pri stanovení požadovaných kritérií budúceho systému. Tým diagramy prípadov použitia určujú, čo treba urobiť, nie však ako to treba

dosiahnuť.

Ukážkový diagram prípadov použitia. Umbrello pri zobrazení ukážkového diagramu prípadov použitia

Umbrello pri zobrazení ukážkového diagramu prípadov použitia

#### Prípad použitia

Prípad použitia popisuje z hľadiska aktéra rad aktivít v systéme, ktoré dávajú konkrétny hmatateľný výsledok.

Prípady použitia slúžia ako popis typickej interakcie medzi užívateľom a systémom. Reprezentujú externé rozhranie a špecifikujú tým, čo má systém robiť (iba čo, no nie ako!).

Pri práci s prípadmi použitia sa odporúča riadiť týmito pravidlami:

- každý prípad použitia je spojený s aspoň jedným aktérom.

- každý prípad použitia je niekým vyvolaný (napr. aktérom).

- každý prípad použitia vedie k významnému výsledku (merateľnému a hospodársky významnému)

Prípady použitia môžu byť navzájom spojené. Tri najviac používané vzťahy medzi prípadmi použitia sú:

- <<include>>, čo značí, že prípad použitia sa uskutočňuje v inom prípade použitia.

- <<extends>>, čo značí, že v istej situácii (alebo v istom bode rozšírenia) sa daný prípad použitia rozšíri iným prípadom použitia.

- Zovšeobecnenie, čo značí, že prípad použitia zdedí vlastnosti rodičovskéhoprípadu použitia (nadriadeného) a môže tieto vlastnosti prepísať alebo rozšíriť, podobne, ako je to u dedenia v prípade tried.

#### Aktér

Aktér je externý objekt (mimo systému), ktorý prichádza do styku so systémom prostredníctvom účasti a spustenia prípadov použitia. Aktéry môžu byť skutočné osoby (napr. užívatelia systému), počítačové systémy alebo externé impulzy.

Aktéry tým predstavujú nie fyzické osoby alebo systémy, ale role týchto objektov. Ak je fyzická v kontakte so systémom mnohými spôsobmi, (napr. prostredníctvom rôznych Rolí) potom sa reprezentuje pomocou rôznych aktérov. Tým sa osoba, ktorá pracuje na úseku zákazníckej podpory a zúčastňuje sa aj prijímania objednávok bude raz aktérom Pracovník_zákazníckej_podpory a druhýkrát aktérom Pracovník_odbytu.

#### Popis prípadu použitia

Popis prípadu použitia reprezentuje prípad použitia v textovej forme. Normálne sa pre tento účel používajú poznámky alebo dokumenty spojené s prípadom použitia a popisujú procesy alebo aktivity, ktoré v danom prípade použitia nastávajú.

### Diagram tried

Diagramy tried zobrazujú rôzne triedy, z ktorých pozostáva systém a ako sú tieto

navzájom závislé. Diagramy tried sa označujú ako statické , keďže reprezentujú triedy s ich metódami a atribútmi, ako aj vzájomnými statickými vzťahmi. Pritom sa ukazuje, ktoré triedy vedia o iných triedach a ktoré triedy sú sčasti inými triedami. Nezobrazuje však výmenu správ (volania metód) medzi jednotlivými triedami.

Veľavravný diagram tried Umbrello pri zobrazení veľavravného diagramu tried

Umbrello pri zobrazení veľavravného diagramu tried

#### Trieda

Trieda definuje atribúty a metódy množiny objektov. Všetky objekty tejto triedy (inštancie) majú rovnaké chovanie a rovnaké atribúty (avšak s odlišnými hodnotami). Pojem typ sa občas používa ako synonyma triedy, treba

však dbať na to, že typ je všeobecný a tým tieto dva pojmy nemajú totožný význam.

V UML sa triedy zobrazujú ako obdĺžniky s názvami tried. Atribúty a operácie triedy môžeme zaznamenať do dvoch ďalších oddelených oblastí v danom obdĺžniku.

Trieda v UML Zobrazenie triedy v UML

Zobrazenie triedy v UML

##### Atribút

V UML sa atribúty zobrazujú prinajmenšom pomocou názvu, môžu však byť zobrazené aj typ, počiatočná hodnota a ostatné vlastnosti. Je tiež možné zobraziť aj viditeľnosť atribútov:

- + značí verejné - public atribúty

- # značí chránené - protected atribúty

- - značí súkromné - private atribúty

##### Operácia

Operácie (metódy) musia byť reprezentované aspoň názvom a návratovou hodnotou. Podobne, ako je to u atribútov, môžeme zobraziť aj viditeľnosť:

- + značí verejné - public operácie

- # značí chránené - protected operácie

- - značí súkromné - private operácie

#### Asociácie tried

Triedy môžu byť vo vzájomných vzťahoch (asociáciách) mnohých typov.

##### Zovšeobecnenie

Dedenie je základným konceptom objektovo-orientovaného programovania. Trieda získa pritom všetky atribúty a operácie triedy, od ktorej je odvodená. Trieda môže tieto operácie/atribúty prepísať a zmeniť, ako aj pridať nové.

V UML sa prostredníctvom asociácie zovšeobecnenie buduje hierarchia, ktorá predstavuje koncept základnej triedy a odvodenej triedy. Zovšeobecnenie medzi dvoma triedami sa v UML zobrazuje ako čiara medzi dvoma triedami, pričom na strane základnej triedy je šípka. Zovšeobecnenie Zobrazenie zovšeobecnenia v UML

Zobrazenie zovšeobecnenia v UML

##### Asociácia

Asociácia predstavuje vzťah medzi triedami dar a tým popisuje všeobecný význam a štruktúru rôznych typov vzťahov medzi objektmi.

Asociácie sú mechanizmom, ktorý umožňuje, aby objekty medzi sebou navzájom komunikovali. Popisujú vzťahy medzi rôznymi triedami (vzťahy medzi jednotlivými objektmi sa označujú ako vzťahy objektov alebo ako prepojenie).

Asociácie môžu mať role, ktoré popisujú účel vzťahu a sú buď jednosmerné alebo obojsmerné (t.j. či je vzťah medzi objektmi jedno- alebo obojstranný). Oba konce asociácie majú hodnotu násobnosti, ktorá určuje, koľko objektov na jednej strane môže byť v spojení s koľkými objektmi na strane druhej.

V UML sa asociácia zobrazuje prostredníctvom čiary medzi triedami, ktoré sa zúčastňujú asociácie. Môžeme pritom zobraziť aj rolu a násobnosť. Násobnosť je rozsah [min..max] nezáporných čísel, pričom hviezda (*) na strane maxima predstavuje nekonečno. Asociácie UML Zobrazenie asociácie v UML

Zobrazenie asociácie v UML

##### Agregácia

agregácie sú špeciálnym prípadom asociácií. Vo vzťahu nemajú triedy rovnaký status, táto asociácia predstavuje vzťah súčasť celku. Agregácia popisuje, ako trieda, ktorá je v úlohe celku, sa skladá z tried, ktoré majú úlohu častí. Pri agregáciách majú triedy v úlohe celku vždy násobnosť 1.

V UML sa agregácie zobrazujú ako asociácie, pričom na strane celku je kosoštvorec. Agregácia Zobrazenie vzťahu agregácie v UML

Zobrazenie vzťahu agregácie v UML

##### Kompozícia

Kompozície sú asociácie, ktoré predstavujú veľmi silnú agregáciu. To znamená, že kompozície reprezentujú vzťah súčasť celku, avšak vzťah je taký silný, že súčasti nemôžu existovať samostatne. Preto existujú iba v celku a ak celok zanikne, zaniknú aj ony.

V UML sa kompozície zobrazujú ako vyplnený kosoštvorec na strane celku.

Kompozícia Zobrazenie vzťahu kompozície v UML

### Diagram aktivít

Diagramy aktivít popisujú postupnosť aktivít v systéme. Sú špeciálnou formou stavových diagramov, pričom takmer výlučne obsahujú len aktivity.

Názorný diagram aktivít Umbrello pri zobrazení diagramu aktivít

Umbrello pri zobrazení diagramu aktivít

Diagramy aktivít sú veľmi podobné procedurálnym diagramom dátových tokov. Sú však odlišné tým, že aktivity sú jasne viazané na objekty.

Diagramy aktivít patria vždy jednoznačne k triedam, operáciám alebo prípadom použitia.

V diagrame aktivít môžeme zaznamenať aj sekvenčné či dokonca súbežné aktivity. Paralelné spracovanie sa zaznamenáva vo forme symbolov Rozdeliť/spojiť (fork/join). Pre paralelne bežiace aktivity je pritom dôležité, v akom poradí sa budú vykonávať. Môžu byť vykonávané v rovnakom časovom okamihu, ale aj za sebou.

#### Aktivita

Aktivita je jediný krok v procese. Tým je aktivita stavom systému s internou aktivitou a aspoň jedným prechodom. Môžu existovať viaceré prechody, ak sa aktivita vykonáva v rôznych podmienkach.

Aktivity môžu byť usporiadané do hierarchie, v ktorej sa jedna aktivita skladá z mnohých iných. Pritom sa musia vstupujúce a vystupujúce prechody zosúladiť s príslušnými prechodmi dekonštrukcie.

### Sekvenčný diagram

Sekvenčné diagramy zobrazujú výmenu správ (napr. volanie metód) medzi Objektmi v danom časovom priestore. Kladie sa pritom dôraz na poradie a čas, v ktorom sa správy posielajú objektom.

V sekvenčnom diagrame sa objekt označuje zvislou prerušovanou čiarou. Názov objektu sa nachádza na hornom konci. Časová os je tiež zvislá, pričom hodnoty sa zväčšujú smerom nadol. Správy medzi objektmi sa označujú ako šípky s názvami operácií a ich parametrov.

Sekvenčný diagram Umbrello pri zobrazení sekvenčného diagramu

Umbrello pri zobrazení sekvenčného diagramu

### Diagram spolupráce

Diagram spolupráce zobrazuje interakciu medzi objektmi, ktoré sa zúčastňujú špecifickej situácie. Toto predstavuje v princípe informácie zo sekvenčného diagramu, pričom pri tomto diagrame sa kladie dôraz na časovú následnosť. V prípade diagramu spolupráce sa však do popredia dostáva vzťah medzi objektmi a jeho topológia.

Správy medzi objektmi sa v diagrame spolupráce zobrazujú ako šípky označené názvom, parametrom a poradovým číslom správy. Diagramy spolupráce sa výborne hodia pre zobrazenie špeciálnych programových postupov alebo situácií. Môžeme nimi demonštrovať a vyjasniť časť logiky programu veľmi jednoducho a rýchlo.

Diagramy spolupráce Umbrello pri zobrazení diagramu spolupráce

Umbrello pri zobrazení diagramu spolupráce

### Stavový diagram

Stavové diagramy zobrazujú objekty v rôznych stavoch ich života a zobrazujú vplyvy, ktorými objekty menia stav.

Stavové diagramy zobrazujú objekty ako stavové stroje alebo konečné automaty, ktoré môžu byť v konečnom počte stavov a dokážu meniť stav prostredníctvom konečného počtu vplyvov. Takto sa môže objekt sieťový_server počas svojej existencie nachádzať v týchto stavoch:

- pripravený

- čakajúci

- pracujúci

- zastavený

a impulzy, ktoré vyvolávajú zmenu stavu objektu môžu byť:

- Objekt bol vytvorený

- Objekt dostal správu, že má počkať

- Klient požaduje pripojenie cez sieť

- Klient ukončil spojenie

- Požiadavka sa spracuje a ukončí

- Objekt zachytí správu, že má ukončiť činnosť

- atď.

Stavový diagram Umbrello pri zobrazení stavového diagramu

Umbrello pri zobrazení stavového diagramu

#### Stav

Stavy sú stavebné kamene stavového diagramu. Stav patrí k práve jednej triede predstavuje istú konšteláciu hodnôt atribútov triedy. Tým popisuje stav v UML interný stav objektu istej triedy.

Je pritom dôležité, že nie každá zmena atribútov vedie k novému stavu objektu. Ako nový stav má byť označená len zmena atribútov s citeľným vplyvom.

Dva špeciálne stavy sú Počiatočný a Konečný stav. To znamená, že sa nemôže stať to, že sa objekt vráti do počiatočného stavu a žiaden impulz nemôže objekt preniesť do iného stavu, ak dosiahol konečný stav.

### Pomocné prvky

V UML existujú 3 prvky, ktoré nemajú sémantický význam v modeli, zjednodušujú však pochopenie diagramov. Tieto prvky sú:

- Riadok textu

- Poznámkový štítok

- Ukotvenie

Pomocou riadku textu môžeme do diagramu vložiť krátku informáciu. Text je samostatný a nemá žiaden význam z pohľadu modelu.

Pomocou poznámkového štítku môžeme vložiť detailné informácie o objekte alebo o situácii. Veľkou prednosťou textovej poznámky je, že ju môžeme pripojiť k prvku UML a tým textová poznámka patrí k tomuto prvku alebo špeciálnej situácii.

Ani ukotvenia nemajú žiaden obsahový význam, sú však užitočné k spojení dvoch prvkov. Takto môžeme napríklad spojiť textové poznámky a objekt diagramu.