1
Diagramy sekvencí
2
Diagram sekvencí (sequence diagram)
Zobrazuje, jak objekty spolupracují Na rozdíl od stavového diagramu zachycují
komunikaci více objektů Popisuje zprávy mezi objekty – jaké zprávy,
komu a kdy jsou zasílány Interakce mezi objekty probíhají v čase
(začátek, konec interakce) Časová osa je v diagramu vnímána shora
dolů
3
Kreslení diagramu sekvencí
Objekty v diagramu se kreslí jako obdélníky s (podtrženým) názvem (v ArgoUML bez podtržení za lomítkem) v horní části diagramu
Objekty se kreslí vedle sebe Zprávy jsou zachyceny jako plné šipky Čas zachycen vertikálně (plyne shora dolů) – od
každého objektu vede dolů svislá přerušovaná čára – životočára
Na životočáře je obdélníček – značí aktivaci objektu – ta představuje vykonání operace, kterou má objekt za úkol provádět – výška obdélníku značí délku aktivace objektu
4
Příklad diagramu
5
Zprávy
Jednoduchá zpráva – přechod řízení z jednoho objektu na druhý (kreslí se jako obyčejná šipka)
Synchronní zpráva – odesílající objekt čeká, dokud nedostane odpověď od objektu, kterému posílá zprávu (kreslí se jako šipka s vyplněným hrotem)
Asynchronní zpráva – odesílající objekt na nic nečeká a pokračuje (kreslí se jako šipka s polovinou hrotu – v ArgoUML jako obyčejná šipka)
6
Čas
Čas plyne shora dolů Zpráva zakreslená výše byla odeslána dříve,
než zpráva zakreslená níže Různé stavy daného objektu je možné
zachytit jako různé objekty Nebo lze vytvořit hybridní diagram, kde jsou
jednotlivé stavy zachyceny na jedné životočáře
7
Diagram sekvencí a případy užití
• Diagram sekvencí může zachycovat interakce, ke kterým dochází v rámci určitého případu/případů užití, např.:
8
Instanční a generické diagramy sekvencí
Instanční diagram sekvencí – popisuje jediný scénář (jednu instanci) celého případu užití
Generický diagram sekvencí – zachycuje různé (pokud možno všechny) scénáře, tj. různé instance celého případu užití – nutnost stanovit podmínky odesílání zpráv v různých scénářích
9
Vytvoření a zrušení objektu v sekvenci
V systémech běžně objekty vznikají a zanikají (např. nabídky, dočasné soubory,…)
Vznik objektu v objektovém programování iniciuje konstruktor - v ArgoUML vložení Create Action
Zrušení objektu v objektovém programování iniciuje destruktor - v ArgoUML vložení Destroy Action
10
Vytvoření a zrušení objektu
11
Rekurze
Někdy dochází k tomu, že objekt posílá zprávu sám sobě – dochází k rekurzi (k rekurentnímu volání sama sebe)
V diagramu sekvencí se rekurze naznačí šipkou, která začíná i končí ve stejném objektu, příp. směřuje k obdélníčku, který překrývá aktivaci
12
Příklad rekurze a podmínky
13
Diagramy činnosti
14
Diagram činnosti (activity diagram)
Jde jiný pohled na stavový diagram Stavový diagram se soustřeďuje na objekt,
který se mění při nějakém procesu Diagram činnosti se soustřeďuje na tok
činností, které probíhají při nějakém procesu – ukazuje, jak tyto činnosti na sobě závisí
Může zobrazovat činnosti i ve vztahu k uživatelským rolím
15
Diagram činnosti (activity diagram)
činnost nebo stav
počáteční stav
koncový stav
přechod mezi stavy
role
rozhodování
16
Kreslení rozhodování
Rozhodování se zakreslí: − oddělenými šipkami vedoucími z jedné činnosti
nebo − použije se diagram pro větvení - kosočtverec
Ke každé větvi je nutné připsat podmínku do hranatých závorek
Druhý způsob je přehlednější
Paralelní dráhy
K popisu činností, které provádějí jednotlivé role je možné zakreslit paralelní dráhy
Paralelní dráha pro danou roli je zakreslena jako obdélník, ve kterém jsou zakresleny ty činnosti, které provádí daná role
Název role je v záhlaví obdélníku
17
18
Souběžné cesty
Někdy je potřeba rozdělit tok činností do několika větví, které se budou vykonávat souběžně
Rozdělení se provede pomocí diagramu Fork
Po provedení souběžných činností se tok opět spojí pomocí diagramu Join
Souběžné cesty
20
Použití proměnných
Pokud diagram zachycuje provedené určité operace (např. výpočet hodnoty funkce,…), je třeba zachytit stav pomocí určitých proměnných: − název proměnné, která má obsahovat
návratovou hodnotu − := (symbol přiřazení) − výsledek – příp. vypočtený pomocí konkrétní
metody, včetně parametrů (tj. signaturu) V ArgoUML se podobná přiřazení zapisují do
těla skriptu v EntryAction u dané činnosti
Použití proměnných
22
Diagramy spolupráce
23
Diagram spolupráce (collaboration diagram)
Zachycuje podobné informace jako sekvenční diagram - je významově ekvivalentní diagramu sekvencí (jeden diagram lze převést na druhý)
Klade důraz na objekty (třídy) místo na čas, kdy jsou odesílány zprávy
Zdůrazněna je komunikace objektů pomocí zpráv Jednotlivé zprávy mezi objekty (třídami) jsou
číslovány Je rozšířením diagramu objektů
24
Kreslení diagramů sekvencí
Objekty v diagramu se kreslí jako obdélníky s (podtrženým) názvem
Vztahy mezi objekty zachycuje plná čára (příp. s orientací)
Zprávy mezi objekty se zakreslí pomocí šipky, která směřuje k cílovému objektu – šipka je popsána názvem zprávy – v závorkách lze případně zapsat parametry zprávy
Pořadí zasílání zpráv se značí pomocí číslic před názvem zprávy a dvojtečkou
25
Příklad
26
Zachycení stavů objektů
Zakreslete objekt – k jeho názvu připište do hranatých závorek název stavu
Tentýž objekt v dalším stavu zachytíte jako nový objekt s názvem stavu opět v hranatých závorkách
Přechod z jednoho stavu do druhého zachytíme pomocí přerušované šipky (zachycuje závislost) označené např. stereotypem <<stane se>>
27
Zobrazení stavů objektů
28
Podmínky a opakování
Podmínka se zapisuje do hranatých závorek vlevo od čísla zprávy
Opakování zprávy označíme hvězdičkou před závorkou s podmínkou
Jednotlivé zprávy mohou být jen pojmenovány nebo mohou přímo obsahovat konkrétní akci, a to včetně příslušných parametrů.
29
Příklad
30
Více cílových objektů
Pokud má objekt zprávou oslovit více objektů najednou, pak: − u zprávy použijeme opakování (hvězdičku s
podmínkou v hranatých závorkách) − jako cíl zakreslíme tři částečně se překrývající
objekty
31
Příklad oslovení více objektů najednou
32
Znázornění vrácených výsledků
Pokud zpráva oslovuje druhý objekt s tím, že požaduje navrácení určité hodnoty, ze to v UML znázornit takto – do názvu zprávy se uvede: − název proměnné, která má obsahovat
návratovou hodnotu − := (symbol přiřazení) − výsledek – příp. vypočtený pomocí konkrétní
metody, včetně parametrů (tj. signaturu)
33
Příklad vracení hodnoty
34
Aktivní objekt
Řízení komunikace mezi objekty může někdy záviset na jednom aktivním objektu, který zasílá zprávy ostatním objektům
Aktivní objekt označujeme silnějším rámečkem kolem objektu
Pokud to v UML editoru nelze provést (ArgoUML), můžeme jej odlišit např. barevně
Pokud dva aktivní objekty vykonávají stejnou činnost, hovoříme o souběžnosti
35
Synchronizace objektů
Pokud je třeba zachytit synchronní odeslání zprávy až poté, co byly odeslány jiné zprávy, je možné seznam čísel těchto zpráv oddělených čárkami uvést na začátku synchronizované zprávy a oddělit od názvu zprávy lomítkem
36
Diagramy komponent
Diagram komponent (component diagram)
• Týká se počítačových systémů • Vývoj programů probíhá často po
jednotlivých komponentách • Komponenty mají rozhraní a spolupracují
spolu pomocí těchto rozhraní • Na vývoji tak mohou spolupracovat týmy lidí • Rozhraní umožňují komunikovat i zcela
odlišným aplikacím
Diagram komponent (component diagram)
objekt
komponenta závislost
Co je komponenta?
• Je to fyzická součást systému (kus softwaru nebo hardwaru)
• Lze si ji představit jako softwarovou (nebo hardwarovou) implementaci třídy nebo (a to zpravidla) několika tříd
• Umožňuje opakované použití • S okolím komunikuje pomocí rozhraní
Proč modelovat komponenty?
• Aby zákazník mohl vidět strukturu hotového systému
• Aby vývojáři dopředu věděli, co a s čím budou dělat
• Aby osoby pověřené sepsáním dokumentace věděly, o čem psát
• Abychom si sami usnadnili opakované použití komponent
Komponenty a rozhraní
• Rozhraní (viz diagramy tříd) si lze představit jako sadu operací, které třída (zde komponenta) nabízí okolnímu světu
• Okolní svět komunikuje s komponentou přes rozhraní • V UML není prakticky rozdíl mezi rozhraním komponenty a
rozhraním třídy • Realizace je vztah mezi komponentou a jejím rozhraním • Komponenta může zpřístupnit své rozhraní dalším
komponentám, které toto rozhraní mohou použít – hovoříme o exportním rozhraní
• Pokud některá komponenta používá služby (rozhraní) jiných komponent, říkáme, že používá importní rozhraní
Nahrazování a opakované použití komponent
• Jednu komponentu můžeme nahradit jinou komponentou, pokud používají stejné rozhraní
• Pokud chceme vytvořit komponentu, která je opakovaně použitelná v různých systémech, je nutné, aby k jejímu rozhraní mohlo přistupovat co největší množství dalších komponent
• Pokud je k dispozici model rozhraní komponenty, pak není nutné procházet zdrojové texty, pokud budeme chtít danou komponentu použít
Typy komponent
• Rozmisťované komponenty – tvoří základ spustitelných systémů (např. .exe nebo .dll soubory, prvky ActiveX, Java Beans, .py soubory pro Python, ...)
• Podpůrné komponenty – z nich se vytváří rozmisťované komponenty (např. datové soubory, soubory se zdrojovým kódem, .pyc soubory pro Python (někdy ale .pyc soubor může být chápán jako rozmisťovaná komponenta),...)
• Prováděcí komponenty – vznikají až za běhu systému (dočasné soubory,...)
44
Kreslení diagramů komponent
Kreslení rozhraní
Zakreslení závislostí
47
Diagramy nasazení
Diagram nasazení (deployment diagram)
Umožňuje zachytit fyzickou architekturu (počítačového) systému
K zachycení částí systému se využívajíí diagramy komponent
Je možné zachytit jednotlivé vztahy, vazby, závislosti i fyzické spojení
Diagram nasazení (deployment diagram)
uzel
komponenta
spojení
vazba
Uzly
• Uzel – hlavní prvek diagramu nasazení • V diagramu se znázorňuje jako kvádr • Uzel většinou v diagramu nasazení
reprezentuje hardwarový prvek • Uzel jako hardwarový prvek může být typu:
– procesor – uzel, který umí spouštět komponentu – zařízení – neumí spouštět komponentu – často
představuje způsob rozhraní s vnějším světem • Název uzlu může obsahovat i název balíčku
(pokud je uzel součástí balíčku)
Znázornění typů uzlů
Diagram nasazení v UML
• Diagram nasazení ukazuje, jak bude (fyzický) systém vypadat po sestavení
• V diagramu je možné použít i jiné symboly podle potřeby (např. ikonu serveru, switche, tiskárny,...) – tj. vlastně grafické stereotypy
• Ortodoxní UML diagramy je možné smíchat s jinými diagramy – cílem je přehlednost
53
Literatura
1. Enterprise Architect. Dostupné z: http://www.sparxsystems.com.au/
2. Schmuller, J. Myslíme v jazyku UML: knihovna programátora. 1. vyd. Grada Publishing. Praha: 2001. ISBN 80-247-0029-8.
3. Miller, R. Practical UML: A Hands-On Introduction for Developers. URL: http://dn.codegear.com/article/31863
4. UML Resource Page. URL: http://www.uml.org/