Architektura programových systémů
Dokumentace architektury programových systémů, návrh architektury, referenční architektury, architektonické vzory.
Definice softwarové architektury - „Softwarová architektura programu nebo programového systému je struktura nebo struktury systému, které tvoří softwarové komponenty, z vnějšku viditelné vlastnosti těchto komponent a vztahy mezi nimi.“
Dokumentace architektury programových systémů
Jak softwarovou architekturu popsat?
· Textem:
o použijeme-li přirozený jazyk ⇒ jednoduché, ale vágní a nejednoznačné,
o použijeme-li nepřirozený (formální) jazyk ⇒ jednoznačné, ale složité a nepřehledné.
· Obrázkem:
o přehlednější,
o nejlépe jako doplněk formálního popisu.
Diagramy komponent
· Vyjadřují (fyzickou) strukturu component 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“.
Co to je komponenta?
· Modulární, nasaditelná, nahraditelná a opakovaně použitelná část systému, která zapouzdřuje implementaci a zveřejňuje rozhraní.
· Komponenta je skupina objektů, které dohromady:
o poskytují určitá rozhraní pro externí objekty
o vyžadují určitá rozhraní od externích objektů (vyžadují součinnost)
· Na rozdíl od tříd, nemusí existovat instance komponenty (vyhýbají se nutnosti mít stav)
· Nedodává se obvykle ve zdrojovém tvaru, ale jako vykonatelný kód
· Často vyžaduje pro práci určité prostředí (např. kontejner)
Diagramy 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 - pak je označení podtrženo).
· 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.
Návrh architektury
· Definice komponent a vazeb mezi nimi.
· Celková struktura systému.
· Často ovlivněna nefunkčními požadavky na systém.
· „Mít architekturu“ se liší od „Mít známou architekturu“ – používají se pojmy:
· styl architektury
o Styl architektury je popis typů komponent a vzor jejich chování za běhu a/či přenosu dat.
o Soupis typů komponent a vazeb a vzor jejich chování za běhu systému.
o Lze jej chápat jako:
§ sadu omezení nad architekturou,
§ abstrakci pro množinu souvisejících architektur.
o Styl:
§ opakovaně se používá v praxi,
§ je souborem rozhodnutí ve fázi návrhu,
§ má známé vlastnosti umožňující jeho znovupoužití,
§ popisuje třídu architektur.
o Příklady stylů architektury:
§ klient-server,
§ centralizovaná data,
§ kooperativní zpracování
§ nezávislé komponenty:
· komunikující procesy, systémy řízené událostmi
§ datové toky:
· dávkové/sekvenční, roury a filtry
§ centralizovaná data:
· repozitář, tabule
§ virtuální stroj:
· interpret, systémy založené na pravidlech
§ zavolej službu a čekej:
· program/podprogram, OO, vrstvené systémy
§ …
· referenční model - Standardní dekompozice známého problému (funkčnosti, datových toků) na části. Např. umíte vyjmenovat standardní části kompilátoru? Pokud ano - znáte referenční model kompilátoru.
· referenční architektura
o Referenční model mapovaný na softwarové komponenty (které implementují funkcionalitu definovanou referenčním modelem) a datové toky mezi nimi.
o Umožňuje:
§ určení vývojového týmu,
§ vyhledávání již existujících komponent,
§ alokaci specifických znalostí a jiných zdrojů,
§ odhady nákladů a harmonogramu
Jaké má vlastnosti dobrá architektura
· Účelnost.
· Dosažitelnost za rozumný peníz.
· Dosažitelnost v rozumném čase.
Jednotkové operace
Jednotková operace je kodifikací operací návrhu, kterou lze použít přímo v architektuře.
Příklady:
· Abstrakce - vytváří virtuální stroj (komponentu, jejíž funkcí je skrýt svou implementaci).
· Kompozice, Komprese - kombinuje dvě komponenty do jediné.
· dekompozice typu část/celek - rozdělí velkou komponentu na menší části
· dekompozice typu generalizace/specializace - Každá subkomponenta představuje specializaci funkčnosti komponenty rodičovské.
· Replikace - je přesným duplikátem komponenty v rámci architektury
· sdílení zdrojů - zapouzdřuje buď data nebo služby a umožňuje je sdílet více nezávislými konzumenty.
Architektonické vzory
· Základem je pokus o konstrukci dostatečně pružné aplikace
· Proto se vyplatí oddělit správu dat obhospodařovaných danou aplikací, jejich prezentaci a vlastní řízení aplikace
· Toto rozdělení pak vyjádřit přímo architekturou aplikace


Architektonický vzor PAC
Každá komponenta architektury PAC je chápána jako agent, který se skládá ze 3 základních částí:
· Prezentační vrstva – prezentuje uživateli pohled do dat a zprostředkuje přístup k nim
· Abstrakce – reprezentuje vlastní data systému
· Řízení (Control) – reprezentuje služby systému
