Toto je objekt systému MBI.

MBI (Management Byznys Informatiky) je portál obsahující zobecněná řešení v řízení provozu a rozvoje IT, resp. podnikové informatiky.

Pokud máte zájem získat více informací o tomto objektu (vazby na další objekty, přílohy, apod.), ale i získat mnoho dalších užitečných materiálů, můžete tak učinit ZDE / (registrace je bezplatná).

Faktor : Softwarová architektura
Softwarová architektura
Kód faktoru

Standardní kód faktoru v MBI.

:
F155
Autor

Jméno a příjmení autora

:
Voříšek, J. (KIT, VŠE)
Podstatné charakteristik faktoru

Obsahové vymezení faktoru

1. Obsahové vymezení

*/ V případě softwarové architektury je systémem, na kterém architekturu definujeme, jeden softwarový produkt, tj. jedna softwarová aplikace. Hlavními komponentami, jejichž strukturu a vztahy architektura definuje, jsou programové moduly aplikace.

2. Druhy softwarových architektur
  • Jednouživatelská a víceuživatelská aplikace (single-tenant, multi-tenant architecture),
  • Klient/server architektura,
  • Monolitická, dvouvrstvá a třívrstvá architektura,
  • Dvouvrstvá architektura,
  • Třívrstvá architektura,
  • Lineární, hierarchická, vrstvená a síťová architektura.
3. Efekty, výhody:
  • Výhodou systému s lineární architekturou je, že nevyžaduje komplikovanou organizaci pracovních týmů a že se snadno testuje.
  • V hierarchické architektuře jsou jednotlivé funkce/moduly systému uspořádány tak, že jejich vazby jsou reprezentovány stromovým grafem. Znamená to, že každá elementární funkce je využita vždy právě v jedné funkci vyšší úrovně.
  • Hlavní nevýhodu hierarchické architektury překonává vrstvená architektura. Její grafickou reprezentací je acyklický graf.
  • Funkce softwarového systému jsou uspořádány do několika vrstev s tím, že funkce vyšší vrstvy mohou využívat jen funkce vrstev podřízených.
  • Posledním typem architektury používané v praxi je síťová architektura, která je reprezentovaná obecným orientovaným grafem, to znamená, že zde neplatí závazná pravidla podřízenosti a nadřízenosti jednotlivých modulů.
  • Síťová architektura je typická pro řadu současných rozsáhlých softwarových systémů. Je to de facto jediná použitelná architektura pro systémy budované „za pochodu“, protože její hlavní předností je otevřenost pro přidávání nových funkcí.
4. Problémy a omezení:
  • Je-li lineární architektura použita při řešení vhodného typu problému, pak má aplikace oproti následujícím architekturám nejnižší náklady vývoje. V praxi se však systémy z čistě lineární architekturou vyskytují zřídka, protože podstata problému obvykle vyžaduje strukturovaný přístup k jeho řešení. I když má systém na nejvyšší úrovni abstrakce architekturu lineární, pak obvykle na nižších úrovních má funkce/moduly uspořádány podle některé z následujících architektur (to platí i o uvedeném příkladu textového systému)..
  • Hierarchická architektura se dá s úspěchem použít pouze tehdy, jsou-li na systém kladeny takové požadavky, které lze splnit množinou vzájemně disjunktních funkcí.
  • Tyto funkce musí být na nižší úrovni abstrakce opět dělitelné na vzájemně disjunkcí množiny elementárních funkcí. Tento předpoklad bývá v praxi málokdy splněn, takže striktní dodržení hierarchické architektury obvykle vede k duplicitním pracím, a tím k nárůstu nákladů tvorby a údržby. Velkým problémem je též dodávání nových funkcí, kterým nevyhovuje stávající struktura systému. Na druhé straně výhodou hierarchické architektury je přehledná struktura systému, která vede k poměrně snadnému testování a snadné údržbě systému.
  • První tři architektury tak pružné nejsou, protože neočekávaný požadavek na přidání určité funkce může být v rozporu s dosavadní strukturou funkcí. Další výhodou síťové architektury je, že v porovnání s hierarchickou a vrstvenou architekturou má obvykle nižší náklady provozu. Na druhé straně má z uvedených architektur obvykle nejvyšší náklady užití, protože její zvládnutí uživatelem je nejnáročnější.
  • Náklady tvorby a údržby mohou být nízké, ale jenom za předpokladu vysoké zkušenosti tvůrců a jejích dokonalé organizace, protože síťová architektura vede k vysoké vzájemné závislosti jednotlivých funkcí (změna jedné funkce může vynutit úpravy velkého počtu jiných funkcí).
  • V okamžiku, kdy se tyto závislosti vymknou přísné kontrole, má to za důsledek velmi těžko zjistitelné šíření chyb po celém systému a rapidní narůstání nákladů údržby. Pravděpodobnost vzniku takové situace je u rozsáhlých systémů značně vysoká. Zkušenosti se síťovou strukturou ukazují, že opravení jedné chyby často vede ke vzniku předem těžko odhadnutelného počtu chyb jiných.
  • Z přehledu architektur softwarových systémů je zřejmé, že pro tvorbu rozsáhlého softwarového systému připadají v úvahu v podstatě dvě ze čtyř výše popsaných architektur – vrstvená a síťová. Vzhledem k uvedeným faktům je použití síťové architektury ospravedlnitelné pouze tehdy, musíme-li preferovat nízké náklady provozu, před nízkými náklady tvorby a údržby a před nízkými náklady užití (např. systémy pro řízení technologických procesů s dobou odezvy hluboko pod hranicí 1 sekundy, jádro operačního systému). Ve všech ostatních případech je pak vhodnější vrstvená architektura.