Architektura softwaru Logická architekura a UML Package Diagramy 02-2007 David Toth
P echod od analýzy k návrhu • Od specifikace požadavk • (požadavky – v r zných modelech a – na r zných úrovních – r zného typu, – pro r zné typy uživatele systému)
(c) David Toth
2
Architektura systému • Analýza Návrh • Stanovení základní podoby systému • Roz len ní požadavk podle souvisejících funkcí • Rozd lení systému na logické jednotky – jednotky nazýváme vrstvy – strukturní vzor vrstev
• robustnost, rozši itelnost, udržovatelnost (c) David Toth
3
SW architektura • Vytvá í se na základ – nefunk ních požadavk • UP artefakt Supplementary Specification
• Je popsána v SAD (SW Arch. Doc.) – Klí ové aspekty architektury – Architekturních rozhodnutí
(c) David Toth
4
(c) David Toth
5
Architektura • Logická – UML Package diagramy – Organizace myšlenek
• Fyzická – UML Package a Deployment diagramy – Organizace fyzických sou ástí systému
• V Jav posta í pouze Package Diagramy (c) David Toth
6
Co je Logická Architektura SW? • Organizace SW t íd do vyšších celk – balí ky, subsystémy, vrstvy
• Platformová nezávislost – OS, HW, sí ové protokoly – tato rozhodnutí p ináležejí do fyzické architektury
(c) David Toth
7
(c) David Toth
8
Co je to vrstva? • Sjednocení SW t íd, podsystém , balí k • Shlukování prvk /element podle funkcionality • P edstavuje pohled na ást systému, která logicky souvisí
(c) David Toth
9
Vrstvy – nižší a vyšší • Nižší vrstvy – jsou blíže HW – (vrstvy: Foundation, Technical Services)
• Vyšší vrstvy – jsou blíže uživateli – (vrstvy: UI, Aplika ní, Doménová)
(c) David Toth
10
Základní 3 vrstvy • UI • Doménová – konceptuální objekty
• Technické služby – napojení do DB, logging, …
(c) David Toth
11
Striktn vrstvená architektura • Každá vrstva smí komunikovat, resp. vid t pouze objekty z nejbližší vrstvy nižší a vyšší – Návrh komunika ních protokol – ISO OSI
(c) David Toth
12
Relaxovaná architektura • Vyšší vrstva komunikuje s n kolika vrstvami nižšími • Reáln použitelný model pro návrh IS
(c) David Toth
13
SW architektura • Souhrn podstatných rozhodnutí o organizaci SW systému • Výb r strukturních element + rozhraní • Chování element popsáno interakcí • Hierarchická kompozice • Architekturní styl • Obecn : Pohled z vyšší perspektivy (c) David Toth
14
balí ek • Vysoko-úrov ová jednotka organizace sys • UML Package je nadmnožinou Java Pack • Balí ek shrnuje – SW t ídy – Další balí ky – Subsystémy – Cokoli speciáln vy len ného
(c) David Toth
15
Jmenný prostor • Balí ek reprezentuje namespace, proto – více t íd (obecn nižší element) m že mít stejné jméno, ale v r zných kontextech (balí cích) je od sebe bude možné odlišit – Každou t ídu je možné pln kvalifikovat :: • Nap .: java::util::Vector na rozdíl od zápisu v Jav , kde se píše java.util.Vector
• UML Balí ek se používá pro reprezentaci vrstev (c) David Toth
16
Layer pattern • Roz lenit systém do ástí z vyšší perspektivy • Vybrat logickou strukturu systému • Nesouvisející odd lit • Nižší vrstvy odpovídají nízko-úrov ovým (HW) službám • Vyšší vrstvy p edstavují abstrakci p ijatelnou pro lov ka (c) David Toth
17
Vrstvy: dobrý návrh • • • • •
Vrstvy propojujeme odshora dol Opa nému propojení se snažíme vyhnout Existují r zné metody, jak na to (Observer) Výsledkem je vrstvená architektura Aplikace, kde nejsou vrstvy, je bu – specializovaná nebo – naivní (c) David Toth
18
(c) David Toth
19
Výhody vrstev • Odd lení nesouvisejících ástí a p idružení souvisejících k sob – Srozumitelnost – Chyba je lokalizovaná, neší í se – Aplika ní logika a uživatelské rozhraní mohou být odd leny – více GUI pro jednu aplikaci – Vyšší znovu-využitelnost – nízko-úrov ových služeb: z nich se skládá aplikace stále dokola – Výhodné rozd lení práce mezi vývojá e (c) David Toth
20
(c) David Toth
21
ješt k výhodám vrstev • N která implementace vrstvy m že být nahrazena jinou implementací • N které vrstvy mohou být distribuované • Tvorba aplikace: – Propojení vrstev nižších do vyšších abstraktních celk
(c) David Toth
22
Odpov dnosti ve vrstvách • Odpov dnosti prvk (objekt ) ve vrstvách by m ly být co nejpodobn jší • V r zných vrstvách by m ly být umíst ny objekty s r znými odpov dnostmi
(c) David Toth
23
Základní architekturní principy • Separation of concerns • High cohesion (Low Coupling) • Model-view(-controller)
(c) David Toth
24
OOD: návrh SW • Pokusíme se podat odpov
na otázku:
– Jak provést p echod od analýzy k návrhu? – Co je a jak má být proveden objektový návrh?
• Návrh by mohl být proveden tak, že by – Jediná t ída realizovala celou aplikaci. – 2 t ídy realizovaly celou aplikaci. –… – Kolik se má tedy použít t íd a jak mají vypadat? (c) David Toth
25
Snižování sémantické mezery • Vytvo it objekty se – jménem podle skute né v ci – subjektu – obsahem podle reality – atributy p edstavují informaci o daném objektu – t mto objekt m p i adit odpov dnosti na základ podstaty ešeného problému
• Tyto objekty budou spadat do doménové vrstvy aplikace: doménové objekty (c) David Toth
26
Doménový model a vrstva • DM je shrnutí a visualisací podstatných koncept problémové domény – modeluje skute nost – je konceptuální perspektivou – sou ást analytické dokumentace
• Dom. vrstva je sou ástí SW – obsahuje SW t ídy – podle nich se vytvá ejí objekty – DV se Inspiruje z DM (c) David Toth
27
(c) David Toth
28
Mezera v reprezentaci • Na jedné stran zákazník pot ebuje IS pro zaznamenávání prodej • Na druhé stran tento SW je p edstavován n jakými nap ovými hodnotami, 0 a 1, kvantovými jevy, … • Objektová orientace mezi t mito sv ty vytvá í most – snadn ji uchopitelný a rychleji realizovatelný (c) David Toth
29
Tier a Layer • Tier byl d íve velmi používaným a citovaným termínem – p vodn byl pojímán jako logická ást SW – posléze se tém výhradn stal fyzickým ozna ením (pro client/server/DB node)
• Dnes se používá Layer a v UML node • V literatu e o architektu e SW se v tšinou používá termín tier (c) David Toth
30
Layer a partition • Pojmem Layer se rozumí vertikální ást architektury SW • Pojmem partition se naproti tomu v tšinou rozumí horizontální ást SW architektury – To jsou paralelní podsystémy v jedné vrstv
(c) David Toth
31
(c) David Toth
32
Nezobrazujte externí zdroje ve spodní vrstv logické architektury • Namísto toho celý systém se svými vrstvami v UML Package diagramech zapouzd ete jako komponentu a nechte ji v UML Deployment diagramu interagovat s dalšími komponentami (UML components) • Použijte UML component diagramu pro fyzické roz len ní systémových ástí – popis fyzické architektury systému (c) David Toth
33
(c) David Toth
34
Architekturní princip MV(C) • Strukturní (architekturální) vzor • Princip odd lení modelu od pohledu • eší díl í otázky – Jaký druh viditelnosti by m ly mít balí ky komunikující s UI? – Jak by m ly komunikovat ne-okenní t ídy s oknami?
(c) David Toth
35
Princip MV • UI objekty a ne-UI objekty nesmí být p ímo propojeny • Odd lením modelu a pohledu na n j dovolíme: – Vytvá et n kolik pohled na jeden model (www, swing, PDA) – Zm na v GUI neovlivní modelovaný problém
(c) David Toth
36
UI objekty • Samy nevykonávají vlastní práci • Pouze delegují (žádosti) práci do modelu • Slouží výhradn ke komunikaci s uživatelem • Nemají vedlejší funkce: zápis do DB, …
(c) David Toth
37
MV: model • Model je synonymem pro doménovou vrstvu, jak byla p edstavena • Komunikace Model Pohled – GoF vzor Observer (je vysv tlen v dalších kapitolách OOD)
• Pohled (View) je synonymem pro vrstvu UI – UI objekty: window, frame, button, textarea
(c) David Toth
38
Výhody použití vzoru MV • Podpora vývoje aplika ní logiky na rozdíl od zam ování se na UI, které m že být znovu-využito • Model a UI m že být vyvíjen odd len : rozhraní • Minimalizuje se nutnost vyhledávání ástí kódu, které bude t eba upravit p i zm n požadavk na aplikaci • P idání vzhledu, aniž by bylo nutné zasahovat do kódu aplika ní logiky • Více pohled jedné aplikace – runtime skin changing • Podpora spušt ní vrstvy modelu bez sou asného používání vrstvy UI (nap . vzdálen ) • Snadn jší portování vrstvy modelu na odlišný uživatelský framework (c) David Toth
39
Vzor MVC: historie • Smalltalk, 1980tá léta • Z p vodn jednoduchého principu odd lení modelu od pohledu se vyvinul dlouho používaný návrhový vzor ve Smalltalku – Ten se pak zjednodušil, zobecnil a za al se používat jako sturkturální vzor p i použití vrstev (c) David Toth
40
SSD: souvislosti • B hem analýzy byly vytvo eny SSD (System Sequence Diagrams: Sekven ní Diagramy Systémových Operací) • Vytvá ejí se pro vybrané scéná e n kterých uc • Tím byly identifikovány vstupní události systému od externích aktér – Systémové operace (c) David Toth
41
SSD: zobrazují systémové operace • V SSD jsou zobrazeny externí akté i a systém jako celek, p íp. jeho nejvýznamn jší pod ásti • V SSD je UI skryto – Práv UI to bude, které bude komunikovat s uživatelem a bude jeho požadavky delegovat doménové vrstv (DV) – Zprávy delegované od UI k DV budou práv ty, které jsou zobrazeny v SSD (c) David Toth
42
(c) David Toth
43
Konec • Zdroje: – Larman, C.: Applying UML and patterns: introduction to object-oriented analysis and design and iterative development, PTR, 2004
(c) David Toth
44