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