Architektura softwarových systémů, význam a součásti architektury, formy popisu architektury, architektonické styly.

Architektura softwarových systémů, význam a součásti architektury, formy popisu architektury, architektonické styly.

Proč – vize

Co – požadavky

Použité technologie

Jak – návrh

Architektura definuje funkční členění systému, závislosti jednotlivých částí systému a použité technologie. Architektura systému je vždy jen jedna. 

Umožňuje myšlenkové pochopení návrhu velmi složitých systémů.

Okolí systému – vazby, důvody pro některá rozhodnutí

Výběr technologie

Zkušenosti, existující komponenty, make vs buy decision, …

Nutnost ověřit užitečnost návrhu – proof of concept, oponentura, …

Referenční architektura (MVC, MVVM)

Funkční členění architektury

Modul je základní stavební jednotkou subsystémů. Subsystémy jsou funkčně soudržné celky často vázané na jednoho aktéra.

UML (class diagram, component diagram,…),  layer diagram

Třívrstvá – aplikační, prezentační a datová vrstva

MVC – není třívrstvé, ale trojúhelníkové. Třívrstvá by byla MVVM.

Vrstvená – více vrstev nad sebou

SOA – service oriented architecture

Klíčová rozhodnutí

Proč - vize

Co - požadavky

Klíčové aspekty organizace

Jak je systém členěn, jak a proč dělá to co dělá

Hrubé členění nasubsystémy, závislosti a rozhrani mezi nimito spíš

Mimofunkční aspekty…


Co architektura dělá

Systém má vždy právě jednu architekturu (může integrovat více stylů)

Umožňuje myšlenkové pochopení návrhu velmi složitých systémů

Stanovuje základní kameny návrhu a základní směry vývoje a údržby  

 okolí systému => vazby, důvody pro některá rozhodnutí

Navíc oproti vizi a požadavkům

Aspekty: logická struktura, procesní pohled, varianty nasazení, datová integrace, bezpečnost, provoz a podpora, provozní infrastruktura, rozhraní

Výběr technologie, omezení

Použití frameworků a již hotových komponent

Faktory ovlivňující/omezující výběr technologie

Nutno ověřit užitečnost návrhu

Návrh na základě klíčových use cases a mimofunkčních požadavků

Referenční architektura

Referenční architektura

UML: implementation view (koomponenty), logical view (třídy, balíky), process view (interakce, stavový model)

Funkční členění

Subsystém, modul = skupina souvisejících prvků implementace tvořící funkční celek

Vícenásobně použitelné, volně vázané části

Celky vhodné pro vývoj a údržbu

Funkčně soudržné (lokalita změn)

Často vázané na jednoho aktéra

Základní stavební jednotka subsystémů

Snaha o vícenásobnou použitelnost

Logická struktura subsystémů = moduly a jejich vnitřek, balíky tříd, třídy (low level architektura), jejich vztahy; Komunikace mezi moduly = ROZHRANÍ!!!!!!!!!!!!!

Součásti

konvence a politiky (pravidla pro návrh, dodržují všichni vývojáři)

Funkční, procesní, datová, aplikační

členění, doménová analýza:

logické členění (např. do balíků)

balík – skupina souvisejících tříd, tvořící organizační celek, mapování do jazyka (balík vytváří jmenný prostor), hierarchické vnořování

třídy v balíku funkčně příbuzné

vhodné protože bude přehled o systému a snadné rozdělení implementace mezi členy týmu

analytický model tříd je příliš rozsáhlý -> lepší jej členit

funkční členění do subsystémů

subsystém = skupina souvisejících balíků a/nebo tříd tvořící funkční celek

vhodné, protože monolitická aplikace není praktická

buď je to dopředu zřejmé (jednoduché, architektonické styly)

na základě objektového modelu (nutno vidět všechny třídy a vazby, pak shluk těsně vázaných tříd je kandidátem)

na základě případů užití

Modely - UML, Layer diagramy, …

UML, Unified Modeling Language je v softwarovém inženýrství grafický jazyk pro vizualizaci, specifikaci, navrhování a dokumentaci programových systémů. UML nabízí standardní způsob zápisu jak návrhů systému včetně konceptuálních prvků jako jsou business procesy a systémové funkce, tak konkrétních prvků jako jsou příkazy programovacího jazyka, databázová schémata a znovupoužitelné programové komponenty.

UML podporuje objektově orientovaný přístup k analýze, návrhu a popisu programových systémů. UML neobsahuje způsob, jak se má používat, ani neobsahuje metodiku(y), jak analyzovat, specifikovat či navrhovat programové systémy.

Standard UML definuje standardizační skupina Object Management Group (OMG).

Vrstvení - funkce jsou uspořádány do několika vrstev tak, že funkce vyšší vrstvy mohou využívat pouze funkcí podřízených vrstev.

Dvouvrstvá (lehký/těžký klient)

Třívrstvá  je nejběžnějším případem vícevrstvé architektury.

Prezentační vrstva

Aplikační vrstva (též Business Logic)

Porovnání třívrstvé s architekturou MVC

Model-view-controller má trojúhelníkovou topologii (ne třívrstvou) – pohled je obnovován (aktualizován) přímo modelem, na příkaz řadiče.

Architektura distribuovaných systémů

Filosofický přístup k architektuře/ jednotící architektura: Service-oriented architecture (SOA) 


Dle přednášek:

Oddělení prezentace, business logiky a datové části

Delegování na podřízené

Prezentace / řízení / doména / business služby / technická infrastruktura / knihovní třídy / systémové…

Další architektonické styly
