Základy UMLO 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 UMLDiagram prípadov použitiaDiagramy 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žitiaPrí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érAkté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 triedUmbrello pri zobrazení veľavravného diagramu tried
Umbrello pri zobrazení veľavravného diagramu tried
TriedaTrieda 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 UMLZobrazenie 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útyOperá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ácieAsociácie triedTriedy 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šeobecnenieZobrazenie 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 UMLZobrazenie asociácie v UML
Zobrazenie asociácie v UML
Agregáciaagregá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áciaZobrazenie vzťahu agregácie v UML
Zobrazenie vzťahu agregácie v UML
KompozíciaKompozí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íciaZobrazenie vzťahu kompozície v UMLDiagram aktivítDiagramy 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ítUmbrello 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.
AktivitaAktivita 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ý diagramSekvenč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ý diagramUmbrello pri zobrazení sekvenčného diagramu
Umbrello pri zobrazení sekvenčného diagramu
Diagram spolupráceDiagram 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áceUmbrello 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úcipracujúcizastavený
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 spojeniePož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
StavStavy 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é prvkyV UML existujú 3 prvky, ktoré nemajú sémantický význam v modeli,
zjednodušujú však pochopenie diagramov. Tieto prvky sú:
Riadok textuPoznámkový štítokUkotvenie 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.