B101TMM – Techniky a metody modelování požadavků Modelování struktury
Infrastruktura UML
Modelování struktury v UML Karel Richta © listopad 2011
2
Richta: B101TMM - Modelování struktury v UML
Superstruktura UML
Směr pohledu na systém dle UML
Richta: B101TMM - Modelování struktury v UML
3
Diagramy objektů
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.
Notace 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í.
libovolný objekt třídy Student
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: Podklady z přednášek na BI
unikátní objekt třídy Student
unikátní objekt vztah „býti instancí“
Richta: B101TMM - Modelování struktury v UML
4
Richta: B101TMM - Modelování struktury v UML
5
Richta: B101TMM - Modelování struktury v UML
třída 6
1
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Notace tříd
Vztahy mezi objekty instance vztahu je vždy 1..1 obj ect Diagramy obj ektů
Jan_Nov ák
+j e mužem
+je ženou
jsou oddáni
1
Jana_Nov ákov á
1
«trace»
statický atribut
«trace» 0..1
instance vztahu
j sou oddáni
Osoba 0..1
vztah má kardinalitu vztah 7
Richta: B101TMM - Modelování struktury v UML
Diagramy tříd
Richta: B101TMM - Modelování struktury v UML
8
Vztahy mezi třídami
Pro definici atributů se používá notace:
viditelnost jméno [ násobnost ] : typ = počáteční hodnota { omezení, vlastnost }
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 Obj ects
Pro definici operací (metod) se používá notace:
viditelnost jméno(druh jméno: typ, …) : typ { omezení, vlastnost }
Zákazník
Viditelnost: + ... public # ... protected - ... private Násobnost: [ a..b ] ( [ 0..1 ] může být NULL) Druh: in, out, inout (implicitně in) 9
Vztah nemá atributy, ale může být popsán přidruženou třídou class Příklad firmy
Richta: B101TMM - Modelování struktury v UML
funkce
Funkce +je podřízena 0..1
plat: money
+je nadřízena 0..*
role
10
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
0..*
-
Zboží
*
agregace (aggregation) – druh vztahu, kdy jedna třída je součástí jiné třídy - vztah typu celek/část
+zaměstnává
0..*
+je objednáno
Osoba +je zaměstnancem
obj ednávka
Agregace a generalizace
Přidružené třídy (atributy vztahů)
Firma
+si objednal *
Richta: B101TMM - Modelování struktury v UML
přidružená třída
statická metoda
řídí
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
11
Richta: B101TMM - Modelování struktury v UML
12
2
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Stereotypy a třídy
Příklad agregace a generalizace
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 <
>) a třídy řídicí (stereotyp je <>).
generalizace
agregace Richta: B101TMM - Modelování struktury v UML
13
Richta: B101TMM - Modelování struktury v UML
14
15
Richta: B101TMM - Modelování struktury v UML
16
Třídy se stereotypy
Richta: B101TMM - Modelování struktury v UML
Balíky (packages) Logická skupina elementů
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
17
Richta: B101TMM - Modelování struktury v UML
18
3
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Další možnosti
Generiky a generické instance
Kvalifikované vztahy Navigované vztahy Odvozené atributy a vztahy (předznačí se ‘/’) „Interface“ - třída bez atributů
Parametrizované třídy (generiky) Generické instance class Popis struktury prv ek:T
class Kv alifikov ané vztahy
Zásobník + +
Banka -
push(T) : void pop() : T
název: String kód: short {readOnly}
č íslo: Integer
«instantiate» Int-Zásobník Klient -
jméno: String příjmení: String
Richta: B101TMM - Modelování struktury v UML
19
Nový prvek metamodelu diagramu tříd je vlastnost (property). To může být atribut nebo konec jednosměrného vztahu
Richta: B101TMM - Modelování struktury v UML
21
Diagram tříd – „property strings“
Richta: Podklady z přednášek na BI
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 - Modelování struktury v UML
22
Diagram tříd – „property strings“
Specializace vztahu {redefines}
Richta: B101TMM - Modelování struktury v UML
20
Diagram tříd – „property strings“
Diagram tříd – „property“
Richta: B101TMM - Modelování struktury v UML
23
Omezení specializace konce vztahu {subsets }, {union}, {bag}, {sequence}, {ordered}, …
Richta: B101TMM - Modelování struktury v UML
24
4
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Diagramy kompozitní struktury
Richta: B101TMM - Modelování struktury v UML
25
Diagramy kompozitní struktury
Richta: B101TMM - Modelování struktury v UML
27
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
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 28
Část (Role, Part)
Notace diagramů kompozitní struktury
Richta: B101TMM - Modelování struktury v UML
26
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
Richta: B101TMM - Modelování struktury v UML
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
29
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 - Modelování struktury v UML
30
5
B101TMM – Techniky a metody modelování požadavků Modelování struktury
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
Port
asociace je vztah mezi klasifikátory konektor je vztah mezi rolemi (party)
Př.: motor pohání přední kola (:powers)
Richta: B101TMM - Modelování struktury v UML
31
Příklad použití portu
Richta: B101TMM - Modelování struktury v UML
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.
32
Richta: B101TMM - Modelování struktury v UML
Kompozitní struktura bytu
33
Stavové diagramy
34
Richta: B101TMM - Modelování struktury v UML
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 - Modelování struktury v UML
Richta: Podklady z přednášek na BI
35
Richta: B101TMM - Modelování struktury v UML
36
6
B101TMM – Techniky a metody modelování požadavků Modelování struktury
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)
37
Richta: B101TMM - Modelování struktury v UML
Jak se stavový stroj chová?
Jednoduchý případ
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.
1. 2.
3. 4.
5.
39
Richta: B101TMM - Modelování struktury v UML
Případ závor
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
Richta: B101TMM - Modelování struktury v UML
Žádný stav není aktivní. Nastala událost spouštějící činnost stroje – na haldě událostí je jen jedna událost. Protože není žádný aktivní stav, vybere se počáteční stav a aktivuje se. 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“. 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čí.
40
Časové události
Všechny stavy jsou jednoduché (simple) a nemají žádný region.
Vstupní aktivita (entry point)
38
Richta: B101TMM - Modelování struktury v UML
Výstupní aktivita (exit point)
41
Richta: B101TMM - Modelování struktury v UML
42
7
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Vstupní a výstupní aktivity
Richta: B101TMM - Modelování struktury v UML
Pořadí provádění akcí
43
Vnitřní přechody
spouští paralelní vlákno prováděné dokud: - akce neskončí - nedojde k přechodu do jiného stavu (signálem)
45
Podmíněné přechody
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
44
Vnitřní aktivity („do“ aktivity)
Nedochází k přechodu do jiného stavu
Richta: B101TMM - Modelování struktury v UML
Richta: B101TMM - Modelování struktury v UML
Richta: B101TMM - Modelování struktury v UML
46
Podmíněné větvení (zkratka)
47
Richta: B101TMM - Modelování struktury v UML
48
8
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Hierarchické automaty
Richta: B101TMM - Modelování struktury v UML
Skupinové přechody
49
Samovolný přechod
Richta: B101TMM - Modelování struktury v UML
50
Spouštěcí pravidla
více přechodů může mít stejný signál - vnitřní mají přednost Richta: B101TMM - Modelování struktury v UML
51
Pořadí provádění akcí
Richta: B101TMM - Modelování struktury v UML
Historie ve stavových diagramech
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
52
53
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 - Modelování struktury v UML
54
9
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Historie
Richta: B101TMM - Modelování struktury v UML
Ortogonální regiony
55
56
Čeká se na doběhnutí obou automatů
Automaty v regionech běží paralelně
Richta: B101TMM - Modelování struktury v UML
Richta: B101TMM - Modelování struktury v UML
57
Richta: B101TMM - Modelování struktury v UML
58
Doplňky ke stavovým diagramům
Příklad
Přechod může být ohodnocen:
událost(parametry)[podmínka]/akce^zpráva
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
59
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 - Modelování struktury v UML
60
10
B101TMM – Techniky a metody modelování požadavků Modelování struktury
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“
Richta: B101TMM - Modelování struktury v UML
Definice komponenty
61
Příklad diagramu komponent
Richta: B101TMM - Modelování struktury v UML
Richta: B101TMM - Modelování struktury v UML
63
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
64
Datově orientovaná analýza
notace konceptuální model tříd nebo ER-model (diagramy + textový popis) další integritní omezení, která nejsou zachycena v diagramech datový slovník
Richta: B101TMM - Modelování struktury v UML
62
Diagram komponent
Datový model
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).
65
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 - Modelování struktury v UML
66
11
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Datově orientovaná analýza
Postup datově orient. analýzy
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.
1. 2.
3. 4.
5. 6.
67
Richta: B101TMM - Modelování struktury v UML
kandidáti na typy objektů (entity), kandidáti na vlastnosti objektů (atributy), ostatní (kandidáti na aktéry, smetí).
69
Richta: B101TMM - Modelování struktury v UML
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
68
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ů.
Doporučení č.1: Analyzujeme odborný článek, vybereme všechna podstatná jména. Roztřídíme je do skupin:
Richta: B101TMM - Modelování struktury v UML
Příklad: Odborný článek pro „Výtah“
Jak hledat data?
Seznam událostí, kontext, datový slovník Identifikace dat, která s událostí souvisí (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 - Modelování struktury v UML
70
Kandidáti na aktéry 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 - Modelování struktury v UML
Richta: Podklady z přednášek na BI
pasažér indikace přetížení motor indikace aktuální polohy (patra) tlačítko STOP operátor výtahu tlačítko ON/OFF
71
Richta: B101TMM - Modelování struktury v UML
72
12
B101TMM – Techniky a metody modelování požadavků Modelování struktury
class Vytah
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)
Stav + +
-1..getPocetKleci()
getPocetPater() : i nt getPocetKleci() : i nt
indikace přetížení
Motor
«enumeratio... Klec + + +
-2..getPocetPater()
signál alias povel (pro motor)
«enum» cislo
nahoru() : void dol u() : voi d stop() : voi d
«enumerati o... Patro
povel UP
«enum» ci slo
povel DOWN
«metaclass» Panel
«container» Pozadav ky
povel STOP klec panel s tlačítky pater
+getPocetPater()
2
tlačítko STOP (jde mimo systém)
Tlačítko_přiv olání -
Tlačítko_patra
směr: char
tlačítko ON/OFF alias požadavek na zastavení pohybu
-
klec: int
Pozadav ek_na_priv olani
Pozadav ek_na_patro
«metacl ass» Tlačítko -
73
Něco diagramem vyjádřit nelze
patro: int
74
Richta: B101TMM - Modelování struktury v UML
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 -
Tlačítko_patra -
Richta: B101TMM - Modelování struktury v UML
0..*
Panel_v _kleci
Pozadav ek
indikace aktuální polohy
Richta: B101TMM - Modelování struktury v UML
1
1
1 Panel_v _patre
75
klec: int
patro: i nt
Tlačítko_přiv olání -
směr: char
<> -- Směr může být UP nebo DOWN context Tlačítko_přivolání i nv: směr in (UP,DOWN) -- pro směr nahoru nelze použít poslední patro context Tlačítko_přivolání i nv: směr = UP im plies patro < getPocetPater()-1 -- pro směr dolů nelze použít nejnižší patro context Tlačítko_přivolání i nv: směr = DOWN implies patro > 0
Richta: B101TMM - Modelování struktury v UML
Jak hledat data?
Příklad: Události pro ECO sklad
Doporučení č.2: Analyzujeme seznam událostí, rozpoznáváme data, která s událostmi souvisí. Roztřídíme je do skupin:
76
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
kandidáti na typy objektů (entity), kandidáti na vlastnosti objektů (atributy).
Richta: B101TMM - Modelování struktury v UML
Richta: Podklady z přednášek na BI
77
Richta: B101TMM - Modelování struktury v UML
78
13
B101TMM – Techniky a metody modelování požadavků Modelování struktury
Datový model pro ECO-sklad (1.)
Kandidáti na typy dat dodací list barel typ chemikálie rozdíly v přejímce nelze uložit příkaz pro skladníka
Richta: B101TMM - Modelování struktury v UML
79
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 Richta: B101TMM - Modelování struktury v UML
81
Richta: Podklady z přednášek na BI
komunikace
interface
Richta: B101TMM - Modelování struktury v UML
82
Příklad diagramu nasazení
Příklad diagramu nasazení
Richta: B101TMM - Modelování struktury v UML
80
Richta: B101TMM - Modelování struktury v UML
83
Richta: B101TMM - Modelování struktury v UML
84
14
B101TMM – Techniky a metody modelování požadavků Modelování struktury
The End
85
Richta: Podklady z přednášek na BI
15