Jazyk UML

Unified Modeling Language, Practical UML: A Hands-On Introduction for Developers

Jazyk UML je jednotný grafický jazyk pro modelování. Umožňuje pomocí různých typů diagramů zachytit systém z různých pohledů a na různé úrovni abstrakce.

Struktura

Jako stavební bloky se označují prvky, relace a diagramy. Prvky jsou samostatné elementy a dělí se na:

strukturální prvky – třída, rozhraní, případ užití, aktivní třída, uzel

chování – interakce, stav

seskupení – balíčky používané k seskupování sémanticky souvisejících prvků

poznámky – anotace, které lze k modelu připojit

Relace lze dělit na:

asociace – abstrakce množiny spojení mezi objekty

agregace a kompozice – vyjadřuje vztah části k celku

závislost

zobecnění

realizace

Mechanismy používané v různých typech diagramů:

specifikace – textový popis jednotlivých elementů

ozdoby – volitelné doplňky elementů

podskupiny – popisují různé způsoby vidění „světa“ (klasifikátor, instance, rozhraní a implementace)

Diagramy UML

Diagram chování

Zachycuje chování procesu nebo systému. Např. diagram aktivit, stavový diagram, diagram případů užití…

Diagram struktury

Zachycuje elementy nezávislé na čase. Např. diagram tříd, diagram vnitřní struktury, diagram komponent…

Diagram případů užití (Use Case Diagram)

Use case diagram

Umožňuje popsat chování systému z hlediska uživatele. Specifikuje typy uživatelů a jaké činnosti uživatelé vykonávají. Následuje popis jednotlivých prvků diagramu.

Aktér

Reprezentuje prvek okolí systému, který komunikuje se systémem. Může buď předávat informace systému nebo je od něj přijímat. Aktér reprezentuje roli, kterou hraje člověk, hardwarové zařízení nebo externí systém ve vztahu k modelovanému systému. Role není funkcní místo v organizaci, ale je to role při používání systému. Jeden člověk může plnit více rolí a jednu roli může vykonávat více lidí. Primární aktér je osoba nebo systém, který má určitý úkol v systému. Pomocný aktér je další osoba nebo systém, který poskytuje službu potřebnou pro splnění úkolu primárního aktéra (např. tiskárna, webová služba, člověk).

Případ užití

Specifikuje část funkcionality systému, kterou využívá aktér a která plní určitý cíl. Měl by mít název, který vyjadřuje jeho cíl („Otevřít účet“). Vztah mezi aktérem a případem užití se označuje jako komunikační asociace a znázorňuje se čarou mezi oběma entitami. Pokud čára končí čipkou, pak šipka jde směrem od strany, která začíná interakci (aktér → případ užití). Mezi samotnými případy užití existují tři vztahy – include, extend a generalizace/specifikace.

Vztah include

Při vytváření modelu případů užití se mohou některé případy užití v různých částech navrhovaného systému opakovat. Příkladem může být přihlášení do systému nebo vyběr prvku ze seznamu. V těchto případech je lepší opakující se činnost vyjmout a do samostatného případu užití a odkázat se na ni v jiných případech užití pomocí vztahu include. Základní(„nadřazený“) případ užítí nemůže existovat samostatně bez případu include. Př.: Máme Studenta (aktér) a ten se chce registrovat na bakalářku. V Use Case je nakreslená možnost „Registrovat se na téma“ a ta má include vztah k „zobrazit vypsaná témata“. Jakmile student klikne na „registrovat se na témata“ zobrazí se mu automaticky vypsaná témata. Když se ale témata nevypíšou, tak se nikam nezaregistruje → závislost.

Vztah extend

Tato vazba představuje rozšíření původního případu užití. K rozšíření dochází v tzv. bodě rozšíření a to jen když je splněna podmínka rozšíření. Př.: Vedoucí bakalářek vypisuje témata. Systém mu poskytuje možnost „Vytvořit jako kopii existujícího zadání“ (extend). Může tedy založit téma práce a navíc může využít extendu. Ale i bez něj to bude fungovat.

Generalizace/specializace

Umožňuje zachytit obecné a speciální chování. Složitý koncept, zhoršuje srozumitelnost modelu. Doporučuje se nepoužívat.

Diagram tříd (Class Diagram)

Class diagram

Představuje statický pohled na modelovaný systém. Zachycuje strukturu tříd v systému, nelze v něm vyjádřit interakce mezi třídami, ke kterým dochází v čase.

Třída

Jedná se o základní prvek diagramu tříd. Třída je abstrakcí objektů se stejnými vlastnostmi, stejným chováním a stejnýmí vztahy k ostatním objektům. Na úrovni analýzy třída představuje typ objektu a můžeme si ji představit jako množinu objektů stejného typu. Na úrovni návrhu softwarové aplikace a implementace si třídu můžeme představit jako šablonu, podle které se vytváří konkrétní objekty (instance). Třída, která vytváří instance, se nazývá konkrétní. Ne každá třída však vytváří své instance, potom hovoříme o abstraktní třídě, její název se v UML značí kurzivou. Popis třídy obsahuje její název, atributy a metody.

Třídy lze seskupovat do tzv. balíčků (packages).

Mezi třídami dochází také ke „spolupráci“. Takové vztahy modelujeme jako asociace

běžná asociace – zisk reference

násobnost (kardinalita) – určuje kolik instancí jedné třídy má vztah k jedné instanci druhé

role – představuje jeden konec asociace (zaměstnanec - zaměstnavatel), unární (sama k sobě), binární

asociační třída – vazba nese nějakou informaci, vazba „pracuje pro“ u tříd zaměstnanec – zaměstnavatel může mít detaily jako datum nástupu, plat…

agregace s kvalifikátorem (eh?)

agregace – vnější objekt obsahuje vnitřní objekty (Auto – 4 kola, 1 karoserie)

kompozice – jeden objekt bez druhého nemohou být (kniha se skládá z kapitol, kapitola nemůze existovat bez knihy; označuje se plným kosočtvercem s plnou čarou)

Shrnutí

struktura UML: prvky, relace, diagramy

diagram chování vs diagram struktury

d. případu užití (include, extend), d. tříd (asociace, násobnost, agegace vs kompozice, role, realizace)

balíčky

moderní přístup: převod UML na kód a zpátky