Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury, komponent a nasazení. Diagramy popisující chování model jednání, scénáře, diagramy aktivit, komunikace objektů, stavové diagramy. Diagramy pro správu modelů balíky (packages), subsystémy, rámce, diagramy komponent. Richta: B101TMM - v UML 3 Richta: B101TMM - v UML 4 Diagramy objektů Objekt je pojem, abstrakce, nebo věc s dobře definovanými hranicemi a významem Každý objekt má tři charakteristiky: identitu, stav a chování. Stav objektu je jedna z možných situací, ve kterých se objekt může nacházet. Stav objektu se může měnit a je definován sadou vlastností - atributů a vztahy. Chování určuje, jak objekt reaguje na žádosti jiných objektů a vyjadřuje vše, co může objekt dělat. Chování je implementováno sadou operací (metod). Identita znamená, že každý objekt je jedinečný. Richta: B101TMM - v UML 5 Notace objektů unikátní objekt vztah býti instancí libovolný objekt třídy Student třída unikátní objekt třídy Student Richta: B101TMM - v UML 6 1
Vztahy mezi objekty instance vztahu je vždy 1..1 Notace tříd object Diagramy objektů Jan_Nov ák +je mužem jsou oddáni +je ženou Jana_Nov ákov á 1 1 statický atribut «trace» «trace» Osoba 0..1 0..1 jsou oddáni instance vztahu vztah má kardinalitu vztah Richta: B101TMM - v UML 7 statická metoda Richta: B101TMM - v UML 8 Diagramy tříd Pro definici atributů se používá notace: viditelnost jméno [ násobnost ] : typ = počáteční hodnota { omezení, vlastnost } Pro definici operací (metod) se používá notace: viditelnost jméno(druh jméno: typ, ) : typ { omezení, vlastnost } Viditelnost: +... public #... protected -... private Násobnost: [ a..b ] ( [ 0..1 ] může být NULL) Druh: in, out, inout (implicitně in) Richta: B101TMM - v UML 9 Vztahy mezi třídami vztah (asociace) - vyznačení možného vztahu mezi objekty role označení konce vztahu, které říká, jakou roli objekt ve vztahu hraje Pro vyjádření kardinality a volitelnosti se používá notace: N..M, kde N a M může být číslo nebo * (samotná * znamená 0..*) jméno vztahu class Domain Objects Zákazník +si objednal * objednávka +je objednáno role Richta: B101TMM - v UML 10 * Zboží Přidružené třídy (atributy vztahů) Vztah nemá atributy, ale může být popsán přidruženou třídou přidružená třída class Příklad firmy Firma +je zaměstnancem 0..* +je nadřízena 0..* funkce Funkce - plat: money řídí +zaměstnává 0..* +je podřízena 0..1 Osoba Agregace a generalizace agregace (aggregation) druh vztahu, kdy jedna třída je součástí jiné třídy - vztah typu celek/část kompozice (composition) silnější druh agregace - u kompozice je část přímo závislá na svém celku, zaniká se smazáním celku a nemůže být součástí více než jednoho celku generalizace (generalization) druh vztahu, kdy jedna třída je zobecněním vlastností jiné třídy (jiných tříd) - vztah typu nadtyp/podtyp, generalizace/specializace Richta: B101TMM - v UML 11 Richta: B101TMM - v UML 12 2
Příklad agregace a generalizace generalizace Stereotypy a třídy Stereotypem lze zavést nový druh prvku modelování. Zde můžeme tvořit nové druhy (skupiny) tříd. Nejčastějšími skupinami (stereotypy) tříd jsou: entitní třídy (stereotyp je <<entity>>), třídy rozhraní (stereotyp je <<boundary>>) a třídy řídicí (stereotyp je <<control>>). agregace Richta: B101TMM - v UML 13 Richta: B101TMM - v UML 14 Třídy se stereotypy Richta: B101TMM - v UML 15 Richta: B101TMM - v UML 16 Balíky (packages) Logická skupina elementů Richta: B101TMM - v UML 17 Richta: B101TMM - v UML 18 3
Další možnosti Kvalifikované vztahy Navigované vztahy Odvozené atributy a vztahy (předznačí se / ) Interface - třída bez atributů Generiky a generické instance Parametrizované třídy (generiky) Generické instance class Popis struktury prv ek:t class Kvalifikované vztahy Zásobník Banka - název: String - kód: short {readonly} + push(t) : void + pop() : T číslo: Integer «instantiate» <T = int> Klient Int-Zásobník - jméno: String - příjmení: String Richta: B101TMM - v UML 19 Richta: B101TMM - v UML 20 Diagram tříd property Nový prvek metamodelu diagramu tříd je vlastnost (property). To může být atribut nebo konec jednosměrného vztahu Diagram tříd property strings Umožňuje přidat k vlastnosti (property) její další specifikaci. Jako každé omezení se zapisuje ve složených závorkách. Richta: B101TMM - v UML 21 Richta: B101TMM - v UML 22 Diagram tříd property strings Specializace vztahu {redefines} Diagram tříd property strings Omezení specializace konce vztahu {subsets <vlastnost>}, {union}, {bag}, {sequence}, {ordered}, Richta: B101TMM - v UML 23 Richta: B101TMM - v UML 24 4
Diagramy kompozitní struktury V každém autě je jeden motor, dvě přední a dvě zadní kola Motor pohání přední kola v tomtéž autě Motor nemůže pohánět nic jiného Richta: B101TMM - v UML 25 Richta: B101TMM - v UML 26 Diagramy kompozitní struktury Totéž pomocí tříd? V každém člunu je jeden motor a několik lodních šroubů Motor pohání lodní šrouby v tomtéž člunu Motor nemůže pohánět nic jiného Motor v jednom autě může pohánět kola v jiném autě Každý motor pohání kola i lodní šroub Motor může pohánět libovolná dvě kola Richta: B101TMM - v UML 27 Richta: B101TMM - v UML 28 Notace diagramů kompozitní struktury Část (Role, Part) Instance určitého typu, tvořící část složené struktury. Popisuje roli (úlohu, part), kterou instance hraje uvnitř (v rámci) klasifikátoru. Část slouží též jako konec vztahu v kontextu složené struktury. Část má jméno, typ a multiplicitu. Př.: Přední kolo - front: Wheel[2] Richta: B101TMM - v UML 29 Richta: B101TMM - v UML 30 5
Konektor (Connector) Specifikuje instanci vztahu (asociace, vazby, linku ) v kontextu strukturovaného klasifikátoru. Vztah mezi instancemi vystupujícími v rolích v daném strukturovaném klasifikátoru. Rozdíl asociace je vztah mezi klasifikátory konektor je vztah mezi rolemi (party) Př.: motor pohání přední kola (:powers) Port Role (části), které jsou dostupné zvnějšku. Bod interakce mezi klasifikátorem a jeho okolím. Zprávy (volání, signály) mohou být směrovány na instance portů (ne na objekt). Porty mohou být spojeny s vnitřními prvky (rolemi) nebo se specifikací chování celého objektu. Implementace portu zahrnuje rozpoznání události a její předání odpovídajícímu prvku. Porty jsou vytvořeny při vytváření instance a zrušeny při jejím zániku. Richta: B101TMM - v UML 31 Richta: B101TMM - v UML 32 Příklad použití portu Kompozitní struktura bytu Richta: B101TMM - v UML 33 Richta: B101TMM - v UML 34 Stavové diagramy Notace stavových diagramů Slouží k popisu dynamiky systému Stavový diagram definuje možné stavy, možné přechody mezi stavy, události, které přechody iniciují, podmínky přechodů a akce, které s přechody souvisí Stavový diagram lze použít pro popis dynamiky objektu (pokud má rozpoznatelné stavy), pro popis metody (pokud známe algoritmus), či pro popis protokolu (včetně protokolu o styku uživatele se systémem) počáteční stav událost, která vyvolala přechod stav akce přechod koncový stav Richta: B101TMM - v UML 35 Richta: B101TMM - v UML 36 6
Příklad: Stavový model objednávky Stavový stroj Zahrnuje: (konečnou) sadu stavů a regionů haldu událostí, které nastaly v okolí informaci o aktivních stavech a regionech informaci o vnitřních aktivitách stavů (tzv. do aktivity) globální stav stroje (stav proměnných) Richta: B101TMM - v UML 37 Richta: B101TMM - v UML 38 Jak se stavový stroj chová? Rozhodne se, zda bude obsluhovat událost nebo vnitřní aktivity. Pokud vybere vnitřní aktivity, vybere aktivní stav, který má nedokončenou vnitřní aktivitu a provede jeden krok této aktivity. Pokud vybere událost, vybere všechny stavy, které jsou aktivní a které mají výstupní přechod ohodnocený touto událostí. Z nich vybere stavy, jejichž výstupní přechod má splněnu podmínku. Jeden z přechodů uskuteční deaktivuje vstupní stav, aktivuje výstupní stavy. Pokračuje následujícím cyklem, ale až po dokončení předchozího. Jednoduchý případ 1. Žádný stav není aktivní. 2. Nastala událost spouštějící činnost stroje na haldě událostí je jen jedna událost. 3. Protože není žádný aktivní stav, vybere se počáteční stav a aktivuje se. 4. Protože je aktivní počáteční stav a nastala událost, deaktivuje se počáteční stav, provede se přechod a inicializace s ním spojená, aktivuje se stav. 5. Jakmile nastane událost a je splněna podmínka, provede se aktivita, deaktivuje se stav a aktivuje se koncový stav činnost stroje se ukončí. Richta: B101TMM - v UML 39 Richta: B101TMM - v UML 40 Případ závor Všechny stavy jsou jednoduché (simple) a nemají žádný region. Časové události Vstupní aktivita (entry point) Výstupní aktivita (exit point) Richta: B101TMM - v UML 41 Richta: B101TMM - v UML 42 7
Vstupní a výstupní aktivity Pořadí provádění akcí Richta: B101TMM - v UML 43 Richta: B101TMM - v UML 44 Vnitřní přechody Vnitřní aktivity ( do aktivity) Nedochází k přechodu do jiného stavu spouští paralelní vlákno prováděné dokud: - akce neskončí - nedojde k přechodu do jiného stavu (signálem) Richta: B101TMM - v UML 45 Richta: B101TMM - v UML 46 Podmíněné přechody Podmíněné větvení (zkratka) Richta: B101TMM - v UML 47 Richta: B101TMM - v UML 48 8
Hierarchické automaty Skupinové přechody Richta: B101TMM - v UML 49 Richta: B101TMM - v UML 50 Samovolný přechod Spouštěcí pravidla více přechodů může mít stejný signál - vnitřní mají přednost Richta: B101TMM - v UML 51 Richta: B101TMM - v UML 52 Pořadí provádění akcí Historie ve stavových diagramech Stavové diagramy nyní mohou obsahovat pseudostav "History" (nebo taky "Shallow history") a "Deep history", které by měly vyznačovat možnosti systému se vracet zpět do historie Richta: B101TMM - v UML 53 Richta: B101TMM - v UML 54 9
Historie Ortogonální regiony Richta: B101TMM - v UML 55 Richta: B101TMM - v UML 56 Automaty v regionech běží paralelně Čeká se na doběhnutí obou automatů Richta: B101TMM - v UML 57 Richta: B101TMM - v UML 58 Příklad Doplňky ke stavovým diagramům Přechod může být ohodnocen: událost(parametry)[podmínka]/akce^zpráva Každý stav může obsahovat popis akcí pro události vstup, výstup a opakované provádění: entry/akce exit/akce do/akce Stavové diagramy mohou být hierarchické Mohou obsahovat synchronizační značky Richta: B101TMM - v UML 59 Richta: B101TMM - v UML 60 10
Diagramy komponent Vyjadřují (fyzickou) strukturu komponent systému Popisují typy komponent - instance komponent jsou vyjádřeny v diagramu nasazení Komponenty mohou být vnořeny do jiných komponent Při vyjadřování vztahu mezi komponentami lze používat interface Definice komponenty UML 1.5 Modulární, nasaditelná a nahraditelná část systému, která zapouzdřuje implementaci a zveřejňuje množinu rozhraní. Specializace klasifikátoru. UML 2.0 Modulární část systému, která zapouzdřuje svůj obsah a jejíž projev je nahraditelný v daném prostředí. Specializace strukturované třídy (Part, Konektor, Port). Richta: B101TMM - v UML 61 Richta: B101TMM - v UML 62 Příklad diagramu komponent Diagram komponent Richta: B101TMM - v UML 63 Richta: B101TMM - v UML 64 Datový model notace konceptuální model tříd nebo ER-model (diagramy + textový popis) další integritní omezení, která nejsou zachycena v diagramech datový slovník Datově orientovaná analýza Seznam událostí, kontext, datový slovník Identifikace dat, která s událostmi souvisí (identifikace základních objektů) Identifikace vztahů mezi objekty Scénáře jednání (původce, událost, akce, participanti, výstupy - reakce) Modelování životních cyklů objektů Popis akcí (minispecifikace základních akcí) Richta: B101TMM - v UML 65 Richta: B101TMM - v UML 66 11
Datově orientovaná analýza Vychází z představy, že základem IS jsou data. Služby IS slouží pro pořízení a exploraci dat. Doporučuje proto nejprve analyzovat požadavky a definovat konceptuální datový model řešeného systému. Konceptuální datový model musí postihovat data přicházející přes hranici systému jako vstupní data související s událostmi, dále data, která se v systému ukládají a nakonec rovněž data, která systém produkuje na výstupu. Teprve později doplníme model o další části. Postup datově orient. analýzy 1. Seznam událostí, kontext, datový slovník 2. Identifikace dat, která s událostí souvisí (základních objektů) 3. Identifikace vztahů mezi objekty 4. Scénáře jednání (původce, událost, akce, participanti, výstupy - reakce) 5. Modelování životních cyklů objektů 6. Popis akcí (minispecifikace základních akcí) Richta: B101TMM - v UML 67 Richta: B101TMM - v UML 68 Jak hledat data? Doporučení č.1: Analyzujeme odborný článek, vybereme všechna podstatná jména. Roztřídíme je do skupin: kandidáti na typy objektů (entity), kandidáti na vlastnosti objektů (atributy), ostatní (kandidáti na aktéry, smetí). Richta: B101TMM - v UML 69 Příklad: Odborný článek pro Výtah Systém Výtah slouží pro logické řízení obsluhy výtahu s jednou či více šachtami (předpokládají se 4 šachty a 40 úrovní). Systém zajišťuje efektivní plánování sběru a odvozu pasažérů mezi obsluhovanými patry podle požadavků (požadavek na přivolání výtahu pro jízdu směrem nahoru nebo dolů, požadavek na dopravení do určitého patra). Směr jízdy se nemění, dokud výtah nesplní objednávky v daném směru (výtah neví o pasažérech neexistuje indikace prázdnosti klece). Přeplněný výtah nereaguje na výzvy (existuje indikace přetížení). Pro každou šachtu existuje samostatný motor ovládaný signály (povely UP, DOWN a STOP). Povel STOP způsobí zastavení výtahu v nejbližším patře v daném směru a otevření dveří výtahu (dveře se dají otevřít až v patře). Uvnitř klece je panel s tlačítky pater, indikace aktuální polohy a tlačítko STOP. Tlačítko STOP zabrání zavření dveří (jde mimo systém). Rovněž otevírání a zavírání dveří jde mimo systém (kvůli bezpečnosti). Příkazy pro systém jsou akceptovány až po zavření dveří. Operátor výtahu má k dispozici tlačítko ON/OFF, kterým zadává požadavek na zastavení pohybu výtahů. Richta: B101TMM - v UML 70 Zpracovaný článek systém Výtah logické řízení šachta úroveň pasažér patro požadavek požadavek na přivolání výtahu pro jízdu směrem nahoru požadavek na přivolání výtahu pro jízdu směrem dolů požadavek na dopravení do patra směr jízdy objednávka indikace prázdnosti klece výzva indikace přetížení motor signál povel UP povel DOWN povel STOP dveře výtahu klec panel s tlačítky pater indikace aktuální polohy tlačítko STOP příkaz pro systém operátor výtahu tlačítko ON/OFF požadavek na zastavení pohybu Richta: B101TMM - v UML 71 Kandidáti na aktéry pasažér indikace přetížení motor indikace aktuální polohy (patra) tlačítko STOP operátor výtahu tlačítko ON/OFF Richta: B101TMM - v UML 72 12
Kandidáti na typy dat šachta (atribut klece) úroveň alias patro požadavek alias objednávka alias příkaz pro systém alias výzva požadavek na přivolání výtahu pro jízdu směrem nahoru požadavek na přivolání výtahu pro jízdu směrem dolů požadavek na dopravení do patra směr jízdy (atribut) indikace prázdnosti klece (neexistuje) indikace přetížení signál alias povel (pro motor) povel UP povel DOWN povel STOP klec panel s tlačítky pater indikace aktuální polohy tlačítko STOP (jde mimo systém) tlačítko ON/OFF alias požadavek na zastavení pohybu Richta: B101TMM - v UML 73 class Vytah Stav + getpocetpater() : int -1..getPocetKleci() + getpocetkleci() : int «enumeratio... Motor Klec -2..getPocetPater() + nahoru() : void «enum» + dolu() : void cislo + stop() : void «enumeratio... Patro «enum» cislo «metaclass» «container» Panel Pozadav ky 1 1 1 0..* Panel_v _patre Panel_v_kleci Pozadavek 2 +getpocetpater() Tlačítko_přivolání Tlačítko_patra - směr: char - klec: int Pozadavek_na_privolani Pozadavek_na_patro «metaclass» Tlačítko - patro: int Richta: B101TMM - v UML 74 Něco diagramem vyjádřit nelze Připojení omezení k prvkům V příkladu systému Výtah je to např.: Tlačítko pro přivolání pro jízdu směrem nahoru na panelu v posledním patře, tj. když patro má hodnotu getpocetpater() neexistuje. Tlačítko pro přivolání pro jízdu směrem dolů na panelu v prvním patře neexistuje. class Koncept «metaclass» Tlačítko - patro: int Tlačítko_patra Tlačítko_přiv olání - klec: int - směr: char <<constraint>> -- Směr může být UP nebo DOWN context Tlačítko_přivolání inv: směr in (UP,DOWN) -- pro směr nahoru nelze použít poslední patro context Tlačítko_přivolání inv: směr = UP implies patro < getpocetpater()-1 -- pro směr dolů nelze použít nejnižší patro context Tlačítko_přivolání inv: směr = DOWN implies patro > 0 Richta: B101TMM - v UML 75 Richta: B101TMM - v UML 76 Jak hledat data? Doporučení č.2: Analyzujeme seznam událostí, rozpoznáváme data, která s událostmi souvisí. Roztřídíme je do skupin: kandidáti na typy objektů (entity), kandidáti na vlastnosti objektů (atributy). Příklad: Události pro ECO sklad Operátor zahájil přejímku Operátor zahájil dodávku Manažer se ptá na stav skladu Manažer se ptá na bezpečnost skladu Richta: B101TMM - v UML 77 Richta: B101TMM - v UML 78 13
Kandidáti na typy dat Datový model pro ECO-sklad (1.) dodací list barel typ chemikálie rozdíly v přejímce nelze uložit příkaz pro skladníka Richta: B101TMM - v UML 79 Richta: B101TMM - v UML 80 Diagramy nasazení Příklad diagramu nasazení Popisují fyzické rozmístění elementů systému na uzly výpočetního systému Uzly a elementy jsou značeny obdobně jako objekty a třídy (může být uveden pouze typ, nebo konkrétní instance a typ - podtržena) Popisují nutné vazby mezi uzly (případně též použitý protokol - interface ) Obsahují pouze komponenty potřebné pro běh aplikace - komponenty potřebné pro překlad a sestavení jsou v diagramu komponent uzel instance komponenty komunikace interface Richta: B101TMM - v UML 81 Richta: B101TMM - v UML 82 Příklad diagramu nasazení Příklad diagramu nasazení Richta: B101TMM - v UML 83 Richta: B101TMM - v UML 84 14
The End 85 15