Pouze tento týden sleva až 80 % na e-learning týkající se Javy. A zároveň využij akce až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme koordinátorku kurzů a programátora, 100% home office, 100% flexibilní. Prozkoumej aktuální pozice
Java week

Lekce 2 - UML - Use Case Diagram

V minulé lekci, Úvod do UML, jsme si uvedli jazyk UML a pochopili, že usnadňuje jak analýzu, tak i návrh informačních systémů. V dnešním UML tutoriálu začneme s Use Case diagramy.

Use Case Diagram (česky diagram případů užití) zobrazuje chování systému tak, jak ho vidí uživatel. Účelem diagramu je popsat funkcionalitu systému, tedy co od něj klient nebo my očekáváme. Diagram vypovídá o tom, co má systém umět, ale neříká, jak to bude dělat. Proto je to většinou první diagram, který při návrhu informačního systému vytváříme. Je důležité se nejprve shodnout na tom, co má náš systém (nebo aplikace, hra, cokoli) umět. Až potom má smysl se ptát, jak to vlastně uděláme.

Use Case diagram se skládá z případů užití (use case), dále aktérů (actors) a vztahů mezi nimi.

Use Case (Případ užití)

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Případ užití (nebo zkráceně UC) je sada několika akcí, které vedou k dosažení určitého cíle. Use Case může být přidání komentáře k článku, registrování nového uživatele nebo např. vytisknutí dokumentu. Definuje tedy jednu funkcionalitu, kterou by měl navrhovaný systém umět. Ta v sobě obsahuje další akce, např. přidání komentáře bude obsahovat ověření uživatele, validaci zadaných dat, zápis do databáze apod. To v diagramu zachyceno již nebude. UML často hovoří o tzv. blackboxu (černé skříňce), kde skryjeme vnitřní logiku a pracujeme pouze s komponentami. Tento princip přesně využívá UC diagram.

Use Case je nejčastěji zakreslován jako elipsa s jeho názvem uvnitř.

UML Use Case

Případy užití vychází ze zadání systému od našeho zákazníka (pokud děláme systém pro sebe, tak z našich poznámek, co by měl umět). Hovoříme o tzv. mapování uživatelských požadavků na jednotlivé Use Case.

Actor (Aktér)

Aktér je role, která komunikuje s jednotlivými případy užití. V této roli může být obsazen uživatel nebo externí systém. Aktérem tedy může být např. Uživatel, Administrátor, SMS server nebo dokonce Čas. Aktér inicializuje nějaký případ užití (např. Uživatel vloží příspěvek do fóra). Zde bychom hovořili o tom, že je aktér aktivní. Aktér sám však může být případem užití iniciován (např. externí SMS server je iniciován případem užití Poslat SMS). V tomto případě hovoříme o pasivním aktérovi a zakresluje ho v diagramu napravo.

Aktéry znázorňujeme jako postavu z čar s názvem napsaným pod ní.

UML Aktér

Pojďme si nyní zkusit vytvořit ukázkový UC diagram, jelikož všichni znáte ITnetwork, budeme navrhovat jemu podobný systém, jen značně zjednodušený. Tento ukázkový systém nás bude provázet celým UML kurzem, vlastně si celý ITnetwork navrhneme pomocí několika UML diagramů. Popis jeho funkčnosti by vypadal pomocí Use Case diagramu takto:

Ukázkový Use Case UML diagram případů užití

Vidíme, že diagram není složité nakreslit. Navrhnout však případy užití tak, aby jich byl rozumný počet a rovnoměrně pokrývaly funkcionalitu systému již chce trochu praxe. Určitě je však lepší nějaký než žádný, takže se ho nebojte používat :)

  • Neregistrovaný uživatel může psát komentáře nebo se zaregistrovat. Komunikace probíhá zleva doprava (pokud není šipkou naznačen jiný směr). Aktéři jsou tedy propojeni s těmi případy užití, které se jich týkají. Vazbě znázorněné jednoduchou čarou říkáme asociace. Může mít specifikovanou násobnost i směr, ale tím se zde nebudeme ještě zabývat.
  • Člen může to samé, jako neregistrovaný uživatel, protože z něj dědí. Tento vztah je znázorněn prázdnou uzavřenou šipkou směrem k předkovi. Tuto vazbu nazýváme generalizace. Člen může navíc ještě spravovat svůj profil a hodnotit články.
  • Redaktor též umí to samé jako člen, ale navíc může články i psát.
  • Administrátor může oproti redaktorům opět spouštět několik funkčností navíc. Zajímavá je vazba <<include>>. Ta se používá v případě, že je nějaká funkcionalita důležitá natolik, že ji chceme mít v diagramu místo toho, abychom ji jen prohlásili součástí nějakého Use Case. Případ užití napojený pomocí vazby <<include>> se spustí vždy, když je spuštěn případ, na který je napojen. Zde je tedy autor článku upomenut při schválení a zamítnutí článku. Samotné upomenutí v sobě bude mít další logiku, např. jestli emailem, SMS apod. My ho máme zabalený v jednom případu užití. Kromě <<include>> existuje ještě vazba <<extend>>, ale ta je velmi zavádějící a příliš se nepoužívá, nebudeme se jí tedy zabývat.
  • Posledním aktérem je Timer (čas), ten se v určitou dobu spustí a provede odeslání aktualizací emailem. Aktéra čas zakreslujeme na pravou stranu, ačkoli je v podstatě aktivní.

Příště, v lekci UML - Use Case Specifikace, si řekneme něco o UC specifikaci a ukážeme si ještě jeden Use Case diagram, tentokrát komplexnějšího systému.


 

Předchozí článek
Úvod do UML
Všechny články v sekci
UML
Přeskočit článek
(nedoporučujeme)
UML - Use Case Specifikace
Článek pro vás napsal David Čápka
Avatar
Uživatelské hodnocení:
65 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 13 let. Má rád Nirvanu, sushi a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity

 

 

Komentáře
Zobrazit starší komentáře (28)

Avatar
Lukáš Hruška:19.7.2018 11:50

Díky za tutoriál, pro základní přehled skvělý. Mám ale připomínku k větě "Zajímavá je vazba <<include>>. Ta se používá v případě, že je nějaká funkcionalita důležitá natolik, že ji chceme mít v diagramu místo toho, abychom ji jen prohlásili součástí nějakého Use Case. "

Z tohoto důvodu tam <<include>> opravdu není ;-) Je tam z toho důvodu, že pokud se nějaká část (kroky scénáře) use case opakují u více use case, tak se tato část napíše samostatně, aby se u každého use case nevypisovala znovu. V případě změny se tak změní všude. Jedná se vlastně o odstranění zbytečných duplicit.
Navíc všechny popsané use case jsou stejně důležité, buď je daný systém má umět nebo nemá.

Editováno 19.7.2018 11:52
 
Odpovědět
19.7.2018 11:50
Avatar
Lukáš Hruška:19.7.2018 11:54

To, že zadavatel klade větší důraz na nějakou funkčnost patří do textového popisu, který diagram doplňuje.

 
Odpovědět
19.7.2018 11:54
Avatar
Jakub Hrubčo:14.8.2018 11:36

Ahoj, prosim ako sa nazyva vazba medzi Timer a UC12? Dakujem

 
Odpovědět
14.8.2018 11:36
Avatar
Odpovídá na Jakub Hrubčo
Josef Horváth:15.8.2018 6:55

Ahoj, výše v textu máš uvedeno:

Vazbě znázorněné jednoduchou čarou říkáme asociace. Může mít specifikovanou násobnost i směr.

Šipkou naznačíš, že odkaz na UC12 bude uchován v instanci Timeru. Více o vztazích mezi entitami se dozvíš v lekci 4 – UML – Doménový model.

 
Odpovědět
15.8.2018 6:55
Avatar
Zdenek
Člen
Avatar
Zdenek:2.12.2018 0:43

Ahoj, mohl by jsi jeste podrobneji popsat vazbu <<extend>>. Vidavam ji v diagramech casteji nez <<include>>.
Diky

 
Odpovědět
2.12.2018 0:43
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Aleš Vlasák:6.5.2021 17:59

Ahoj lidi potřeboval bych poradit možná s trochu hloupou věcí. Když si chci instalovat python tak mi to hlásí že na to můj počítač nestačí. Nebo to špatně chápu a něco dělám špatně? Mám windows 7 a počítač toshiba satellite c 660 1p 8. Nechce se mi kupovat kvůli tomu nový pc ale myslím že problém asi bude jinde.

Poradíte mi někdo prosím nebo pošlete mi prosím odkaz kde si mohu stahnout python.

A když už to píšu až dokončím kurz html a css jaký bych měl dělat další? Který je pro začátečníka nejjednodušší? Když bych chtěl programovat a dělat něco v budoucnu třeba bokem při práci někomu na zakázku?Nebo je lepší dělat aplikace nebo se podílet na vývoji her? Java script c+ python?

Děkuji moc za radu a vaší trpělivost se mnou Aleš

 
Odpovědět
6.5.2021 17:59
Avatar
Odpovídá na Aleš Vlasák
Václav Švarc:30.6.2021 12:33

Aleši, využij příště pro takový dotaz, prosím, forum, ať se tady vyskytují pouze komentáře k věci. Jinak z chybové hlášky je patrné, že potřebuješ minimálně Windows 8.1, takže máš možnost buď upgradovat Windows nebo zkusit verzi pythonu, která je kompatibilní s Windows 7. S druhou částí Ti bohužel poradit neumím - opět zkus, prosím, využít forum a patřičnou sekci v něm.

 
Odpovědět
30.6.2021 12:33
Avatar
Odpovídá na Zdenek
Václav Švarc:30.6.2021 12:41

Připojuji se ke Zdeňkovi a prosím o dovysvětlení vazby <<extend>>. "je zavádějící a příliš se nepoužívá" je přece jen názorem autora, který by v článku mohl důsledně informovat o všem a vyhodnocení užitečnosti nechat na čtenáři samotném.

 
Odpovědět
30.6.2021 12:41
Avatar
Karel Karafiát:4.11.2021 10:16

Ahoj. Na tomto serveru je mnoho zajímavého a nevím čemu se věnovat dřív, takže díky autorům. Nyní k tomuto tématu (a omlouvám se zkušenějším za možná blbej dotaz). Nevím, do jaké míry mám jít v grafu do detailu. Není krok UC1, UC2 a UC4 (na zaslaném obrázku) moc zbytečný? Díky Karel

 
Odpovědět
4.11.2021 10:16
Avatar
Odpovídá na Václav Švarc
Lubomír Kuchařík:25.11.2021 8:12

Ahoj, jestli to správně chápu, tak vazba <<extended>> je rozšiřující. Za mne by to bylo například kdyby se UC7 rozšířilo o spuštění kontroly pravopisu. Je to tedy něco, bez čeho UC7 bude fungovat, ale chceme takouvou funkcionalitu mít. Ale možná to chápu chybně.

Odpovědět
25.11.2021 8:12
Všechno je proces.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 38. Zobrazit vše