Architektura softwarových systémů Ing. Jiří Mlejnek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze © Jiří Mlejnek, 2011
[email protected] Softwarové inženýrství BI-SI1 LS 2011/ Před. 5 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Obsah ●
Přechod od analýzy k návrhu
●
Návrhová rozhodnutí
●
Architektury
●
Třívrstvá architektura
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
2
Přechod od analýzy k návrhu ●
●
Analýza –
Co?
–
Analytik
–
Analytická dokumentace
Návrh (Design) –
Jak?
–
Solution Architekt
–
Návrhová dokumentace (prováděcí)
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
3
Přechod od analýzy k návrhu ●
Pracovní postupy –
Volba a popis architektury
–
Volba a popis způsobu uložení dat
–
Vytvoření návrhového modelu tříd ● ●
–
Upřesnění atributů – datové typy Přiřazení zodpovědností softwarovým třídám
Mapování případů užití na komunikaci softwarových tříd ● ●
Sekvenční diagramy Diagramy spolupráce
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
4
Přechod od analýzy k návrhu ●
Návrh
●
Analýza
–
Architektura
–
Vize, obecné požadavky
–
Způsob uložení dat
–
Analytický doménový model
–
Návrhový model tříd
–
Analytický doménový model
–
Model komunikace
–
Model případů užití
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
5
Přechod od analýzy k návrhu
Dotazy?
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
6
Návrhová rozhodnutí ●
Technologie - implementační jazyk
●
Způsob ukládání dat
●
Frameworky
●
Architektura
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
7
Návrhová rozhodnutí ●
Volba implementačního jazyka –
Procedurální ● ●
–
C Skriptovací jazyky
Objektově orientované ● ● ●
Java C# C++
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
8
Návrhová rozhodnutí ●
Volba implementačního jazyka –
Procedurální ● ●
–
Vhodné pro nízkoúrovňové programování Pro rozsáhlé IS nevhodné
Objektově orientované jazyky ● ●
Většina dnes vyvíjených systémů Dále se budeme zabývat pouze OO přístupem
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
9
Návrhová rozhodnutí ●
Volba implementačního jazyka –
Znalosti vývojového týmu
–
Dostupnost potřebných frameworků
–
Požadavky na přenositelnost (Java)
–
Zaměření na OS Windows (.NET)
–
Nízké nároky na webhosting (PHP)
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
10
Návrhová rozhodnutí ●
Volba způsobu uložení dat –
Relační databáze ● ● ●
–
Objektová databáze ● ● ●
–
MySQL PostgreSQL OracleSQL Gemstone Caché Versant
Soubory
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
11
Návrhová rozhodnutí ●
Volba způsobu uložení dat –
Relační databáze ●
Výhody – – –
●
Nejrozšířenější způsob Mnoho výrobců Standard SQL
Nevýhody –
Nutnost mapování objektů do relační databáze
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
12
Návrhová rozhodnutí ●
Volba způsobu uložení dat –
Objektové databáze ● ●
–
Odpadá problematika mapování objektů do relací Prozatím málo rozšířené
Objektově relační ●
Relační databáze rozšířená o objektové rysy – –
Uživatelsky definované typy Kolekce
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
13
Návrhová rozhodnutí ●
Podklady pro rozhodování –
Obecné (nefunkční) požadavky
–
Možný budoucí rozvoj systému
–
Znalosti dostupných lidských zdrojů
–
Rozpočet (licence, robustnost řešení)
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
14
Návrhová rozhodnutí
Dotazy?
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
15
Architektury ●
●
Logické –
Organizace softwarových tříd do balíčků, jmenných prostorů
–
Uspořádání balíčků do vrstev, podsystémů
Fyzické (nasazení) –
Rozložení komponent na výpočetní uzly ● ●
–
Tenký klient Tlustý klient
Bude probíráno později
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
16
Architektury ●
Notace – diagram balíčků UML –
Balíček
–
Závislost
pkg Package diagram Balíček A
Balíček B
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
17
Architektury ●
Diagram balíčků –
způsoby zobrazení vnoření
pkg Package diagram v noření
pkg Package diagram v noření Balíček A
Balíček B
Balíček C
pkg Balíček A
Balíček A
Balíček A Balíček B
Balíček C
+ Bal íč ek B + Bal íč ek C
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
18
Architektury ●
Roury a filtry (Pipes and filters)
●
Servisně orientovaná architektura (SOA)
●
Vícevrstvé –
Monolitická aplikace
–
Dvouvrstvá
–
Třívrstvá
–
Vícevrstvá
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
19
Architektury ●
Roury a filtry –
Rozdělení na nezávislé komponenty
–
Každá komponenta provádí specifickou transformaci dat
–
Příklad - unixové filtry
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
20
Architektury ●
Servisně orientovaná architektura –
Orientována na služby
–
Integrace nezávislých systémů
–
Bude popsáno později
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
21
Architektury ●
Vícevrstvé –
Monolitická (jednovrstvá) ● ● ●
Prototypy Rychlý počáteční rozvoj Složitá udržovatelnost
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
22
Architektury ●
Vícevrstvé - monolitická (jednovrstvá)
$link = mysql_connect("localhost","root","") $result = mysql_query("select * from Zprava,$link); while ($row = mysql_fetch_array($result)) { echo ("
$row["Nadpis"]
"); echo ("
$row["Text"]
"); } mysql_close($link); ?>
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
23
Architektury ●
Vícevrstvé - dvouvrstvá architektura –
Vhodná pro CRUD aplikace
–
Vrstvy ● ●
Prezentační Datová
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
24
Architektury ●
Dvouvrstvá architektura – prezentační vrstva
$zpravaDAO = new ZpravyDAO(); $zpravy = $zpravaDAO->vratZpravy(); foreach ($zpravy as $zprava){ echo "
".$zprava->vratNadpis().""; echo "
".$zprava->vratText()."
"; } ?>
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
25
Architektury ●
Dvouvrstvá architektura – datová vrstva
class ZpravaDAO { public function vratZpravy(){ $result = mysql_query("select * from Zprava",getLink()); $i=0; while ($row = mysql_fetch_array($result)) { $zpravy[$i]=new Zprava($row["Nadpis"],$row["Text"]); $i++; } return $zpravy; } }
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
26
Architektury ●
Třívrstvá architektura –
Vhodná pro složitější (enterprise) aplikace
–
Vrstvy ● ● ●
Prezentační Business (doménová) Datová
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
27
Architektury ●
Třívrstvá architektura striktní –
Závislost vždy směrem dolů
–
Pouze o jednu úroveň
pkg Třív rstv á architektura Prezentační
Business
Datov á
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
28
Architektury ●
Třívrstvá architektura – relaxovaná –
Závislost vždy směrem dolů
–
Přes libovolný počet úrovní
pkg Třív rstv á architektura Prezentační
Business
Datov á
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
29
Třívrstvá architektura ●
Výhody –
Oddělení business logiky od prezentační vrstvy
–
Nezávislost business logiky na způsobu uložení
–
Snadná výměna jednotlivých vrstev
–
Jednoduché testování
–
Více různých prezentačních vrstev
–
Znovupoužitelnost
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
30
Třívrstvá architektura
Dotazy?
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
31
Děkuji za pozornost.
Ing. Jiří Mlejnek (FIT ČVUT) BI-SI1, 2011 Před. 5 - Architektura softwarových systémů
32