Objektovo orientovaný návrh
Objektovo orientovaný návrh - podľa prednášok Jiřího Sochora Spracoval Juraj Michálek (georgik@blucina.net)
Analytické vzory
----------------
Vzory
- party, účastník, organizačná hierarchia, násobná hierarchia
- používanie typových vzťahov, zodpovednosť
- kvantita, konverzný pomer, zložené jednotky, meranie
- pozorovanie, pozorovanie s protokolom, časový záznam pozorovania
- odkazy na objekty, identifikačná schéma, zlúčenie objektov
- ekvivalencia, akcia, plán a náhradné plány kontrakt
Modelovacie princípy
- pokaiľ je možné poskytnúť množinu s viac rysmi, vyberte tú, ktorá
expertovy vyhovuje
Objektovo orientovaná analýza
-----------------------------
- modelovanie požiadavkov a služieb systému prostredníctvom objektov
- členenie problémov odlišným spôsobom
- vyžaduje presne definované rozhranie medzi objektami
Modelovacie primitíva
- objekty
- tiredy
- atribúty
- relácie
- metódy
- zasielanie správ
- prípadu použitia - scenáre
Kľúčové princípy
- ukrývanie informácie
- zapúzdrenie ďalších objektov
- agregácia
Coad Yourdon
- 5 etapový proces
1. identifikácia objektov (is a)
2. identifikácia štruktúr (part of)
3. definícia subjektov - skupín objektov
- diagram subjektov obsahuje len vzťahy medzi subjektami
a ich interakcie
4. definícia atribútov a prepojenia medzi inštanciami objektov
5. a. služby
- výskyt
- vypočítaj
- monitoruj
b. prepojenia pre prenos správ
Fusion
- rozbitie fázy vývoj komponent a architrktúry
- použitie V modelu na testovanie
1. špecifikácia požiadavkov
2.1. objektový model
2.2. model rozhrania
3. grafy objektov a interakcií
4. grafy viditeľnosti objektov
5. popisy tried
6. grafy dedičnosti
7. samotný program
- metóda pridáva interakčný model - chovanie v čase
- krátkodobo - agent
= vstupné udalosti - zmena stavu - výstupné udalosti
- dlhodobo
= povolené sledy udalostí - životné cykly
- nutná voľba riadiacich objektov
- voľba spolupracujúcich objektov
- schéma vzájomnej viditeľnosti
- okolie systému - agenti
- systémová operácia - vstupná udalosť a jej efekt
- rozhranie systémy - systémové operácie a výstupné udalosti
- model rozhrania - operačný model, model životného cyklu
- operačný model
- Operation - názov operácie
- Description - neformálny popis
- Reads - vstupy
- Changes - menené položky a atribúty
- Sends - zoznam agentov, ktorým sú zasielané správy
- Assumes - vstupné predikáty
- Results - výstupné predikáty
- graf interakcie
- žiadosť p systémovú operáciu
- zhrnutie
- precizovanie niektorých krokov nespracovaných v iných
metodológiách
- referenčný manuál
- syntax a sémantika modelov
- sytnax a sémantika sekvencií
- algoritmus - možný prevod na konečné automaty
- nedostatky
- príprava špecifikačného dokumentu
- chýbajú kritéria rozhodovania
- neobsahuje odporúčania
- chýbajú štatistické údaje o kvalite SW
KISS
Informačná analýza
- vzťah informačného a organizačného systému
- riadiace procesy - manažérske aktivity
- pracovníci - funkčné zaradenie
- akcie
- objekty
- architektúra definuje vzťahy medzi objektamu
- výstupná funkcia definuje prístup k informáciám
- zodpovednosti definújú kto zodpovedá
- autorizácia definuje kto prevádza
- funkcia - koordinácia akcií nad objektami
- objekt - reálny objekt sveta, alebo subjekt
- akcia - spôsob ako zmeniť stav, zapúzdrenie pomocou operácií
- operácia - definuje, ako sa zmení objekt po prevedení akcie
- podmienka - za akých podmienok sa musí daná akcia previesť
- správa - kolekcia hodnôt
- spúšťač - správa od akcie funkcii
- paradigma
- rozbytie na operačnú a riadiacu časť
- regulovaný objekt - je riadený zásahmi zvonka
- seberegulujúci objekt - riadi sa len na základe vlastných informácii
- gramatická analýza
- metodológia má definované slovné tvary a príslušné primitívy
modelu, ktoré sa na ne vzťahujú
Shlaer-Mellor
Informačný model
- objekty, vzťahy, atribúty
- asociatívne objekty - reprezentujú vzťah medzi objektami
Stavový model
- znázornenie životného cyklu
- trvalé objekty a dočasné objekty
Procesný model
- reprezentuje služby objektu - akcie
- používa DFD
Nevýhody objektovo orientovanej analýzy (OOA)
- dôraz na objekty zdôrazňuje statické objekty
- nie je jasné či modelovacie primitíva postačujú
- možné nadhodnotenie prístupu
Feture Driven Development
-------------------------
Postupy
- vývoj celkového modelu
- votvorenie zoznamu rysov
- plánovanie podľa rysov
- návrh a tvorba podľa rysov
Podporné materiály
- sledovanie rysov
- doplňujúce procesy
- zmeny
Kvalita
- externá (funkcie) - korektnosť, úplnosť, rýchlosť a spoľahlivosť
- interná (štruktúra) - dobre premyslené, elegantné, účinné
Stratégia
- skrátenie doby analýzy a ostatných fáz, práca v rýchlejších krokoch
- prevádzanie inšpekcií
- prevádzanie auditu a použitie metrík na hodnotenie
- aplikácia vzorov
- jasná komunikácia návrhu na všatkých úrovniach
FDD
- agilné, vysoko adaptívny proces vývoja
- poskytuje dostatočnú štruktúru
- zdôrazňuje produkciu kvalitného SW
- prevádza dostatočnú počiatočnú prípravu
- poskytuje presnú informáciu o stave
Obklopujúce procesy
- procesy okolia
- definuje ich vplyv
Kľúčové role
- manažer projektu
- hlavný architekt
- experti aplikačnej domény
- manažer vývoja
- šéf rpogramátori
- vlastníci tried
Podporné role
- manažer verzií
- jazykový guru
- stavebný inžinier
- nástrojár
- systémový administrátor
Ďalšie role
- testeri
- umiestňovači
- technický zapisovatelia
Modelovanie aplikačnej oblasti
- spoločné pochopenie problému
- minimalizácia nepovedaých predpokladov
- farebné modely so zvýraznením strategických bodov
Tvorba modelu
- zostavenie tímu
- prejdenie aplikačnej oblasti
- vývoj modelu v malých skupinách
- vývoj tímového modelu
- vylepšenie celkového modelu
- zápis poznámok do modelu
Definícia rysov
- šablóna: akcia - výsledok - objekt
Vytvorenie plánu podľa rysov
- určenie priorít jednotlivým bodom
- určenie rizika
- určenie úsilia
- všetko bodovo odhodnotené
- priradenie množín rysov šéfprogramátora
- zapojiť ľudí s aplikačnej oblasti a diskutovať s nimi prioritu rysov
Návrh rysu
- návrh
- inšpekcia
- tvorba
- pracovné balíky (prednosť pred monolitickými dokumentami)
- dokončenie rysu - tím je rozpustený
- formovanie nových tímov
Inšpekcia
- mechanizmus ako sa vyhnúť defektom
- šéfprogramátor rozhoduje o formalitách
- učí dobré praktiky
- vyžaduje dodržiavanie štandardov
- rozširuje tímovú kultúru
Pracovný balík
- viac ľudí súčastne prispieva a dopĺňajú chýbajúce miesta
- obsah
- artefakty návrhu a vývoja
- čo bolo spravené
- ako to bolo spravené
- prečo to bolo spravené tímto spôsobom
- plánovanie a rozvrhovanie
- kedy budú veci spravené
- kedy by mali byť spravené
- ako dobre sú spravené
- zopovednosti
- kto to robil
Sledovanie rysov
- viditeľnosť
- meranie postupu
- nástenný graf
- súhrnná správa
- systematický zber dát
- graf hľadania trendov
Technická architektúra
- zakúpený softvér
- rozhrania a adaptéry znižujúce závislosť na týchto komponentách
- definícia počtu používateľov danej aplikácie
- definícia opakovateľnej použiteľnosti arch
- automatizácia opakovaného - ručné opakovanie unavuje
Perzistencia
- založenie vrstvy objektov, ktoré prižívajú
Návrhové vzory (podľa GoF)
--------------
- opakovateľnosť štruktúr
- snaha o znovupoužitie kódu
- vzory nie sú návrhy
- vzor je nutné vyhodnotiť a upraviť do reálneho sveta
- šablóna - rieši určitú rodinu problémov
- vzor popisuje variáciu
- vzory podporujú dôveru
- väčšina ľudí vzory pozná
- nemusia ich však plne chápať
- vzory nie sú zárukou úspechu
- ich použitie je pomerne drahé
- nie je vždy jasné, kedy je vzor aplikovateľný
Tvoriace vzory
- umožňujú používateľovi zvoliť použité triedy
- Abstract factory
- systém nie je závislý na tom, ako sú výrobky zostavované
- systém je nastaviteľný na jednu z mnohých rodín výrobkov
- rodina výrobkov bude použivaná spoločne
- izolacia konkretnych tried
- jednoduchá zámena rodín výrobkov
- vylepšená konzistencia
- Builder
- algoritmus pre tvorbu zložitejšieho objektu
- nemal by byť závislý na častiach, ktoré objekt tvorí
- konštrukčný proces musí umožniť rozne reprezentacie
konštruovaného objektu
- je možné meniť interpretáciu objektu
- konštrukčný kód je izolovaný
- poskytuje jemnejšiu kontrolu pre podporu procesu
- Factory method
- tireda môže predpokladať, akú tiredu objektov musí vytvárať
- trieda požaduje od podtried špecifikáciu, aké výrobky budú
vytvárať
- delegovanie zodpovednosti tried na jednu
- poskytuje záchtné body
- prepája paralelnú hierarchiu tried
- Prototype
- ak sa chceme vyhnúť tvorbe hierarchií tovární
- inštancia je jeden stav z niekoľkých málo kombinácií
- pridávanie, rušenie výrobku za behu
- špecifikácia nových objektov pomocou premenných hodnôt
- redukcia podtried
- dynamická konfigurácia aplikácie s triedami
- Singleton
- musí existovať práve jedna z inštancií triedy
- predstavuje jediný styčný bod
- klienti nemusia meniť svoj kód pokiaľ potrebujú využívať
rozšírené funkcie
- riadený prístup k jednej inštancii
- redukcia menného priestoru
- povolenie zdokonaľovania operácií a prezentácii
- povoľuje zmenu počtu inštancií
- pružnejšie než pomocou operácie triedy
Štrukturálne vzory
- Adapter
- môže meniť chovanie adaptovaného objektu
- zavádza sa iba jeden objakt, nie je nutné použiť nepriame
ukazatele na objekty
- jeden adaptér môže pracovať s veľkým množstvom adaptovaných
objektov
- Bridge
- vyhnutie sa trvalej väzby medzi abstrakciou a implementáciou
- abstrakcia a implementácia by mali byť nezávisle rozšíriteľné
- úplné zakrytie implementácie pred klientami
- rozšírenie dedičnosti
- zdieľanie implementácie medzi viacerými objektami
- rozpojenie rozhrania a implementácie
- zlepšenie rozšíriteľnosti
- Composite
- reprezentovanie hierarchie celok-časť
- klient môže ignorovať rozdiely medzi zostavami objektov a
jediným objektom
- hierarchie zložené z primitívnych objektov
- zjednodušuje klienta
- zjednodušuje pridávanie nových druhov komponent
- návrh je všeobecnejší
- Decorator
- pridávanie zodpovednosti k objektom
- zodpovednosti môžu byť rušené
- v prípade, že rozšírenie podtriedov je nepraktické
- pružnejšie než statická dedičnosť
- vysoké úrovne nie sú preplnené
- dekorátor a jeho komponenta nie sú identické
- Facade
- poskytnutie zjednodušeného rozhrania k zložitejšiemu
- existuje veľa závislostí medzi klientami a implementovanými
triedami
- chceme systém rozčleniť na vrstvy
- klient je odtienený od komponent systému
- zoslabuje sa prepojenie medzi klientom a systémom
- nebráni použitiu tried v systéme
- Flyweight
- aplikácia používa veľké množstvo objektov
- pamäťové náklady na uloženie množstva objektov je veľké
- stav väčšsiny objektov je možné dať mimo objektov
- aplikácia nie je závislá na identite objektu
- redukcia celkového množstva pamäte
- závislé na tom, či je stav vypočítaný alebo uložený
- Proxy
- remote proxy - lokálne zastpenie reprezentanta
- virtual proxy - tvorba náročných objektov na požiadanie
- protection proxy - riadi prístup k pôvodnému objektu
- remote proxy - ukrýva to, že je objekt v inom adresnom
priestore
- virtual proxy - môže riešiť optimalizácie
- protection proxy - doplňuje ochranné úlohy
Vzory chovania
- Chain of responsibility
- viac než jeden objekt spracováva požiadavky
- vyslanie požiadavku viacerým objektom bez špecifikácie
príjemcu
- množina objektov by mala byť spracovávana dynamicky
- redukované pripojenie
- pružnejšie pre pridávanie zodpovednosti objektom
- prijatie správy nie je zaručené
- Command
- parametrizácia objektov podľa funkcie, ktorú majú vykonávať
- špecifikácia zaradenia v rôznych časoch
- podpora undo
- záznamík - log
- štruktúrovanie systému podľa operácií
- odpojenie objektov od toho, kto vyvolal operáciu
- príkazy sú plnohodnotné objekty
- nové príkazy môžu byť vložené do zloženého príkazu
- nové príkazy nie je možné jednoducho pridať bez zmeny tried
- Interpreter
- problém je popísaný silným jazykom
- jednoduchá gramatika
- efektivita nie je kritickým faktorom
- gramatiku je možné ľahko rozširiť
- je možné pridať nové spôsoby interpretaácie výrazov
- Iterator
- prístup k objektu bez vystavenia jeho reprezentácie
- podpora násobných priechodov objektom
- poskytnutie jednotného rozhrania
- variácie priechodov objektom
- zjednodušenie rozhrania
- môže byť spustené viac priechodov súčastne
- Mediator
- množina objektov spolu komunikuje definovaným, ale zložitým
spôsobom
- znovupoužiteľnosť objektu je problematická, vzhľadom na
množstvo inej komunikácie
- chovanie distribuované medzi neikoľkými triedami
- obmedzuje vytváranie podtried
- rozpojuje spolupracovníkov
- zjednodušenie protokolov M:N
- absttrahuje spoluprácu objektov
- centralizuje riadenie
- Memento
- snímok časti systému
- vhdoné na obnovenie stavu
- priame rozhranie by odhalilo implementačné detaily
- zachovanie hraníc zapúzdrenia
- zjednodušenie pôvodcu mementa
- použitie môže byť nákladné
- definícia úzkych miest
- Observer
- zmena jedného objektu vyžaduje zmenu iných a nevieme koľkých
- objekt zistí, že skutočnosti sú iné
- prepojenie medzi subjektom a pozorovateľom
- podpora všesmerového vysielania
- možné neočakávané obnovy
- State
- chovanie objektu závisí na jeho stave
- operácie obsahujú rozsiahle vetvenie
- lokalizuje špecifické chovanie
- prechody medzi stavmi sú explicitné
- stavové objekty môžu byť zdieľané
- Strategy
- veľa súvisejúcich tried sa odlišuje len chovaním
- potrebujeme rôzne varianty algoritmu
- vytvára rodiny súvisejúcich algoritmov
- stratégia eliminuje podmienené príkazy
- klient musí vedieť o rôznych strtégiách
- Templated method
- implementácia invariantných častí algorimu môže doplniť
chovanie
- je potrebné faktorizovať spoločné chovanie
- kľúčová technika pre znovupoužiteľnosť kódu
- Visitor
- chceme prevádzať operácie podľa toho ku ktorým tiedam objekt
patrí
- veľa operácií je potrebné spraviť s rôznymi objektami
- tiredy definujúce štruktúru sa menia menej často - chceme
definovať operácie nad štruktúrou
- zjednodušujw pridávanie nových operácií
- umiestnenie do hierarchie tried
- akumulácia stavov
Rational Unified Process
------------------------
- why, what, who, when, how
Cykly výrobku
- Inception - potvrdenie koncpetu a prevedenie cieľa
- Project description
- Risk analyses
- Use case diagram
- Project proposal
- Elaboration - detailné požiadavky a scenáre
- Primary scenario
- Secondary scenario
- Activity diagram
- User interface diagram
- Architecture
- Prototype
- Project plan
- Construction - zdokonalenie architektúry
- core functionality
- use case
- primary scenario
- Transition - používateľské prijatie
Hranice projektu
- rozsah projektu nie je určený hranicami systému
- obchodné vplyvy
- schopnosti vývojárov
- rámcový rozpočet
- začnite v malom - stanete sa silnejší
UML
---
- prípad užitia je inicializovaný aktorom
- prípadne časovou udalosťou
- pre každý use case je vytvorený dokument s udalosťami z pohľadu
účastníka