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.
  • PA103

Vypracování

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:

  • 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

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.
  • Structural patterns
    • řeší dělení rozhraní a implementace
    • kompozice objektů

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ů.
  • Behavioral patterns
    • řeší dynamické interakce mezi třídami/objekty
    • dělba zodpovědnosti

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

  • 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

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.

Broker

image.slidesharecdn.com_sasession11-140914043516-phpapp01_95_software-architecture-session11-73-638.jpg

Model-View-Controller (MVC)

Model-View-Presenter (MVP)

Model-View-ViewModel

Rozhraní komponent

  • Komponenta
    • = Spustitelná jednotka běžící v běhovém prostředí (middleware).
    • = Zaměnitelná část systému, která žádá a poskytuje určitou sadu operací.
    • Tvořena mnoha objekty/třídami.
    • Nepřímá komunikace přes rozhraní (konektory).
    • Dobře definovaná komplexní rozhraní.
    • black-box/gray-box
    • Vyvíjeny nezávisle na ostatních komponentách.
  • Rozhraní (interface)
    • Kolekce operací, která specifikují požadované, nebo poskytované služby komponenty.
  • Port
    • Komunikační bod komponenty specifikovaný rozhraním.
    • Spojeny vzájemně konektorem.

Komponentové systémy a modely

Signatury a omezující podmínky služeb, OCL

Požadavky na rozhraní:

  • poskytuje kontact s vnějším světem
  • je tvořeno signaturami operací (input/output parametry)
  • dobrá dokumentace (včetně kontraktu)
  • jednoduchá dostupnost
  • specifikace kontraktu (podmínky užití)

<red 90% red|Kontrakt>
Dohoda mezi dvěma subjekty akceptující podmínky, na kterých je možné užívat práva.
</box>

OO kontrakt

  • sdílení předpokladů o třídách, komponentách, systémech
  • přesná specifikace rozhraní
  • popis služeb, které jsou poskytovány za určitých podmínek
  • 3 typy podmínek:
    • Invarianty = predikát, který musí být vždy platný.
    • Preconditions = Musí být platné před spuštěním operace.
    • PostConditions = Musí platit po dokončení operace.
  • Podmínky lze modelovat různými způsoby:
    • běžným jazykem
    • matematická notace
    • Object Constraint Language (OCL)
  • Viditelnost operací a atributů
    • public: +
      • dostupné z libovolného externího kódu
    • private: -
      • dostupné ze samotné třídy
    • protected: #
      • dostupné z třídy a jejích dědiců
    • package: ~
      • dostupné z tříd v rámci balíku

OCL

Object Constraint Language

  • OMG standard
  • ➕ umožňuje lepší dokumentaci
  • ➕ přesnost (má formální sémantiku)
  • ➕ OO
  • ➕ komunikace bez nedorozumnění

Využití:

  • invarianty tříd a typů
  • pre-/post-conditions operací
  • navigace napříč ukazateli mezi objekty
  • podpora operací nad kolekcemi
  • testovací specifikace a požadavky

Syntax

  • silně typovaný, deklarativní jazyk
  • každý klasifikát z UML se stává OCL typem
  • předdefinuje základní typy a kolekce

Invariants

syntax:
  context <classifier> 
  inv [<constraint name>]: 
  <Boolean OCL expression> 

Preconditions/Postconditions

syntax:
  context <classifier>::<operation> (<parameters>) 
  pre|post [<constraint name>]: 
  <Boolean OCL expression> 

Kvalitativní aspekty služeb (QoS)

Objektové metody vývoje softwaru, RUP

Zdroje

  • slidy pa103 (jaro 2019)
mgr-szz/in-pos/6-pos.1560157889.txt.gz · 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