Jazyk UML

Definice: UML je jednotný grafický (vizuální) jazyk pro jednotnou specifikaci, vizualizaci, konstrukci a dokumentaci při objektově orientované analýze a návrhu (OOA&D) i pro modelování organizace (business modelling).

Pozor, častá chyba, nepatří sem ER diagram!

UML operuje s pojmem pohled (view). Pohled systému je projekce systému na jeden z jeho relevantních aspektů.
Taková projekce se zaměřuje na příslušný aspekt a ignoruje ostatní.
Jak jistě vyplývá z podstaty věci, je vhodné vytvářet několik různých pohledů na tentýž systém.
Pohledy nad systémem jsou pak modelovány prostřednictvím vhodných nástrojů (modelů) poskytovaných UML.
Můžeme rozlišit tyto základní pohledy:

Strukturální pohled popisuje vrstvu mezi objekty a třídami, jejich asociace a možné komunikační kanály.

Pohled chování popisuje, jak systémové komponenty interagují, charakterizuje reakce na vnější systémové operace.

Datový pohled popisuje stavy systémových komponent (objekty) a jejich vazby.

Pohled rozhraní je zaměřeno na zapouzdření systémových částí a jejich potenciální použití okolím systému.

Nabízí několik základních diagramů:

Časti UML

Prvky

Strukturní: třída, případ užití, komponenta

Chování: interakce, stav

Seskupování: modul, balíček, podsystém (angl. package)

Doplňkové: komentáře a poznámky

Vztahy

Asociace (spojení mezi prvky)

Závislost (změna v jednom prvku ovlivní jiný závislý prvek)

Agregace, Kompozice (vyjádření dekompozice prvku na podčásti)

Generalizace (vztah mezi obecnějším a specifičtějším prv-kem)

Realizace (vztah mezi předpisem a jeho uskutečněním deklarace/instanciace)

Mechanizmy

Specifikace – textový popis jednotlivých elementů

Ozdoby – volitelné doplňky elementů

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

Asociacia

slouží k zachycení vztahů a informací mezi třídami z několika různých perspektiv

vyjadruhe identifikaci vztahu mezi třídami - Asociace má svůj název

vyjadruje násobnost vztahu - kolik instancí třídy A může být svázáno s instancí třídy B

Určení jakou roli hraje objekt ve vztahu (např. zaměstnanec, zaměstnavatel apod.)

Asociace se graficky znázorňuje čárou mezi asociovanými třídami.

Násobnost a role se uvádějí u čáry blíže k objektu, ke kterému se váží.

Stupeň asociace – kolik tříd se podílí (participuje) v jedné asociaci

2 (binární)

3 (ternální)

Povýšení asociace na třídu. V objektově orientovaném návrhu lze asociaci povýšit na třídu.

V případech, kdy chceme asociaci přiřadit parametry, které nelze přiřadit objektu v asociaci.

Jiným případem povýšení je eliminace vícenásobných asociací.

Agregace

vyjadřuje slabší vztah mezi objektem reprezentujícím celek a objekty reprezentující části celku.

příklad: Vztah firma-zaměstnanci

objektu reprezentujícímu celek se říká agregační objekt (seskupený)

jeho částem pak konstituční objekty (tvořící).

seskupený objekt může existovat bez svých konstitučních objektů

agregace bývají homeometrické (tj. konstituenti patří do téže třídy).

Kompozice

vyjadřuje silnější vztah mezi objektem reprezentujícím celek a objekty reprezentující části celku

Příklad: člověk - orgány

Objektu reprezentujícímu celek se říká kompozitní (složený) objekt

jeho částem pak komponentní (složkové) objekty.

Složený objekt nemůže existovat bez svých komponent.

Složený objekt většinou řídí životní dráhu svých komponent

Komponentní objekt může být součástí pouze jedné kompozice.

Implicitní násobnost každé složky je 1.

Kompozice bývají heterometrické (tj. komponenty patří do různých tříd).

Generalizacia

zachycuje vazbu mezi třídami, kterou již známe – dědičnost.

Zobrazuje se šipkou s prázdným trojúhelníkem.

Existuje vícenásobná dědičnost

Zavislost

vyjadřuje jiné různé vztahy mezi objekty či třídami.

Typ závislosti se v diagramech označuje pomocí stereotypů

«use» - objekt třídy A (klient) sice neobsahuje objekt třídy B (dodavatel), tedy není jeho složkou, ale přesto jej potřebuje.

«instantiate» – klient je instancí dodavatele

«trace» – obecná vazba mezi elementy, které jsou na různé úrovni abstrakce (analýza/návrh)

«refine» – upřesnění, např. dvě třídy, jedna z nich je optimalizovaná na výkon

«friend» – řízené narušení zapouzdření,klient má přístup k privátním prvkům dodavatele

«bind» – u generický tříd zobrazuje navázání objektu na generický parametr <T>

Realizacia

je vztah mezi třídou a rozhraním, který říká, že třída implementuje všechny operace z daného rozhraní.

Libovolný objekt pracující s tímto rozhraním pak umí pracovat i s jeho implementačními třídami

Rozhraní je specifický typ třídy, která slouží pouze jako závazná definice chování, neobsahuje implementaci.

UML v etapách vývoje softwaru

1. Specifikace požadavků

diagramy případů užití

detaily případů užití

specifikace (strukturovaný text)

slovníky pojmů

Diagramy případů užití (use case diagram)

Znázornnují hranice systému, jeho účastníky, interakci mezi nimi a akce, které mohou provádět.

detaily případů užití

Slouží pro konkretizaci jednotlivých případů užítí. Neexistuje standard zobrazeni, ale používá se tabulka, která obsahuje vstupní podmínky, výstupní podmínky a tok událostí.

2. Analýza

diagramy analytických tříd

realizace případů užití (diagramy interakce)

diagramy aktivit

analytické balíčky

objektové diagramy

Analytické třídy

mapují pojmy problémové domény na abstraktní entity modelu – třídy. Analytická třída není návrhová třída, tj. analytická třída slouží pouze pro identifikaci entit v řešené problematice a vztahů mezi nimi. Během etapy návrhu jsou analytické třídy upřesňovány do jedné či více návrhových tříd. Analytická třída

obsahuje jen nejpodstatnější atributy a operace

obsahuje minimální množinu odpovědností

obsahuje minimum vazeb na jiné (analytické) třídy

Analytické balíčky

Analytické balíčky souvisejí s dekompozicí problému – umožňují souběžnou práci na více částech (balíčcích) v etapě návrhu. Analytické balíčky seskupují sémanticky související elementy a definují hranice tohoto seskupení. Více balíčků můžeme řešit souběžně. Balíček také poskytuje zapouzdření prostoru jmen (tj. názvy elementů musí být v rámci balíčku jedinečná, mezi balíčky však může docházet k duplicitám) a definuje viditelnost zapouzdřených elementů – veřejné (public), soukromé (private) a chráněné (protected). Analytické balíčky mohou obsahovat

případy užití

analytické třídy

realizace případů užití

další balíčky

Diagramy interakce Diagramy interakce zahrnují diagramy spolupráce, které zdůrazňují strukturálí relace mezi objekty, a sekvenční diagramy které zdůrazňují časově orientovanou posloupností předávání zpráv mezi objekty. Bývají přehlednější než diagramy spolupráce, uživatelé lépe porozumí sekvenčnímu diagramu.

Diagramy aktivit

Diagramy aktivit reprezentují objektově orientované diagramy toků a lze je připojit k libovolnému modelovanému elementu (třída, balík, apod.) Diagram aktivit je zvláštním případem stavového automatu, který je určen především na modelování manažerských procesů. Diagram aktivit obsahuje počátek a konec, stavy aktivity a přechody mezi stavy.

Objektové diagramy

Objektové diagramy patří mezi diagramy dynamické. Zachycují konkrétní instance tříd a jejich vazby v určitém čase či podmínce. V některých případech je vhodné zobrazit konkrétní vazby mezi objekty, zejména pro zdůraznění význačného aspektu nebo jako pomůcku při hledání tříd v řešené problematice a vazeb mezi nimi. Vazby mezi objekty se mohou v průběhu měnit a jejich abstrakce je zachycena právě v diagramu tříd. Identifikace objektu sestává ze dvou částí – jména třídy, které je instancí (uvádí se za dvojtečku) a případného jména objektu (pokud objekt má jméno, uvádí se před dvojtečkou).

3. Návrh

upřesňování analytických diagramů (diagramy návrhových tříd, realizace případů užití)

stavové diagramy

návrhové podsystémy

Návrhové třídy

Specifikace návrhových tříd je na takovém stupni, že je lze přímo implementovat. Jedná se o upřesnění analytických tříd. Využití tříd z doménového řešení (knihovny, vrstva aplikačního serveru, GUI, . . . ).

Stavové diagramy

stavové automaty

speciálnı´ případ stavového automatu je diagram aktivit (modelování´ manažerských procesů, účastní se více objektů)

stavový diagram – modelování životního cyklu jednoho reaktivního objektu

Reaktivní objekt reaguje na vnšjší události. životní cyklus je modelován jako řada stavů, přechodů a událostí. Chování je důsledkem předchozího chování (následný stav závisí na aktuálním stavu). Stavové diagramy mohou modelovat dynamické chování reaktivních objektu:

třídy

případy užití

podsystémy

systémy