UML Jan Zachrla
Co je to UML? Zkratka „UML“ znamená „Unified Modeling Language“ (Unifikovaný modelovací jazyk) Jde o grafický jazyk sloužící k vizualizaci, specifikaci, konstrukci a dokumentaci programových systémů Unifikovaný = sjednoceny používané výrazové prostředky Jazyk – má syntaxi a sémantiku
Co je to UML? Objektově orientovaný přístup k analýze Neobsahuje metodiku, jak analyzovat, specifikovat či navrhovat programové systémy Nezávislý na programovacím jazyku
Historie UML Vychází z objektově orientovaných metod z konce 80. a začátku 90. let Vývoj začal v roce 1994 ve firmě Rational Software Corporation (dnes součást IBM) James Rumbaugh (Object-modeling technique – OMT), Grady Booch (Booch method) a Ivar Jacobson (Object-oriented software engineering – OOSE)
Historie UML První verze UML – rok 1995 Rok 1997 – přijat standard UML 1.1 standardizační organizací Object Management Group (OMG) V letech 1998 – 2002 se objevily další verze 1.2 – 1.5 UML 2.0 – rok 2005 Aktuální verze – 2.4.1 (srpen 2011)
Použití UML Kreslení konceptů Zaznamenání myšlenek a návrhů Slouží ke komunikaci mezi vývojáři Srozumitelnost, rychlost, snadné změny
Použití UML Kreslení detailních návrhů Zaznamenání kompletního návrhu nebo kompletní realizace Programátor by měl být schopen podle diagramu vytvořit program Existují specializované programy na tvorbu diagramů (např. CASE) Lze generovat i diagram z vlastního kódu (používá se pro potřeby dokumentace)
Použití UML UML jako programovací jazyk Vytvoří se UML diagramy, z nichž se vygeneruje přímo spustitelný kód Nutnost přesného vyjadřování v diagramech
Typy diagramů 13 typů, které lze rozdělit do dvou skupin: Strukturní (statické) diagramy (6) Zdůrazňují statickou strukturu systému za pomoci objektů, atributů, operací a vztahů Behaviorální (dynamické) diagramy (7) Zdůrazňují dynamické chování systému – ukazují spolupráci mezi objekty a změny vnitřních stavů objektů Součástí jsou i diagramy interakce (4 ze 7)
Diagram tříd (class diagram) Strukturní diagram Diagram tříd je základní stavební blok objektově orientovaného modelování (používá se pro obecné konceptuální modelování i pro detailní modelování) Zobrazuje třídy, jejich atributy, operace a vztahy mezi nimi
Diagram tříd – třída Třída je v diagramu reprezentována jako obdélník a může obsahovat následující tři části: Jméno třídy (horní část) – povinné; tučně, zarovnáno na středu, první písmeno velké Atributy třídy (prostřední část) – zarovnáno vlevo, první písmeno malé Operace a metody, které lze s třídou provádět (spodní část) – zarovnáno vlevo, první písmeno malé
Diagram tříd – atribut třídy Jméno (povinné) Viditelnost (atributů a operací): + (public / veřejné – viditelné a přístupné odkudkoliv) - (private, soukromé – jen uvnitř třídy) # (protected, chráněné – uvnitř třídy a v jejích potomcích) ~ (package, balíček - jen z elementů uvnitř balíčku, ve kterém je tato třída, a z vnořených balíčků)
Diagram tříd – atribut třídy Stereotyp – nepovinný; definuje určité vlastnosti třídy; zapisuje se do dvojitých ostrých závorek: <<new_stereotype>> Typ – nepovinný; určuje typ atributu Násobnost – nepovinná; pro určení polí (např. owner[2] : String říká, že atribut owner je složen z pole dvou stringů) nebo jestli hodnota může/nemusí být vyplněna (např. owner[1] znamená, že musí být vyplněna); jestliže je násobnost vynechána, automaticky musí být hodnota vyplněna
Diagram tříd – atribut třídy \ (atribut je odvozený) Implicitní hodnota – hodnota, kterou atribut získá hned po vytvoření instance Property-string – umožňuje specifikovat další vlastnosti atributu (např. {readOnly})
Diagram tříd – operace třídy Jméno (stejné jako u atributu) Stereotyp (stejné jako u atributu) Viditelnost (stejné jako u atributu) Základní hodnota - pokud určitý argument není v rámci volání operace vůbec předán, nastaví si jeho hodnotu na implicitní základní hodnotu volaná operace sama
Diagram tříd – operace třídy Návratový typ - obsahuje seznam jmen klasifikátorů specifikujících, jakých typů budou návratové hodnoty Property-string – umožňuje specifikovat další vlastnosti operace (např. výjimky)
Diagram tříd – příklad třídy
Diagram tříd – vztahy mezi třídami Asociace (Association) Vazba mezi objekty Znázorňuje se jako čára Může být víc druhů – oboustranná, jednostranná (v tomto případě se přidává šipka) Může obsahovat jméno, jména rolí, násobnost, viditelnost atd.
Diagram tříd – příklad asociace
Diagram tříd – vztahy mezi třídami Agregace (Aggregation) Vztah, který vyjadřuje, že jeden element je součástí druhého Značí se jako čára s prázdným kosočtvercem na konci Kompozice (Composition) Silnější forma agregace Značí se jako čára s vyplněným kosočtvercem na konci
Diagram tříd – agregace a kompozice
Diagram tříd – vztahy mezi třídami Generalizace (Generalization) Jedna třída je specializací druhé (např. třída Student je specializací třídy Člověk) Značí se jako čára s trojúhelníkem na konci Realizace (Realization) Zdrojová třída zaručuje splnění toho, co předepisuje cílová třída Značí se jako přerušovaná čára s trojúhelníkem na konci
Diagram tříd – příklad generalizace
Diagram komponent (component diagram) Strukturní diagram Znázorňuje, jak jsou komponenty navzájem propojené a jak formují větší komponenty Používají se na zobrazení struktury libovolně složitých systémů
Diagram komponent – komponenta Definice komponenty: Modulární část systému, která zapouzdřuje svůj obsah a jejíž projev je v rámci prostředí nahraditelný. Chování komponenty je definováno pomocí poskytovaného (provided) interface a požadovaného (required) interface Komponenta může být nahrazena jinou pouze tehdy, jestliže jsou jejich provided interface a required interface identické Znázorněna jako obdélník s klíčovým slovem <<component>> (nepovinně i ikona komponenty)
Diagram komponent – příklad komponenty
Diagram složené struktury (Composite structure diagram) Strukturní diagram Ukazuje vnitřní strukturu třídy a možné spolupráce, které tato třída umožňuje
Diagram složené struktury Diagram obsahuje: Vnitřní části Porty (skrze ně vnitřní části navzájem interagují nebo skrze ně instance třídy interagují s okolním světem) Konektory (spojují části a porty) Složená struktura skupina navzájem spojených elementů, které spolupracují, aby dosáhly určitého cíle Každý element má ve spolupráci definovanou svoji roli
Diagram složené struktury – příklad
Diagram nasazení (Deployment diagram) Strukturní diagram Diagram ukazuje, jak bude vypadat fyzická struktura systému Zobrazuje hardwarové componenty (nodes), softwarové komponenty (artifacts) a vazby mezi nimi (communication paths)
Diagram nasazení Uzly jsou dvojího typu: <<device>> – fyzické zařízení (hardware) <<execution environment>> – prostředí zpracování softwaru (např. webový server)
Diagram nasazení – příklad
Diagram objektů (Object diagram) Strukturní diagram Někdy se také nazývá diagram instancí Zobrazuje strukturu modelovaného systému (celou nebo její část) v určitém časovém okamžiku) Velmi podobný diagramu tříd (téměř stejné značení, objektový je podrobnější) Zatímco diagram tříd zobrazuje třídy, objektový diagram ukazuje instance třídy
Diagram objektů - příklad
Diagram balíčků (Package diagram) Strukturní diagram Umožňuje sdružovat elementy UML do skupin (tzv. balíčků – packages) a znázornit závislosti mezi těmito balíčky Balíčky mohou být součástí jiných balíčků – tímto lze vyjádřit hierarchickou strukturu
Diagram balíčků Dva typy závislostí mezi balíčky: Package import – elementy cílového balíčku budou importovány do zdrojového Package merge – obsah obou balíčků bude zkombinován
Diagram profilů (Profile diagram) Strukturní diagram Zabývá se metamodelováním Používá se na zobrazování stereotypů V UML 1 tento diagram nebyl, objevil se až od verze 2
Diagram aktivit (Activity diagram) Diagram chování Zobrazuje průběh činnosti krok po kroku Lze zakreslit i rozhodování, opakování nebo souběžnost akcí
Diagram aktivit (Activity diagram) Diagram aktivit se skládá z různých tvarů: Zabolený obdélník – akce Kosočtverec – rozhodování Černá „tyč“ – začátek a konec souběžných aktivit Černý kruh – začátek procesu Zakroužkovaný černý kruh – konec procesu
Stavový diagram (State diagram) Diagram chování Zachycuje jednotlivé stavy objektu a přechody mezi nimi
Stavový diagram Diagram obsahuje: Počáteční a koncový stav (podobně jako u diagramu aktivit) Zaoblený obdélník – stav objektu; může být rozdělen na dvě části, přičemž ta druhá zobrazuje, které činnosti se za tohoto stavu dějí Přechody – událost[podmínka]/akce – k vykonání akce dojde jen tehdy, když je splněna podmínka
Diagram užití (Use case diagram) Diagram chování Zobrazuje interakci uživatele se systémem Uživatelů může být v diagramu i více Spíše než o konkrétního uživatele se jedná o roli (zobrazeno jako actor) – jeden účastník může být vyjádřen více actory a více účastníků může být vyjádřeno jedním actorem Kromě rolí diagram dále obsahuje případy užití (use cases), ohraničení systému a relace
Diagram komunikace (Communication diagram) Diagram interakce Dostupný od verze UML 2 – jde o zjednodušenou verzi collaboration diagramu z UML 1 Zobrazuje interakci mezi objekty v podobě sekvenčních zpráv Jednotlivé zprávy jsou očíslované Velmi podobný sekvenčnímu diagramu – diagram komunikace se zaměřuje na to, které elementy spolu interagují
Sekvenční diagram (Sequence diagram) Diagram interakce Ukazuje, jak spolu různé procesy spolupracují v časovém sledu V diagramu vystupují účastníci (většinou objekty), z nichž každý má svou čáru života (lifeline) – na ní je vyznačeno, kdy je účastník aktivní Zprávy – interakce mezi účastníky
Diagram časování (Timing diagram) Diagram interakce Zaměřuje se na časová omezení Používají se na zobrazení chování objektů v určitém časovém období Jde o speciální formu sekvenčního diagramu (např. obrácené osy)
Diagram časování (Timing diagram) Dva typy Stavová forma – základním prvkem je časová osa; diagram dále obsahuje čáry života a stavy objektů (orientováno svisle); změna z jednoho stavu do druhého je vyjádřena vertikálním posunutím čáry života Hodnotová forma – soustředí se na stavy v relativním čase (nemusí obsahovat časovou osu)
Diagram přehledu interakcí (Interaction overview diagram) Diagram interakce Umožňuje přehledně zobrazit řízení toku včetně rozvětvení a souběžnosti Trochu podobný diagramu aktivit (oba zobrazují posloupnost aktivit), v diagramu interakcí je ale každá činnost zobrazena jako rámec, který může obsahovat další vnořené diagramy interakcí
Děkuji za pozornost!
Zdroje Unified Modeling Language [online]. [cit. 2014-10-14]. Dostupné z: http://www.uml.org/ Unified Modeling Language. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z: http://en.wikipedia.org/wiki/Unified_Modeling_Language Class diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/Class_diagram Composite structure diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z: http://en.wikipedia.org/wiki/Composite_structure_diagram Package diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/Package_diagram Activity diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/Activity_diagram State diagram (UML). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/State_diagram_(UML) Use Case Diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/Use_Case_Diagram
Zdroje Component (UML). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://en.wikipedia.org/wiki/Component_(UML) Sekvenční diagram. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2001- [cit. 2014-10-14]. Dostupné z:http://cs.wikipedia.org/wiki/Sekven%C4%8Dn%C3%AD_diagram Diagram nasazení. In: REJNKOVÁ, Petra. Příklady použití diagramů UML 2.0 [online]. 2009. vyd. [cit. 2014-10-14]. Dostupné z:http://uml.czweb.org/diagram_nasazeni.htm Diagram aktivit. In: REJNKOVÁ, Petra. Příklady použití diagramů UML 2.0 [online]. 2009. vyd. [cit. 2014-10-14]. Dostupné z:http://uml.czweb.org/diagram_aktivit.htm Diagram komunikace. In: REJNKOVÁ, Petra. Příklady použití diagramů UML 2.0 [online]. 2009. vyd. [cit. 2014-10-14]. Dostupné z:http://uml.czweb.org/diagram_komunikace.htm Diagram časování. In: REJNKOVÁ, Petra. Příklady použití diagramů UML 2.0 [online]. 2009. vyd. [cit. 2014-10-14]. Dostupné z:http://uml.czweb.org/diagram_casovani.htm UML Interaction Overview Diagrams Examples. In: Uml-diagrams [online]. [cit. 2014-10-14]. Dostupné z: http://www.uml-diagrams.org/interaction-overview-diagrams-examples.html UML basics: The component diagram. In: IBM: developerWorks [online]. [cit. 2014-10-14]. Dostupné z: https://www.ibm.com/developerworks/rational/library/dec04/bell/