Obsah

Unified Modeling language (UML), popis jazyka, typy diagramů a způsob jejich použití při návrhu různých aspektů systému, syntax a sémantika jazyka a jeho symbolů.(A4M33NMS)

Převzato z STM státnice

UML

Úvod

UML (Unified modeling language) je grafický modelovací jazyk pro vytváření visuálních (grafických) modelů. UML je jednotný jazyk (grafický) pro specifikaci, vizualizaci, konstrukci a dokumentaci při OO analýze a návrhu (OOAaD) a pro modelování organizace (business modelling). UML není modelovací metodika – neříká nám nic o tom jak navrhovat SW systémy. Dává nám pouze grafickou syntaxi, pomocí které můžeme vyjadřovat modely. UML je otevřený, standardizovaný, průmyslově užívaný jazyk, snažící se vycházet z principů správného návrhu sw díla (best practices). Byl navržen tak aby byl snadno implementován CASE nástroji.

Původ UML
části UML 2.0 specifikace

Základní mechanizmy UML

Specifikace

Každý element může (či měl by ?) být specifikován textem, který popisuje sémantiku tohoto elementu. Tato specifikace upřesňuje, blíže popisuje, udává smysl modelovaného elementu. Popisuje business pravidla elementů (tudíž má největší význam u elementů popisujících problémovou doménu).

Ozdoby (adornments)

Další informace známé o elementu modelu. Každý element může být vyjádřen jednoduchým tvarem, ale je možno k němu přidávat i další informace - ozdoby (např. seznam metod, seznam atributů, název objektu, stereotyp,..).

Proč je těchto ozdob u elementu zobrazeno někdy více a někdy méně:

Podskupiny (common divisions)

Udávají, jak je možno rozdělovat (skupinovat) jednotlivé elementy; první způsob dělení :

Toto důrazné oddělení má dvojí praktický význam :

Mechanismy rozšiřitelnosti (extensibility mechanisms)

Jazyk UML sám v sobě obsahuje připravené mechanismy umožňující rozšířit jazkyk tak, aby vyhovoval momentálním potřebám. Máme k dispozici tři mechanismy rozšiřitelnosti :

Stavební bloky UML

Modelovací elementy

Vztahy – Relationships

Diagramy struktury systému

Diagram tříd

Zobrazuje statickou strukturu systému, popisuje typy objektů a statické vztahy mezi nimi.

Tři pohledy na systém při použití diagramu tříd

Tipy:

Návrhové relace

Generalizace

Dědičnost tříd

Realizace

Diagram komponent

Popisuje jak jsou jednotlivé komponenty (části) systému propojeny. Komponenta je fyzická nahraditelná část systému, která obaluje implementaci a poskytuje realizaci množiny specifikovaných rozhraní.

Diagram komponent znázorňuje komponenty použité v systému, tj. logické komponenty (např. business k., procesní k.) či fyzické komponenty (např. EJB k., CORBA k., .NET k. atd.). Diagram komponent nám může pomoci zejména tam, kde používáme vývoj založený na komponentách a kde struktura systému je založena na komponetách.

Komponenta je modulární část systému, která zapouzdřuje svůj obsah (tj. zapouzdřuje stav a chování i více klasifikátorů) a jejíž projev je nahraditelný (tj. komponenty, poskytující ekvivalentní funkcionalitu založenou na kompatibilitě jejich interfejsů, mohou být libovolně zaměňovány, a to buď už v čase tvorby designu, nebo až za běhu cílového systému). Komponenta je specializací strukturované třídy. Protože je komponenta specializací třídy, může mít své atributy a operace a může mít asociace a generalizace-specializace (více viz diagram tříd (class diagram)).

Na prvním obrázku je diagram komponent s jednou strukturovanou komponentou Obchod a jejími třemi vnitřními komponentami :Objednavka, :Produkt a :Zakaznik.

V druhém obrázku je další diagram komponent, kde vidíme komponentu Objednavka a její vnitřní klasifikátory HlavickaObjednavky a PolozkaObjednavky, které realizují chování této komponenty.

V diagramech můžeme vidět :

Druhy komponent:

Rozhraní:

příklady komponent:

Diagram nasazení

Diagram objektů

Objektový diagram zobrazuje objekty a jejich spoje (links) v jednom okamžiku, tj. je to snapshot běžícího systému (či jeho části). Objekty jsou instancemi tříd. Objekty jsou propojeny linky. Objektový diagram vypadá podobně, jako diagram tříd. Název konkrétního objektu se zapisuje před název třídy a odděluje se dvojtečkou.

Na obrázku je příklad objektového diagramu odvozeného z class diagramu naší půjčovny videokazet. :

Diagramy chování (behaviorální)

Modelování případů užití

Use case diagram (UC diagram) zobrazuje chování systému (nebo jeho části) z hlediska uživatele. Vychází z funkčních požadavků na systém.

postup při modelování:

Aktéři

Aktér specifikuje roli, kterou si může vnější entita (osoba, HW zařízení, jiný informační systém) přisvojit. Akteři definují hranice systému Při identifikaci aktérů zjišťujeme:

Případy užití

Identifikace případů užití:

Scénáře případů užití

POZOR! Scénáře případů užití jsou nedílnou součástní modelu. Samotné diagramy (bez scénářů) nemají potřebnou vypovídací hodnotu.

Struktura scénáře:

Relace include vs. relace extend

include

extend

Diagram aktivit

Diagram aktivit se používá pro popis dynamických aspektů systému.

Jde o jakýsi flowchart - znázorňuje tok řízení z aktivity do aktivity. Používá se také k modelování obchodních (business) procesů a workflow.

Diagram aktivit se soustřeďuje spíše na proces výpočtu než na objekty účastnící se výpočtu (i když i objekty mohou být znázorněny jako prvek aktivity).

Diagramy stavů a diagramy aktivit jsou si podobné (oba ukazují sekvenci stavů, které nastávají v čase, a ukazují podmínky způsobující přechody mezi stavy). Rozdíl mezi těmito diagramy je však v tom, že d. stavů se soustřeďuje na stavy objektu (tj. objektu provádějícího výpočet či objektu, se kterým je výpočet prováděn), kdežto d. aktivit se zaměřuje na stav samotného výpočtu (stav procesu, algoritmu, ….), kde může být účastno i více objektů, a kde jsou znázorněny řídící a informační toky mezi prvky diagramu.

Na obrázku je příklad jednoduchého diagramu aktivit:

Aktivity mohou být spouštěny akcemi a nebo jako součásti jiných chování, např. přechody v diagramu stavového stroje, metodou, případem použití, jinou aktivitou… Aktivita je zobrazena v diagramu aktivit.

Aktivita je specifikace chování - popisuje sekvenční a souběžné kroky výpočetní procedury. Aktivita je modelována jako graf uzlů aktivity (activity nodes) propojených řídícími a datovými toky (control flow, data flow). PS.: Uzel aktivity je něco naprosto jiného než uzel v deployment modelu ! Paradoxně na tuto zmatečnost je poukazováno přímo v UML reference manuálu.

Uzly aktivity jsou :

Stavový diagram

Diagram obsahuje stavový stroj (state machine). Stavový stroj vyjadřuje stavy určitého objektu a přechody mezi těmito stavy.

Na obrázku je příklad jednoduchého diagramu stavového stroje :

Stavový stroj je graf stavů a přechodů (mezi těmito stavy), který popisuje reakce objektu (přesněji : reakce instance klasifikátoru) na obdržení události. Stavový stroj může být připojený ke klasifikátoru (např. use case, class), nebo ke collaboration či k metodě.

Element, ke kterému je připojen stavový stroj, se nazývá vlastník (owner) stavového stroje.

Celý stavový stroj je vlastně složený stav (composite state), který je rekurzivně dekomponován na substavy. Nejspodnější (listové) stavy již nemají substavy.

Stavový stroj může mít reference na jiný stavový stroj použitím stavového substroje (submachine state). Ve stavovém stroji může být v jeden okamžik aktivních více stavů.

Pro vysvětlování podrobností o stavech musíme vědět, co je to přechod:

přechod (transition) je relace ve stavovém stroji mezi dvěma stavy, kde objekt v prvním stavu přejde do druhého stavu tehdy, když nastane specifikovaná událost (event) a jsou splněny specifikované podmínky (guards), přičemž se provede specifikovaný efekt (effect - action nebo activity). Přechod je nepřerušitelný.

Říká se, že přechod je odpálen (transition is fire). Přechod může mít jeden nebo více zdrojových stavů a jeden nebo více cílových stavů.

Co je to stav

stav (state) : situace, kdy modelovaný objekt splňuje nějakou podmínku, provádí nějakou operaci nebo čeká na událost. - např. ve stavu narozený splňuje objekt podmínku, že mu není dosud 18 roků a čeká, až dosáhne plnoletosti. Stavy jsou obsaženy ve stavovém stroji, který popisuje jak se vyvíjí objekt v čase dle svých reakcí na události.

sekvenční diagram

Přitom sekvenční d. a d. komunikací jsou téměř izomorfní - tj. dají se převádět z jednoho tvaru na druhý (často i automatizovaně) (to však platí jen pro jednoduché sekvenční diagramy, které nepoužívají struktorované mechanismy jako interaction use a combined fragment - vysvětleny níže v sekci další podrobnosti).

Použití sekvenčního diagramu bývá vhodnější v těch případech, kde jsou důležité časové souvislosti interakcí, ovšem nevidíme v něm zobrazené vztahy mezi objekty.

Objekty si mohou posílat zprávy. Sekvenční diagram zobrazuje jejich časovou posloupnost.

Jedná se o jednoduchý sekvenční diagram. Časová osa je svislá (čas běží shora dolů), na vodorovné ose jsou rozmístěny objekty:

V diagramu je znázorněna tato sekvence :

  1. objekt obj1 je hned na počátku aktivován (má focus) a poslal zprávu zpravaA s parametrem x objektu obj2 : obj1 přeruší zpracování (ztratí focus a předá řízení obj2) a čeká, až obj2 odpoví na zpravaA(x)
  2. obj2 získává focus a spustí vlastní metodu
  3. v jistém bodě zpracování posílá obj2 zprávu zpravaB do obj3 - obj2 započne čekat na odpověď od obj3
  4. obj3 získává focus (a spouští vlastní metodu)
  5. obj3 dokončí své zpracování, pak vrátí peška (předá řízení zpět) do obj2
  6. obj2 pokračuje v práci, a posílá další zrávu do obj3
  7. až obj3 dokončí zpracování, tak vrátí řízení zpět do obj2
  8. obj2 pokračuje v práci a až skončí, tak vrátí řízení do obj1, přitom ale vrátí návratový návratovou hodnotu 123
  9. obj1 si převezme návratovou hodnotu do atributu y

Popis šipek:

diagram komunikace

Diagram komunikací je i není nový v UML 2.0 : totiž v UML 1.x se jmenoval collaboration diagram, což bylo matoucí (collaboration byly statické struktury, kdežto diagram zahrnoval zprávy).

D. komunikací a sekvenční d. jsou téměř izomorfní - tj. dají se převádět z jednoho tvaru na druhý (často i automatizovaně) (to však platí jen pro jednoduché sekvenční diagramy, které nepoužívají struktorované mechanismy jako interaction use a combined fragment). D. komunikací i sekvenční d. ukazují interakce, ale každý svým vlastním způsobem.

Použití diagramu komunikací bývá vhodnější v těch případech, kde chceme zdůraznit strukturální aspekty spolupráce, tj. ukázat hlavně kdo s kým komunikuje - jsou méně vhodné pro zdůraznění časových souvislostí interakcí.

Objekty si mohou posílat zprávy. Diagram komunikací ukazuje objekty (přesněji : části kompozitní struktury nebo role ve spolupráci(collaboration)) a spojení a zprávy, které si objekty posílají. Čas zde nevystupuje jako zvláštní dimenze, proto musí být sekvence zpráv a spouběžnost threadů určena pomocí čísel sekvencí :

Jedná se o diagram komunikací odvozený z našeho jednoduchého sekvenčního diagramu

V diagramu je znázorněna tato sekvence :

  1. objekt obj1 je hned na počátku aktivován (má focus) a poslal zprávu zpravaA s parametrem x objektu obj2 : obj1 přeruší zpracování (ztratí focus a předá řízení obj2) a čeká, až obj2 odpoví na zpravaA
  2. obj2 získává focus a spustí vlastní metodu
  3. v jistém bodě zpracování posílá obj2 zprávu zpravaB do obj3 - obj2 započne čekat na odpověď od obj3
  4. obj3 získává focus (a spouští vlastní metodu)
  5. obj3 dokončí své zpracování, pak vrátí peška (předá řízení zpět) do obj2
  6. obj2 pokračuje v práci, a posílá další zrávu do obj3
  7. obj3 dokončí zpracování, tak vrátí řízení zpět do obj2
  8. obj2 pokračuje v práci a až skončí, tak vrátí řízení do obj1, přitom ale vrátí návratovou hodnotu 123
  9. obj1 si převezme návratovou hodnotu do atributu y

D. komunikací vlastně obsahuje jen čtyři typy elementů : základní frame, lifeline, komunikační cesty (paths) a zprávy

Stručný diagram interakce

Diagram přehledu interakcí definuje interakce pomocí varianty diagramu aktivit : tato varianta zahrnuje fragmenty sekvenčních diagramů spolu s konstrukty pro řízení toku.

Diagram přehledu interakcí obsahuje jako své uzly interakce (online vložené interakční diagramy) a interaction use (ad interaction use viz sekvenční diagram)