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á