Architektura softwarových systémů, význam a součásti architektury, architektonické styly.

Z Na státnice zvesela!

Přejít na: navigace, hledání

[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í)
  • obecná vrstvená