![]() |
Dependencies of the UseCases package |
![]() |
The Concept used for modeling use cases |
Případ užití (use case) je množina akcí, které jsou vykonávané systémem (system nebo taktéž subject), které vedou k nějakému výsledku. Tento výsledek je typicky důležitý pro účastníka případu užití (actor či stakeholder). Účastník je definován jako role mimo systém, ve kterém se dané akce vykonávají.
Případy užití se používají pro sběr požadavků na systém, který má případ užití vykonávat.
Přísně řečeno, pojmem případ užití máme na mysli daný typ. Instancí případu užití pak myslíme výskyt chování typu emergent behavior, který odpovídá danému případu užití.
Je nutné si uvědomit, že diagram případu užití popisuje pouze vztahy mezi množinou případů užití a účastníky těchto případů užití.
Systém není žádný element modelu. Systém je relevantní oblast, ve které má případ užití smysl. Za systém považujeme nějaký klasifikátor, ve kterém jsou akce specifikovány a případ užití vykonáván. Systémem tak může být např. třída nebo komponenta, která zastupuje danou aplikaci. V tomto ohledu jsou pak kontext případu užití (use case context), oblast zájmu (subject) a kontext (context) synonymy k systému (system).
Příklad diagramu:
![]() |
Příklad: Knihovna |
Třída Actor
Účastník určuje roli, kterou uživatel zastává v rámci interakce se systémem. Účastník stojí mimo systém (takže instance účastníka není součástí instance systému).
Účastník musí mít jméno.
Účastník smí být asociován pouze s případem užití, třídou nebo komponentou. Každá tato asociace je binární.
Pokud má asociace účastníka s případem užití násobnost větší než jedna u případu užití, znamená to, že daný účastník může spouštět více případů užití tohoto typu paralelně. Výchozí násobnost je 0..1.
Pokud má asociace účastníka s případem užití násobnost větší než jedna na účastníka, znamená to, že daného případu užití se musí nebo může účastnit dané množství účastníků uvedeného typu (dané role). Výchozí hodnota je 1.
Běžně neuvádíme směrování asociace. Přesto je povolena. UML však žádnou sémantiku nedefinuje. Většinou je směrování používané pro určení aktivního a pasivního účastníka asociace. Aktivní je ten, kdo inicioval komunikaci.
Notace
Výchozí notací účastníka je panáček, který má název pod či nad sebou. Protože panáček většinou odkazuje na živou lidskou bytost, je možné použít libovolný jiný obrázek (bez možnosti stereotypů). Počítač dole na příkladu není symbol definovaný v UML. Poslední možností je použít zápis známý z klasifikátorů (obdélník s názvem účastníka a stereotypem «actor»).
![]() |
Příklad: Notace účastníka případu užití |
Třída UseCase
Případ užití je množina akcí prováděná systémem, které vedou k výsledku, jež má význam pro účastníka (resp. účastníky).
Jelikož je třída UseCase specializací třídy BasicBehavior::BehavioredClassifier, může být její chování popsáno nějakým chováním jako je např. interakce, aktivity, stavové automaty a to včetně použití podmínek před a po výkonání. Pro popis stejně tak může být použit přirozený jazyk. Nepřímý popis je možné vytvořit pomocí diagramu spolupráce.
Asociace
- subjekt – odkazuje na oblast zájmu. Tato oblast zájmu (systém) může, ale nemusí případ užití vlastnit.
- include – odkaz na vkládající vztahy vlastněné tímto případem užití
- extend – odkaz na rozšiřující vztahy vlastněné tímto případem užití
- extensionPoint – odkazy na rozšiřující body vlastněné tímto případem užití
Podmínky
- Případ užití musí mít název.
- Případ užití smí být účasten pouze binárních asociací.
- Případ užití nesmí být asociován s případem užití téhož systému.
- Případ užití nesmí vkládat jiný případ užití, který jej přímo či nepřímo vkládá (vztah include nesmí být cyklický).
Základní notace případu užití je ovál s název případu užití uvnitř oválu nebo pod ním (na rozdíl od účastníka nelze dát název nad ovál). Druhá možnost zápisu je jako klasifikátor, tedy v obdélníku, kde je zobrazen ovál v pravém horním rohu.
![]() |
Příklad: Notace případu užití |
Pokud je v diagramu uveden systém, případ užití se zakresluje do jeho hranic. Neznamená to však automaticky, že systém tento případ užití vlastní.
Následující příklad ukazuje případy užití v balíku.
![]() |
Příklad: Notace případu užití (balík) |
Příklad notace rozšiřujících bodů:
![]() |
Příklad: Notace případu užití (body rozšíření) |
Třída Classifier
Rozšiřuje klasifikátor o možnost vlastnit případy užití.
Notace
![]() |
Příklad: Classifier |
Třída Include
Vztah include se používá, pokud chceme říct, že vkládající případ užití obsahuje chování, které je definované v jiném – vkládaném – případu užití. Jedná se také o potomka NamedElement, takže vztah může mít jméno v kontextu vlastněného případu užití. Vkládající případ užití závisí na hodnotě výstupu vkládaného případu užití.
Záměrem je, aby vkládaný případ užití poskytoval chování společné pro více vkládajících případů užití. Lze to přirovnat volání nějaké jiné funkce.
Vkladádající případ užití zná ty vkládané. Naopak to nemusí platit a většinou neplatí.
![]() |
Příklad: Include |
Třída Extend
Vztah extent říká, že jeden případ užití (rozšiřující), může rozšířit chování jiného případu užití (rozšiřovaný). K rozšíření dochází v tzv. bodech rozšíření (třída ExtensionPoint), které specifikuje rozšiřovaný případ užití.
Rozšiřující případ užití ve skutečnost sám o sobě nemá význam (a tedy nemá smysl k němu asociovat účastníka).
Jeden rozšiřující případ užití může rozšiřovat více rozšiřovaných případů užití. Stejně tak jeden rozšiřující případ užití může rozšiřovat jiný rozšiřující případ. Ten je pak rozšiřující i rozšiřovaný zároveň.
Případ užití může mít libovolný počet rozšiřujících bodů.
Pokud má k rozšíření dojít jen za určité podmínky, je možné tuto definovat.
Rozšiřovaný případ užití nezná takové případy užití, které jej rozšiřují.
![]() |
Příklad: Extend |
Třída ExtensionPoint
Bod rozšíření určuje bod v případu užití, kde jeho chování může být rozšířeno chováním jiného případu užití.
Bod rozšíření musí mít název.
Notace
Název_bodu_rozšíření [vysvětlení]
Vysvětlení může být neformální text nebo precizní definice místa, kde se bod rozšíření vyskytuje.
Žádné komentáře:
Okomentovat