Toto je starší verze dokumentu!
—-
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.
Vypracování
Návrhové vzory
vzor (pattern)
Obecné řešení pro opakující se problém, tak aby jej bylo možné aplikovat v různém kontextu.
Analytické vzory
Existují i vzory využitelné při fázi analýzy. Seznam kategorií od M. Fowlera:
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.
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
Abstract Factory
Vytváření skupiny souvisejících objektů.
Builder
Postupné vytváření komplexních objektů.
Factory Method
Virtuální konstruktor.
Prototype
Instanciace objektů přes klonování „prototypu“.
Singleton
Tvorba maximálně jedné instance pro celý systém.
Adapter
Překlad rozhraní.
Bridge
Abstrakce pro spojení více implementací.
Composite
Tvorba rekurzivní hierarchie objektů.
Decorator
Transparentní rozšíření objektů.
Facade
Zjednodušení a agregace rozhraní komplexního subsystému.
Flaywight
Sdílení mnoha objektů.
Proxy
Aproximace objektů.
Chain of Responsibility
Delegování žádosti na zodpovědného poskytovatele.
Command
Realizace žádostí/příkazů.
Interpreter
Interpretr jazyka pro malé gramatiky.
Mediator
Koordinace komunikace mezi zúčastněnými.
Memento
Uchování a obnovení stavu.
Observer
Update několika objektů při změně „sledovaného“.
State
Objekty, jejichž chování závisí na stavu.
Strategy
Abstrakce pro volbu jednoho z více algoritmů.
Template Method
Algoritmus s několika kroky implementovanými v podtřídě.
Visitor
Operace aplikované na různorodé struktury objektů.
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
Layers
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
Layers (vrstvy) – organizace kódu
Tiers – místo nasazení vrstev
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ů
Blackboard
Více zdrojů se střídavě zapojuje do řešení problému.
Model-View-Controller (MVC)
Model-View-Presenter (MVP)
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
Nahoru