53 - Logická architektura software (pojem logické architektury; vrstvena architektura; závislosti vrstev a balíčků; princip oddělení pohledu; vzor Model-View-Controller) Flashcards

1
Q

Softwarová architektura

A
  • je způsob uspořádání SW komponent tak aby, splňovalo různé požadavky (funkční a nefunkční).
    • soubor významných rozhodnutí o organizaci SW systémů, výběr strukturních prvků a jejich rozhraní, pomocí nichž je systém sestaven, společně s jejich chováním specifikovaným spoluprácí těchto prvků, seskupení do skupiny větších podsystémů a architektonických stylů, který řídí tuto organizaci.

Logická architektura (logical architecture)
• je organizace tříd do balíčků (jmenných prostorů), podsystémů, vrstev. Neříká nic o jejich fyzickém umístění
• v UML modelujeme jako !!! diagram balíčků !!!

Architetura nasazení (deployment architecture)
• opak logické architektury - nasazení subsystémů do různých prostředí, na různé počítače
• v UML modelujeme jako !!! diagram nasazení !!!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vrstvená architektura

A

Vrstva (SW)
• Vrstvy architektury napomáhajı́ lepšı́ pochopitelnosti systému, přehlednosti a udržovatelnosti. Dovolujı́ přı́mou komunikaci pouze v rámci vrstvy, vynucujı́ viditelné závislosti.
• seskupení tříd, balíčků, podsystémů, které souvisejí z hlediska zodpovědnosti za nějaký významný aspekt systému.
• vertikální dělení, seskupení z hlediska odpovědnosti, hierarchické

Vrstvená architektura
• organizovaná hierarchicky, vyšší vrstva využívá služeb nižší vrstvy
• komplexnost je zapouzdřena ve vrstvách
• lepší podmínky pro vývoj v týmu
• redukce provázanosti (coupling), zvýšení koheze (vnitřní soudržnost)
• napomáhá lepší pochopitelnosti systému, přehlednosti a udržovatelnosti
• dovoluje přijmout komunikaci pouze v rámci vrstvy, vynucují viditelné závislosti

Typická 3-vrstvá architektura
• uživatelské rozhraní
• aplikační logika a objekty domény
• technické služby (databáze, záznam chyb,…)

Sekce = horizontální dělení, dělení na relativně paralelní podsystémy
Striktní (uzavřená) vrstvená architektura = vyšší vrstva může používat jen bezprostředně nižší vrstvu
Uvolněná (otevřená) vrstvená architektura = vyšší vrstva používá několik nižších vrstev
Doménový objekt = třídy odpovídající reálné doméně, mají přiřazenu část zodpovědnosti aplikační logiky

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Závislosti vrstev, balíčků a tříd

A

• Balíček = (dle UML) seskupení elementů modelu pod jedním jménem. Může obsahovat jiné balíčky a entity.

• Závislost
= Balíček A závisí na balíčku B jestliže změny v balíčku B mohou vynutit změny v balíčku A
• závislost metod -> závislost tříd -> závislost balíčků -> závislost vrstev

  • Závislost metod = vzniká voláním v kódu.
  • Závislost tříd = je hlubšího rázu, třída většinou závisí na třídě v jiném balíčku nebo vrstvě a tím zesložiťuje závislosti balíčků a vrstev.
    ○ SD there is a structural dependency - dědění, užívání,
    ○ FO there is a fan-out similarity - používají stejné interfaces
      ○ EC there is an evolutionary coupling - mění se spolu (the classes are frequently changed together during development) 
      ○ CC there are code clones - používají stejný / podobný kód
      ○ CO there is the same code ownership - stejný autor
      ○ SS there is a semantic similarity - sémantická podobnost
  • Závislost vrstev - by měla být směrem od vyšší k nižší. Nižší vrstvy by měly být stabilní (neměnit se příliš v čase).
	• Zdroje závislostí
		○ Dědění 
		○ Asociace 
		○ Volaní operace 
		○ Parametr operace 
		○ ... 
• Cyklická závislost -> A závisí na B, které závisí na A (i tranzitivně přes další třídy) 

• Odstranění cyklické závislosti 
	○ mezi balíčky - A a B se provádí přidáním speciálního balíčku A2, který obsahuje prvky A takové, že je na nich B závislé. Na novém balíčku A2 je pak závislé A i B. -> Odstranil se tak jeden směr závislosti, druhý zůstává nezměněn. 

	○ mezi třídami - pracuje na principu vytvoření nového rozhraní, na které se závislost předá (tzv. Presenter). Je také možné vytvořit rozhraní pro snížení počtu závislostí.  ----------------- Úrovně - fyzicky separované běžící na vlastních strojích

Tiers – to separate software artefacts in their deployment:
• tiers are physically separated, running on separate machines - (to improve scalability & resiliency, however, with a communication overhead)
• tiers can be in particular relationships of their interaction - (e.g., client-server, peer-to-peer, etc.)
• communication is not restricted, a tier can call to any other tier - (directly, or using asynchronous messaging by a message queue/bus)
• each layer might be hosted in its own tier (one to one), or several layers might be hosted on the same tier (many to one).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Architektonické vzory - model-view separation a MVC

A

Princip oddělení pohledu a modelu (Model-View Separation)
- Vrstvy uživatelského rozhraní se často mění (různé pohledy na data, různé požadavky uživatelů, …)

Podstata:
• vztah vrstvy UI (pohledu) k ostatním vrstvám:
○ Nevytvářet vazbu objektů nižších vrstev na objekty uživatelského rozhraní
○ Nevkládat aplikační logiku do operací tříd UI
○ Objekty nižších vrstev by neměli přímo znát objekty UI a posílat jim zprávy.
• Řešení
○ pomocí asynchronních událostí:
○ Použití návrhového vzoru Observer.

Model-View-Controller (MVC) = architektonický vzor, rozděluje datový model aplikace, uživatelské rozhraní a řídicí logiku do tří nezávislých komponent tak, že modifikace některé z nich má minimální vliv na ostatní.

* Model - reprezentuje data, odpovídá vrstvě domény, obsahuje objekty domény, přidává k datům aplikační logiku 
* View - reprezentuje způsob zobrazení dat, zodpovědná za prezentaci modelu (objekt UI, dynamické HTML stránky) 
* Controller - reprezentuje komunikaci v systému, zpracovává reaguje na události (fyzicky uživatele) 

Přimá závislost (X volá Y) view->model, controler->view, controler->model. Nepřímá závislost (observer) model->view

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Architektonické vzory - PCMEF

A

PCMEF (Presentation, Control, Mediator, Entity, Foundation) je model architektury, tvořı́ hierarchickou strukturu a vývojář všechny komponenty musı́ přiřadit některé z nich.

* Presentation - uživatelské rozhraní (UI, interakce s uživatelem)
* Control - zpracování požadavků (zpracovánı́ žádostı́, vnitřnı́ komunikace)
* Mediator - práce s daty (prostřednı́k mezi DB a pamětı́ (programem)) - komunikuje s entity a foundation
* Entity - ukládání aktuálně zpracovávaných dat (správa objektů v paměti)
* Foundation - přímá komunikace s databází (základnı́ komunikace s DB (dotazy apod.))

Principy PCMEF:

1. Princip závislosti směrem dolů
2. Princip sdělovánı́ směrem nahoru
3. Princip komunikace sousedů
4. Princip seznamovacı́ho balı́ku
5. Princip explicitnı́ch asociacı́
6. Princip eliminace cyklů
7. Princip pojmenovánı́ třı́d (P,C,M,E,F)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly