Architektura softwarových systémů, význam a součásti architektury, architektonické styly.
Z Na státnice zvesela!
[editovat] Význam architektury
Softwarová architektura je struktura komponent programu/systému, jejich vzájemné vazby, interakce, principy a předpisy určující jejich návrh a vývoj. Je důležité dodržet konceptuální integritu systému -- systém má nějakou architekturu a navíc pouze jednu (přesto může využívat více architektonických stylů). Je prvním krokem návrhu, poskytuje jakýsi návod podle něhož bude proveden podrobný návrh (implementace) systému.
Umožňuje myšlenkově uchopit návrh i velmi složitých systémů a jejich pochopení. Velmi ovlivňuje samotný návrh (především v počátcích vývoje) a následnou údržbu systému.
[editovat] Součásti architektury
- konvence a politiky (pravidla pro návrh, dodržují všichni vývojáři)
 - jak systém členit
 - hrubé členění na subsystémy a balíky
 - rozhraní a závislosti mezi nimi
 - přiřazení tříd do balíků/subsystémů
 
- 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á
 - jak najít subsystémy? 
- 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í
 
 
 
[editovat] Základní architektonické styly (vzory)
- klient-server architektura
 - Service-oriented architecture (SOA) muni wiki
 - komponentová architektura
 - 3 vrstvé – oddělení prezentace, business logiky a datové části (MVC)
- Realizace pomocí tříd
- hraniční - rozhraní (dialogy s uživateli, komunikace s externími systémy), prezentace/čtení informací
 - řídící - stavové přechody, byznys pravidla, funkčnost měnící se nezávisle na datech
 - datové - zapouzdření informací po delší dobu
 - systémové - realizace nízkoúrovňových úloh (komunikace, soubory, zobrazování)
 
 
 - Realizace pomocí tříd
 - obecná vrstvená
 
