Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

mgr-szz:in-pos:6-pos [2019/06/10 10:26]
lachmanfrantisek sw architektury
mgr-szz:in-pos:6-pos [2020/04/12 16:56]
Řádek 1: Řádek 1:
-====== IN-POS 6. Objektové metody návrhu systémů ====== 
  
-===== Zadání ===== 
- 
-  * Návrhové vzory. 
-  * Softwarové architektury. 
-  * Rozhraní komponent, signatury a omezující podmínky služeb, OCL. 
-  * Komponentové systémy a modely, kvalitativní aspekty služeb (QoS). 
-  * Objektové metody vývoje softwaru, RUP. 
- 
-  * PA103 
- 
-===== Vypracování ===== 
- 
-==== Návrhové vzory ==== 
- 
- 
-<box 90% red|vzor (pattern)>​ 
-Obecné řešení pro opakující se problém, tak aby jej bylo možné aplikovat v různém kontextu. 
-</​box>​ 
- 
- 
-=== Analytické vzory === 
- 
-Existují i vzory využitelné při fázi analýzy. Seznam kategorií od M. Fowlera: 
- 
-  * **Accountability** 
-    * Party 
-    * Organization Hierarchies 
-    * Organization Structure 
-    * Accountability 
-    * Organization Structure 
-    * Accountability Knowledge Level 
-    * Party Type Generalization 
-    * Hierarchic Accountability 
-    * Operating Scopes 
-    * Post 
-  * **Observations and Measurements** 
-    * Quantity 
-    * Conversion Ratio 
-    * Compound Units 
-    * Measurement 
-    * Observation 
-    * Subtyping Observation Concepts 
-    * Protocol 
-  * **Observations for Corporate Finance** 
-    * Enterprise Segment 
-    * Measurement Protocol 
-    * Range 
-    * Phenomenon with Range 
-  * **Referring to Objects** 
-    * Name 
-    * Identification Scheme 
-    * Object Merge 
-    * Object Equivalence 
-  * **Inventory and Accounting** 
-  * **Planning** 
-  * **Trading** 
-  * **Derivative Contracts** 
-  * **Trading Packages** 
- 
- 
-=== Návrhové vzory dle GoF === 
- 
-Podle knihy "​Design Patterns: Elements of Reusable Object Oriented Software (1995)"​ (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides). 
- 
-  * Návrhové vzory 
-    * Popis šablony, kterou lze použít pro řešení problému v různých situacích. 
-    * Popisují úspěšné návrhy a softwarovou architekturu. 
-    * Popisují statickou i dynamickou strukturu a komunikaci mezi objekty. 
-    * Vzor je pouze "​meta-model",​ je potřeba jej instanciovat. 
- 
-  * Jednotlivé vzory jsou pěkně vysvětlené zde: https://​refactoring.guru/​design-patterns/​ 
- 
-3 kategorie: 
- 
-  * **Creational patterns** 
-    * inicializace a konfigurace objektů 
-    * lze skrýt specifika vytváření objektu 
-    * lze oddálit určení přesné třídy při instanciaci 
- 
-<box 90% blue|Abstract Factory> 
-Vytváření skupiny souvisejících objektů. 
-</​box>​ 
- 
-<box 90% blue|Builder>​ 
-Postupné vytváření komplexních objektů. 
-</​box>​ 
- 
-<box 90% blue|Factory Method> 
-Virtuální konstruktor. 
-</​box>​ 
- 
-<box 90% blue|Prototype>​ 
-Instanciace objektů přes klonování "​prototypu"​. 
-</​box>​ 
- 
-<box 90% blue|Singleton>​ 
-Tvorba maximálně jedné instance pro celý systém. 
-</​box>​ 
- 
-  * **Structural patterns** 
-    * řeší dělení rozhraní a implementace 
-    * kompozice objektů 
- 
-<box 90% blue|Adapter>​ 
-Překlad rozhraní. 
-</​box>​ 
- 
-<box 90% blue|Bridge>​ 
-Abstrakce pro spojení více implementací. 
-</​box>​ 
- 
- 
-<box 90% blue|Composite>​ 
-Tvorba rekurzivní hierarchie objektů. 
-</​box>​ 
- 
-<box 90% blue|Decorator>​ 
-Transparentní rozšíření objektů. 
-</​box>​ 
- 
-<box 90% blue|Facade>​ 
-Zjednodušení a agregace rozhraní komplexního subsystému. 
-</​box>​ 
- 
-<box 90% blue|Flaywight>​ 
-Sdílení mnoha objektů. 
-</​box>​ 
- 
-<box 90% blue|Proxy>​ 
-Aproximace objektů. 
-</​box>​ 
- 
-  * **Behavioral patterns** 
-    * řeší dynamické interakce mezi třídami/​objekty 
-    * dělba zodpovědnosti 
- 
- 
-<box 90% blue|Chain of Responsibility>​ 
-Delegování žádosti na zodpovědného poskytovatele. 
-</​box>​ 
- 
-<box 90% blue|Command>​ 
-Realizace žádostí/​příkazů. 
-</​box>​ 
- 
-<box 90% blue|Interpreter>​ 
-Interpretr jazyka pro malé gramatiky. 
-</​box>​ 
- 
-<box 90% blue|Mediator>​ 
-Koordinace komunikace mezi zúčastněnými. 
-</​box>​ 
- 
-<box 90% blue|Memento>​ 
-Uchování a obnovení stavu. 
-</​box>​ 
- 
-<box 90% blue|Observer>​ 
-Update několika objektů při změně "​sledovaného"​. 
-</​box>​ 
- 
-<box 90% blue|State>​ 
-Objekty, jejichž chování závisí na stavu. 
-</​box>​ 
- 
-<box 90% blue|Strategy>​ 
-Abstrakce pro volbu jednoho z více algoritmů. 
-</​box>​ 
- 
-<box 90% blue|Template Method> 
-Algoritmus s několika kroky implementovanými v podtřídě. 
-</​box>​ 
- 
-<box 90% blue|Visitor>​ 
-Operace aplikované na různorodé struktury objektů. 
-</​box>​ 
- 
- 
- 
- 
-==== Softwarové architektury ==== 
- 
-  * = Zásadní návrhová rozhodnutí. 
-  * = Základní struktura systému složená z komponent, jejich vztahů a principů pro návrh a implementaci. 
-  * Abstrakce na systémové úrovni. 
- 
-Zásadní prvky: 
- 
-  * **Modul** = část systému implementující nějakou funkcionalitu 
-  * **Konektor** = komunikační kanály a rozhraní mezi moduly 
-  * **Nasazení** = mapování modulů a konektorů na HW/SW zdroje. 
- 
- 
-Styly a vzory: 
- 
-  * **Návrhový vzor** = Obecné řešení pro problémy při návrhu a implementaci. 
-  * **Architektonický styl** = Sumarizuje architektonické principy ovlivňující kód. 
-  * **Architektonické vzory** = Obecná řešení pro návrh architektury. 
-  * **Doménově specifické SW architektury** = Návrh kompletní struktury aplikace v dané doméně. 
- 
-=== Architektonické vzory === 
- 
-<box 90% blue|Layers>​ 
-  * Rozdělení ​ funkcionality do vrstev dle míry abstrakce. 
-  * Vrstva: 
-    * poskytuje službu vrstvě nad ní 
-    * delegují pod-úkoly na vrstvu pod ní 
- 
-  * Varianty 
-    * **Relaxed Layered System** -- Lze využít všechny nižší vrstvy, ne jen sousední. 
-    * **Layering Through Inheritance** -- Vrstvy se navzájem dědí. (Vrstva dědí vrstvu, od které požaduje funkcionalitu. 
- 
-  * ➕ podpora standardizace => možná výměna vrstev 
-  * ➕ dobře definovaná struktura 
-  * ➖ nižší výkonost kvůli komunikační zátěži 
-  * ➖ duplikace kódu na hranicích vrstev 
- 
-<note tip> 
-**Layers (vrstvy)** -- organizace kódu 
-**Tiers** -- místo nasazení vrstev 
-</​note>​ 
-</​box>​ 
- 
- 
-<box 90% blue|Pipes and Filters> 
-Struktura pro procesy nad proudy dat. 
- 
-  * **pipes** (roury) = spojení mezi filtry 
-  * **pasivní filtr** = "​vytáhne"​ data z filtru nebo mu jsou data poslána jiným elementem 
-  * **aktivní filtr** = aktivně vytahuje data z rour a posílá svůj výstup dál 
-  * **data source** = vstup do systému 
-  * **data sink** = výsledky celého procesu 
- 
-  * ➕ netřeba mezilehlých souborů 
-  * ➕ flexibilita výměn filtrů, nebo přeuspořádání komponent 
-  * ➕ možnost znovuvyužití komponent 
-  * ➕ možnost prototypování 
-  * ➕ lze paralelizovat zpracování 
-  * ➖ sdílení stavu je drahé, nebo neefktivní 
-  * ➖ transformace dat do/z formátu rour může být náročné 
-  * ➖ zpráva chyb, výpadků 
-</​box>​ 
- 
-<box 90% blue|Blackboard>​ 
-Více zdrojů se střídavě zapojuje do řešení problému. 
-</​box>​ 
- 
-<box 90% blue|Broker>​ 
-{{https://​image.slidesharecdn.com/​sasession11-140914043516-phpapp01/​95/​software-architecture-session11-73-638.jpg}} 
-</​box>​ 
- 
-<box 90% blue|Model-View-Controller (MVC)> 
-{{:​mgr-szz:​in-pos:​mvc.png?​300|}} 
-</​box>​ 
- 
-<box 90% blue|Model-View-Presenter (MVP)> 
-{{:​mgr-szz:​in-pos:​mvp.png?​300|}} 
-</​box>​ 
- 
-<box 90% blue|Model-View-ViewModel>​ 
-{{:​mgr-szz:​in-pos:​mvv.png?​300|}} 
-</​box>​ 
- 
-==== Rozhraní komponent, signatury a omezující podmínky služeb, OCL ==== 
- 
-==== Komponentové systémy a modely, kvalitativní aspekty služeb (QoS) ==== 
- 
-==== Objektové metody vývoje softwaru, RUP ==== 
- 
-===== Zdroje ===== 
- 
-  * slidy pa103 (jaro 2019) 
mgr-szz/in-pos/6-pos.txt · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0