3.2
Techniky
Technikami anal´ yzy informaˇcn´ıch syst´em˚ u rozum´ıme vhodn´e postupy, kter´e pom´ahaj´ı anal´ yzu posunout na vyˇsˇs´ı kvalitativn´ı u ´roveˇ n. Jsou to postupy, d´ıky kter´ ym se anal´ yza st´av´ a celistvˇejˇs´ı a hlubˇs´ı v pochopen´ı dom´enov´e oblasti. Bohuˇzel takov´ ych technik pro f´ azi anal´ yzy nen´ı mnoho. My si zde pˇredstav´ıme jednu z technik, kter´ a se zamˇeˇruje na pouˇzit´ı vzor˚ u.
3.2.1
Anal´ yza podle vzor˚ u
Pro proveden´ı kvalitn´ı anal´ yzy jsou velmi podstatn´e dlouhodob´e zkuˇsenosti, kter´e b´ yvaj´ı ˇcasto pˇred´ av´ any v podobˇe rad z analytika na analytika. Zobecnˇen´ım tˇechto zkuˇsenost´ı vznikaj´ı pr´ avˇe analytick´e vzory. Analytick´ y vzor si m˚ uˇzeme pˇredstavit jako ˇc´ast analytick´eho modelu, kterou je moˇzn´e pouˇz´ıt v podobn´ ych aplikaˇcn´ıch oblastech. Pouˇzit´ı v konkr´etn´ım projektu pak pˇredpokl´ ad´ a vytvoˇren´ı instance vzoru (nalezen´ı u ´ˇcastn´ık˚ u vzoru mezi objekty modelovan´eho syst´emu). Analytick´e vzory pom´ahaj´ı pˇri modelov´ an´ı obchodn´ı dom´enov´e oblasti navrhovan´eho syst´emu. Pom´ ahaj´ı n´ am hledat nov´e upˇresˇ nuj´ıc´ı ot´ azky, pomoc´ı kter´ ych jsme schopni naj´ıt mezery ve znalosti dom´enov´e oblasti a vytvoˇrit tak celistv´ y pohled na modelovan´ y syst´em. To je pro n´ as kl´ıˇcov´e pˇri specifikaci poˇzadavk˚ u na nov´ y syst´em, protoˇze perfektn´ım pochopen´ım dom´enov´e oblasti pˇredch´ az´ıme n´asledn´ ym nedorozumˇen´ım, kter´ a jsou velice drah´ a. Metody aplikace vzor˚ u Pˇri aplikaci analytick´ ych a n´ avrhov´ ych vzor˚ u je moˇzn´e postupovat nˇekolika r˚ uzn´ ymi zp˚ usoby. Jejich hrub´ ym zmapov´ an´ım a rozborem jednoho z nich se zab´ yv´ a kniha [24]. Podle autor˚ u t´eto knihy lze nejbˇeˇznˇejˇs´ı techniky pro anal´ yzu a n´ avrh podle vzor˚ u rozdˇelit na n´ asleduj´ıc´ı typy: • Nesystematick´ a aplikace vzor˚ u Vzory jsou aplikov´ any pouze pˇri v´ yskytu urˇcit´eho probl´emu. Vzor tak poskytuje jednor´ azov´e ˇreˇsen´ı konkr´etn´ı situace. • Systematick´ a aplikace vzor˚ u Systematick´e techniky aplikace vzor˚ u definuj´ı postup nasazov´ an´ı vzor˚ u. Tyto techniky mohou b´ yt dvou typ˚ u. – Katalog vzor˚ u (Pattern Language) Katalog vzor˚ u ˇcasto poskytuje vzory t´ ykaj´ıc´ı se konkr´etn´ı oblasti z obchodn´ı dom´eny (analytick´e vzory) nebo dom´eny ˇreˇsen´ı (n´ avrhov´e vzory). Katalog d´ ale definuje vztahy a souvislosti mezi vzory, pˇr´ıpadnˇe moˇznosti jejich kombinace. Vzory jsou vˇetˇsinou aplikov´ any metodou dosazen´ı do v´ysledn´eho modelu, kterou si pˇredstav´ıme n´ıˇze. – V´yvojov´y proces (Development Process) Systematick´ y v´ yvojov´ y proces definuje postup pro aplikaci vzor˚ u, jehoˇz podstatou je skl´ ad´ an´ı vzor˚ u jako z´ aklad aplikaˇcn´ıho modelu. Proces definuje nejen formalizovan´ y postup, ale i modely a n´ astroje, kter´e pom´ahaj´ı k jeho automatizaci.
13
Dosazen´ı vzor˚ u do v´ ysledn´ eho modelu Pˇri dosazov´ an´ı vzor˚ u do v´ ysledn´eho modelu nejprve pomoc´ı standardn´ıch prostˇredk˚ u vytvoˇr´ıme analytick´ y nebo n´ avrhov´ y model. Pot´e vybereme adepty vzor˚ u, kter´e by mohlo b´ yt dobr´e pouˇz´ıt. V pˇr´ıpadˇe analytick´ ych vzor˚ u to mohou b´ yt vhodn´e soubory vzor˚ u podle dom´enov´e oblasti. N´ asleduje systematick´e proch´ azen´ı adept˚ u a hled´ an´ı vhodn´ ych m´ıst pro jejich nasazen´ı (hled´ an´ı probl´emu, kter´ y konkr´etn´ı vzor ˇreˇs´ı). Zde se ˇcasto dostaneme do situace, kdy je vzor bohatˇs´ı neˇz zkouman´a ˇc´ast syst´emu a nasazen´ı vzoru tak pˇrin´ aˇs´ı moˇzn´e rozˇs´ıˇren´ı syst´emu o vlastnosti zvyˇsuj´ıc´ı jeho flexibilitu a znovupouˇzitelnost. Po nalezen´ı vhodn´ ych vzor˚ u tyto vzory zasad´ıme do aplikaˇcn´ıho modelu. To prob´ıh´ a na z´akladˇe vyhled´ an´ı u ´ˇcastn´ık˚ u vzoru a t´ım vytvoˇren´ı instance vzoru. Skl´ ad´ an´ı vzor˚ u jako z´ aklad modelu Zde m˚ uˇzeme jmenovat metodiku, kter´ a tento postup pˇr´ımo definuje. Tato metodika se naz´ yv´ a POAD (Pattern Oriented Analysis and Design) a byla detailnˇe pˇredstavena v knize [24]. Metodika POAD navrhuje rozdˇelit anal´ yzu a n´ avrh podle vzor˚ u do tˇr´ı etap: • Analytick´ a f´ aze Bˇehem analytick´e f´aze doch´az´ı na z´ akladˇe anal´ yzy poˇzadavk˚ u k v´ ybˇeru vhodn´ ych vzor˚ u pro konkr´etn´ı modelovanou oblast. • N´ avrh na vyˇsˇs´ı u ´rovni V r´ amci n´ avrhu na vyˇsˇs´ı u ´rovni doch´ az´ı k vz´ ajemn´emu propojen´ı instanc´ı vzor˚ u, kter´e byly vybr´ any v pˇredchoz´ı f´ azi. Spojov´ an´ı vzor˚ u prob´ıh´ a podle formalizovan´eho postupu s podporou diagram˚ u pro realizaci propojen´ı vzor˚ u. • Zpˇresnˇen´ı n´ avrhu F´ aze zpˇresnˇen´ı n´ avrhu rozv´ıj´ı hrub´ y aplikaˇcn´ı model, kter´ y je v´ ystupem pˇredchoz´ı f´ aze. Do tohoto modelu jsou doplˇ nov´ any detaily, kter´e nebyly pomoc´ı vzor˚ u pokryty. Doch´ az´ı tak´e k optimalizaci vazeb.
3.2.2
Analytick´ e vzory (Fowler)
Analytick´e vzory popisovan´e v t´eto kapitole byly pˇredstaveny Martinem Fowlerem v knize [10]. Tato kniha je rozdˇelena na dvˇe ˇc´asti. V prvn´ı ˇc´asti je uvedeno 65 analytick´ ych vzor˚ u a v druh´e ˇc´asti 21 pomocn´ ych vzor˚ u, kter´e mohou b´ yt vyuˇzity pˇri nasazov´ an´ı analytick´ ych vzor˚ u. My se v t´eto pr´ aci zamˇeˇr´ıme na nˇekter´e analytick´e vzory pˇredstaven´e v prvn´ı ˇc´asti knihy. Tyto vzory jsou rozdˇeleny do 9 soubor˚ u. Kaˇzd´ y soubor se t´ yk´ a urˇcit´e dom´enov´e oblasti (napˇr´ıklad modelov´ an´ı organizaˇcn´ı struktury). Vzory kaˇzd´eho souboru jsou pˇredstavov´ any formou evoluˇcn´ı ˇrady. Tato ˇrada zaˇc´ın´ a zaveden´ım jednoduch´ ych vzor˚ u, kter´e jsou d´ ale rozv´ıjeny a kombinov´ any, ˇc´ımˇz vznikaj´ı pomˇernˇe komplexn´ı vzory. V´ yˇcet soubor˚ u analytick´ ych vzor˚ u je n´ asleduj´ıc´ı: • Accountability • Observations and Measurements • Observations for Corporate Finance • Referring to Objects • Inventory and Accounting • Planning 14
• Trading • Derivative Contracts • Trading Packages V n´ asleduj´ıc´ım textu se u kaˇzd´eho souboru sezn´ am´ıme s jedn´ım nebo dvˇema vzory.1 Pro vˇetˇs´ı n´ azornost je pouˇzit´ı vˇetˇsiny z tˇechto vzor˚ u uk´ az´ano na ilustraˇcn´ı internetov´e aplikaci v kapitole 5.2. Accountability Vzory sady Accountability se pouˇz´ıvaj´ı pˇri modelov´ an´ı zodpovˇednost´ı mezi osobami ˇci organizacemi. Tyto zodpovˇednosti mohou b´ yt pojaty velmi ˇsiroce a lze pomoc´ı nich vyj´ adˇrit mnoho r˚ uzn´ ych vztah˚ u reprezentuj´ıc´ıch napˇr´ıklad organizaˇcn´ı strukturu spoleˇcnosti nebo hierarchii nadˇr´ızenosti mezi zamˇestnanci. Vzory sady Accountability nal´ezaj´ı vhodn´e uplatnˇen´ı v podnikov´ ych informaˇcn´ıch syst´emech. N´ azev vzoru: Party ˇ ıseln´ C´ a identifikace: 2.1 Vzor Party definuje spoleˇcn´ y nadtyp osoby a organizace pro pˇr´ıpady, kdy v modelu vystupuj´ı v rovnocenn´e pozici a u ´ˇcastn´ı se stejn´ ych operac´ı. Jako pˇr´ıklad je ˇcasto uv´ adˇen telefonn´ı seznam. Poloˇzkou telefonn´ıho seznamu je z´aznam o osobˇe ˇci organizaci. S tˇemito poloˇzkami prov´ ad´ım stejn´e operace (zatelefonovat, smazat, pˇresunout) nez´ avisle na typu poloˇzky, proto je vhodn´e odkazovat na nˇe jednotnˇe pˇres jejich nadtyp Party. Struktura vzoru je na obr´ azku 3.2.
Obr´ azek 3.2: Analytick´ y vzor Party
N´ azev vzoru: Accountability ˇ C´ıseln´ a identifikace: 2.4 Vzor Accountability pom´ ah´ a definovat zodpovˇednost urˇcit´eho typu mezi dvˇema u ´ˇcastn´ıky (objekty Party) po stanoven´ y ˇcasov´ y interval. Poskl´ ad´ an´ım tˇechto dvojic 1
Vzhledem k tomu, ˇze je f´ aze anal´ yzy nez´ avisl´ a na pouˇzit´e implementaˇcn´ı technologii, nelze z analytick´ ych vzor˚ u vybrat ty, kter´e se speci´ alnˇe hod´ı pro webov´e projekty. V kapitol´ ach t´ ykaj´ıc´ıch se n´ avrhu tomu bude jinak. Tam se budeme orientovat v´ yluˇcnˇe na vzory souvisej´ıc´ı s oblast´ı webov´ ych informaˇcn´ıch syst´em˚ u.
15
zodpovˇednost´ı pak vznik´ a celistv´ y hierarchick´ y model. Zodpovˇednost je zaloˇzena na vztahu Commissioner–Responsible, za kterou m˚ uˇzeme dosadit napˇr´ıklad vztah Nadˇr´ızen´y– Podˇr´ızen´y a t´ım d´ıky vzoru Accountability vybudovat zamˇestnaneckou hierarchii v organizaci. Struktura vzoru je na obr´ azku 3.3.
Obr´ azek 3.3: Analytick´ y vzor Accountability
Observations and Measurements Pˇri modelov´ an´ı informaˇcn´ıch syst´emu se ˇcasto setk´av´ ame s objekty, u nichˇz je tˇreba uchov´ avat mnoho kvantitativn´ıch a kvalitativn´ıch informac´ı. Pˇr´ıkladem m˚ uˇze b´ yt pacient navˇstˇevuj´ıc´ı l´ekaˇrskou ordinaci. L´ekaˇr pˇri kaˇzd´em vyˇsetˇren´ı potˇrebuje uchovat o pacientovi nˇekolik r˚ uzn´ ych u ´daj˚ u jako je v´ yˇska, v´ aha, kvalita zraku. Tyto u ´daje by jistˇe bylo moˇzn´e zaznamenat ve formˇe atribut˚ u objektu Pacient. Existuj´ı vˇsak sofistikovanˇejˇs´ı moˇznosti ˇreˇsen´ı, kter´e pˇrin´ aˇsej´ı vzory sady Observations and Measurements. N´ azev vzoru: Quantity ˇ C´ıseln´ a identifikace: 3.1 Nejˇcastˇejˇs´ı formou uchov´ av´ an´ı kvantitativn´ıch informac´ı je pomoc´ı ˇc´ıseln´e hodnoty, pro n´ıˇz se jednotky povaˇzuj´ı za zˇrejm´e. Zaznamen´ame-li u v´ ahy pacienta ˇc´ıslo 70, neuv´ ad´ıme jiˇz, ˇze se jedn´a o v´ ahu v kilogramech. To vˇsak nen´ı pˇr´ıliˇs univerz´ aln´ı pˇr´ıstup bez ohledu na to, jak ˇcasto je vyuˇz´ıv´ an. Mnohem pˇresnˇejˇs´ı by bylo vyjadˇrovat kvantitativn´ı ˇci kvalitativn´ı informace pomoc´ı dvojice hodnota–jednotky. Takov´ y pˇr´ıstup nab´ız´ı vzor Quantity, kter´ y nav´ıc definuje povolen´e operace mezi hodnotami uchov´avan´ ymi ve stejn´ ych jednotk´ ach. Struktura vzoru je na obr´ azku 3.4. N´ azev vzoru: Conversion Ratio ˇ ıseln´ C´ a identifikace: 3.2 Pokud pouˇz´ıv´ ame u urˇcit´e vlastnosti v´ıce jednotek, budeme cht´ıt nadefinovat funkci pˇrevodu mezi tˇemito jednotkami. Mimo jin´e i proto, ˇze d´ıky tomu budeme moci pouˇz´ıvat operace urˇcen´e vzorem Quantity i na hodnoty zapsan´e v r˚ uzn´ ych jednotk´ ach. Vzor Conversion Ratio definuje pˇrevodovou tabulku mezi jednotkami, d´ıky n´ıˇz jsme schopni kdykoli 16
Obr´ azek 3.4: Analytick´ y vzor Quantity
zjistit, zda mezi jednotkami lze pˇrev´ adˇet a jakou pouˇz´ıt multiplikaˇcn´ı konstantu (ratio). Struktura vzoru je na obr´ azku 3.5.
Obr´ azek 3.5: Analytick´ y vzor Conversion Ratio
Observations for Corporate Finance Oblast mˇeˇren´ı a pozorov´ an´ı se nemus´ı t´ ykat jen pacient˚ u u l´ekaˇre. Stejn´ y princip lze vyuˇz´ıt i v mnoha dalˇs´ıch oblastech. Jednou z nich je sledov´ an´ı finanˇcn´ı u ´spˇeˇsnosti podniku. Sada vzor˚ u Observations for Corporate Finance pˇredstavuje rozˇs´ıˇren´ı pˇredchoz´ıho souboru vzor˚ u se zamˇeˇren´ım na tuto oblast. Hlavn´ım rozd´ılem je zde skuteˇcnost, ˇze c´ılem nen´ı pozorovat a mˇeˇrit jednotliv´e objekty, ale r˚ uzn´e jejich kombinace a skupiny urˇcen´e pomoc´ı definovan´ ych krit´eri´ı. N´ azev vzoru: Enterprise Segment ˇ ıseln´ C´ a identifikace: 4.1 Vzor Enterprise Segment pom´ ah´ a rozˇclenit spoleˇcnost na pozorovan´e ˇc´asti. Tyto ˇc´asti vznikaj´ı dynamicky v z´ avislosti na definovan´ ych u ´hlech pohledu (dimension). Takov´ ym u ´hlem pohledu m˚ uˇze b´ yt typ vyr´ abˇen´eho produktu, geografick´ a oblast prodeje ˇci pr˚ umyslov´ y sektor, do kter´eho v´ yrobky d´ ale putuj´ı. Struktura vzoru je na obr´ azku 3.6. Referring to Objects Vzory sady Referring to Objects se zab´ yvaj´ı ot´ azkou pojmenov´ an´ı a identifikace objekt˚ u z pohledu uˇzivatele syst´emu. V re´aln´em svˇetˇe se na objekty odkazujeme nejˇcastˇeji pomoc´ı jm´ena, pˇrestoˇze tento pˇr´ıstup nezaruˇcuje jednoznaˇcnou identifikaci. Na sv´e pˇra´tele odkazujeme ˇcasto jen pomoc´ı kˇrestn´ıho jm´ena ˇci jm´ena s dodateˇcn´ ym upˇresnˇen´ım (napˇr´ıklad ,,Petr z pr´ ace“). Je to pro n´ as l´epe urˇcuj´ıc´ı neˇz odkazovat se na nˇe pomoc´ı jednoznaˇcn´eho identifikaˇcn´ıho ˇc´ısla. Informaˇcn´ı syst´em by mˇel tyto pˇr´ıstupy umoˇzn ˇovat tak´e, aby co
17
Obr´ azek 3.6: Analytick´ y vzor Enterprise Segment
nejv´ıce korespondoval s re´ aln´ ym svˇetem. Sada vzor˚ u Referring to Objects se nezab´ yv´ a jen pojmenov´ an´ım objekt˚ u, ale tak´e rozpozn´ an´ım ekvivalence mezi objekty se stejn´ ym ˇci r˚ uzn´ ym n´ azvem, jejich sluˇcov´an´ım a rozdˇelov´ an´ım. N´ azev vzoru: Name ˇ ıseln´ C´ a identifikace: 5.1 Z´akladn´ım vzorem pro pojmenov´ an´ı objekt˚ u je vzor Name. Ten diskutuje moˇznosti vztahu objektu a jeho jm´ena. Prvn´ı moˇznost´ı je pˇriˇradit objektu pouze jedno jm´eno, kter´e m˚ uˇze b´ yt strukturovan´e. Druhou moˇznost´ı je pˇriˇradit jednomu objektu v´ıce jmen. To m˚ uˇze reflektovat situaci, kdy jednoho ˇclovˇeka pojmenov´ av´ a jinak jeho matka, partnerka a pˇra´tel´e. Na tuto situaci navazuje vzor Identification Scheme. Posledn´ı moˇznost´ı je pˇriˇradit objektu jednoznaˇcn´e identifikaˇcn´ı ˇc´ıslo. V nˇekter´ ych situac´ıch je to dokonce naprosto pˇrirozen´e. Pˇr´ıkladem m˚ uˇze b´ yt k´ od v´ yrobku. Alternativy vzoru jsou na obr´ azku 3.7.
Obr´ azek 3.7: Alternativy analytick´eho vzoru Name
18
N´ azev vzoru: Identification Scheme ˇ C´ıseln´ a identifikace: 5.2 Vzor Identification Scheme pouˇzijeme v pˇr´ıpadˇe, ˇze se na objekt odkazujeme podle nˇekolika, ˇcasto pevnˇe dan´ ych, identifikaˇcn´ıch sch´emat. Tato situace vznik´a ˇcasto pˇri integraci v´ıce syst´em˚ u vyuˇz´ıvaj´ıc´ıch stejnou evidenci objekt˚ u, pro nˇeˇz kaˇzd´ y subsyst´em vyuˇz´ıv´ a vlastn´ı zp˚ usob identifikace. Struktura vzoru je na obr´ azku 3.8.
Obr´ azek 3.8: Analytick´ y vzor Identification Scheme
Inventory and Accounting V mnoha syst´emech m´ame z´ajem sledovat pohyb urˇcit´ ych jednotek (nejˇcastˇeji penˇez) mezi r˚ uzn´ ymi m´ısty (nazvˇeme je u ´ˇcty). Pˇr´ıkladem m˚ uˇze b´ yt sledov´ an´ı nakl´ ad´ an´ı s finanˇcn´ımi prostˇredky ve spoleˇcnosti. D´ıky sadˇe vzor˚ u Inventory and Accounting m˚ uˇzeme urˇcit u ´ˇcty, kter´e n´as zaj´ımaj´ı, a efektivnˇe sledovat zmˇeny jejich obsahu vˇcetnˇe pˇr´ıˇcin tˇechto zmˇen. N´ azev vzoru: Account ˇ ıseln´ C´ a identifikace: 6.1 Vzor Account definuje objekt slouˇz´ıc´ı jako kontejner s ˇcastou zmˇenou obsahu. Takov´ y objekt si m˚ uˇzeme pˇredstavit jako u ´ˇcet, na kter´em se pohybuje v´ yˇse penˇez. D´ıky vzoru Account z´ısk´ame nejen informace o aktu´ aln´ım mnoˇzstv´ı penˇez na u ´ˇctu, ale tak´e celou historii zmˇen stavu u ´ˇctu. Struktura vzoru je na obr´ azku 3.9.
Obr´ azek 3.9: Analytick´ y vzor Account
19
N´ azev vzoru: Transactions ˇ C´ıseln´ a identifikace: 6.2 Zasad’me u ´ˇcet popsan´ y v´ yˇse do informaˇcn´ıho syst´emu banky a nadefinujme zvl´ aˇstn´ı u ´ˇcet i pro pen´ıze pˇrich´ azej´ıc´ı a odch´ azej´ıc´ı v hotovosti. Pak m˚ uˇzeme nadnesenˇe ˇr´ıci, ˇze v tomto syst´emu pen´ıze proch´ azej´ı finanˇcn´ım kolobˇehem aniˇz by nˇekde vznikaly ˇci zanikaly. V takov´em syst´emu je jistˇe uˇziteˇcn´e sledovat cestu penˇez mezi u ´ˇcty. K tomu vˇsak vzor Account nestaˇc´ı, protoˇze eviduje pouze zmˇeny stavu u ´ˇctu, ne jejich pˇr´ıˇciny (z jak´eho u ´ˇctu pen´ıze pˇriˇsly, na jak´ y u ´ˇcet pen´ıze putuj´ı). Vzor Transaction pˇrin´ aˇs´ı pr´ avˇe toto rozˇs´ıˇren´ı d´ıky propojen´ı kaˇzd´eho vkladu na u ´ˇcet s v´ ybˇerem stejn´e ˇc´astky z u ´ˇctu jin´eho. Struktura vzoru je na obr´ azku 3.10.
Obr´ azek 3.10: Analytick´ y vzor Transactions
Planning Sada vzor˚ u Planning pˇrin´ aˇs´ı nˇekter´e z´akladn´ı vzory pro podporu pl´ anov´ an´ı akc´ı. Patˇr´ı k nim vzory pro odliˇsen´ı napl´ anovan´ ych a realizovan´ ych akc´ı, vzory pro sestavov´ an´ı protokol˚ u napl´ anovan´ ych akc´ı ˇci vzory pro podporu pˇriˇrazen´ı zdroj˚ u napl´ anovan´ ym akc´ım. Sloˇzitˇejˇs´ı vzory pak nab´ızej´ı moˇznost definovat spouˇstˇec´ı podm´ınky pˇripraven´ ych protokol˚ u a stanovit jejich oˇcek´avan´e v´ ysledky. N´ azev vzoru: Proposed and Implemented Action ˇ ıseln´ C´ a identifikace: 8.1 Vzor Proposed and Implemented Action je urˇcen pro pˇr´ıpady, kdy m´ ame z´ajem uchov´ avat informace o akci ve dvou podob´ ach (jak byla akce napl´ anov´ ana, jak byla realizov´ ana). Takov´ y pˇr´ıstup n´ am v budoucnu umoˇzn´ı porovnat pl´ an s realitou a z´ıskat tak cenn´e zkuˇsenosti pro pl´ anov´ an´ı dalˇs´ıch akc´ı (napˇr´ıklad volba vˇetˇs´ı ˇcasov´e rezervy). Tento vzor poˇc´ıt´ a i s eventualitou, ˇze k realizaci akce dojde bez pˇredchoz´ıho pl´ anu, pˇr´ıpadnˇe ˇze pl´an nikdy nebude realizov´ an. Struktura vzoru je na obr´ azku 3.11. N´ azev vzoru: Completed and Abandoned Actions ˇ ıseln´ C´ a identifikace: 8.2 Vzor Completed and Abandoned Actions jde v tomto pˇr´ıstupu jeˇstˇe d´ ale a odliˇsuje i dokonˇcen´e (completed) a zruˇsen´e (abandoned) akce. Tento pˇr´ıstup je nutn´ y v syst´emech, kde je sloˇzit´e odliˇsit, zda akce st´ale bˇeˇz´ı nebo byla zruˇsena, pˇr´ıpadnˇe zda byla akce u ´spˇeˇsnˇe dokonˇcena ˇci nikoliv. Struktura vzoru je na obr´ azku 3.12.
20
Obr´ azek 3.11: Analytick´ y vzor Proposed and Implemented Action
Obr´ azek 3.12: Analytick´ y vzor Completed and Abandoned Actions
21
Trading Vzory sady Trading pˇrin´ aˇs´ı podporu pro obchodov´ an´ı a uzav´ır´ an´ı kontrakt˚ u. Z´ akladn´ı vzory se zamˇeˇruj´ı na definov´ an´ı jednotliv´ ych kontrakt˚ u, sloˇzitˇejˇs´ı vzory pak na odhad vhodn´e ceny v z´avislosti na v´ yvoji trhu a typu obchodn´ıho vztahu (prodej, koupˇe), pˇr´ıpadnˇe na moˇznosti seskupov´ an´ı kontrakt˚ u do dynamick´ ych skupin podle definovan´ ych krit´eri´ı. N´ azev vzoru: Contract ˇ C´ıseln´ a identifikace: 9.1 Vzor Contract definuje kontrakt jako vztah mezi prod´ avaj´ıc´ım (short) a kupuj´ıc´ım (long) u ´ˇcastn´ıkem obchodu. Pˇredmˇetem tohoto vztahu je obchodovan´e zboˇz´ı se stanovenou prodejn´ı/n´ akupn´ı cenou. Struktura vzoru je na obr´ azku 3.13.
Obr´ azek 3.13: Analytick´ y vzor Contract
N´ azev vzoru: Portfolio ˇ C´ıseln´ a identifikace: 9.2 V nˇekter´ ych pˇr´ıpadech je vhodn´e seskupovat kontrakty do skupin (portfoli´ı), na kter´e lze pohl´ıˇzet jako na celky. U takov´ ych skupin m˚ uˇzeme hodnotit jejich celkov´ y obchodn´ı pˇr´ınos podle zadan´eho sc´en´aˇre. Vzor Portfolio vyuˇz´ıv´ a k urˇcen´ı skupiny soubor podm´ınek naz´ yvan´ y filter. D´ıky filtru um´ıme pro kaˇzd´e portfolio rozhodnout, zda je kontrakt jeho souˇc´ast´ı ˇci nikoliv. Struktura vzoru je na obr´ azku 3.14.
Obr´ azek 3.14: Analytick´ y vzor Portfolio
22
Derivative Contracts Rozˇs´ıˇren´ım pˇredchoz´ı sady vzor˚ u jsou vzory pro podporu odvozen´ ych kontrakt˚ u. Nejˇcastˇejˇs´ı formou jsou kontrakty uzav´ıran´e s ˇcasovou rezervou. Tato rezerva m˚ uˇze b´ yt pevn´ a ˇci pohybliv´ a. V pˇr´ıpadˇe pevn´e ˇcasov´e rezervy se stanov´ı den naplnˇen´ı kontraktu, urˇc´ı se pevnˇe cena a na z´akladˇe toho se podep´ıˇse smlouva. Obchod se realizuje pˇresnˇe ve stanoven´ y den. Situace pˇri uzav´ır´ an´ı kontrakt˚ u s pohyblivou ˇcasovou rezervou je ponˇekud komplikovanˇejˇs´ı. Kupuj´ıc´ı pˇri dohodˇe kontraktu z´ısk´av´ a (kupuje) moˇznost naplnˇen´ı kontraktu bˇehem stanoven´eho ˇcasov´eho term´ınu. Z´ aleˇz´ı na nˇem, zda a pˇr´ıpadnˇe kdy t´eto moˇznosti vyuˇzije. N´ azev vzoru: Forward Contracts ˇ C´ıseln´ a identifikace: 10.1 Vzor Forward Contracts definuje kontrakt sjedn´ avan´ y s ˇcasov´ ym pˇredstihem. Kontraktu je tedy pˇriˇrazen ˇcasov´ y pˇredstih (Tenor ) a d´ ale dvˇe data reprezentuj´ıc´ı den uzavˇren´ı smlouvy a den naplnˇen´ı obchodu. Struktura vzoru je na obr´ azku 3.15.
Obr´ azek 3.15: Analytick´ y vzor Forward Contracts
Trading Packages Kapitola Trading Packages se zam´ yˇsl´ı nad ˇclenˇen´ım syst´emu s komplikovanou dom´enovou oblast´ı na bal´ıˇcky (Packages). Hlavn´ı ot´ azkou jsou zde vztahy mezi bal´ıˇcky a jejich vz´ajemn´a viditelnost. Vzory pˇredstaven´e v t´eto kapitole maj´ı uˇz sp´ıˇse architektonick´ y 2 charakter a tvoˇr´ı pˇrechod mezi prvn´ı a druhou ˇc´ast´ı knihy [10] .
2
Prvn´ı ˇca ´st knihy pˇredstavuje analytick´e vzory, druh´ a ˇca ´st knihy se vˇenuje pomocn´ ym vzor˚ um.
23
Kapitola 5
Uk´ azka pouˇ zit´ı vzor˚ u na ilustraˇ cn´ı aplikaci Pro uk´ azku vybran´ ych analytick´ ych a n´ avrhov´ ych vzor˚ u jsme zvolili aplikaci pˇredstavenou v knize [5] pod n´ azvem Ollie’s Order Centre. V n´ asleduj´ıc´ım textu se nejprve sezn´am´ıme s popisem aplikace a jej´ım analytick´ ym modelem. D´ale tento model rozˇs´ıˇr´ıme o vhodn´e analytick´e vzory a pot´e si pˇribl´ıˇz´ıme nasazen´ı nˇekolika n´ avrhov´ ych vzor˚ u.
5.1
Popis aplikace
Popis aplikace se skl´ad´ a ze tˇr´ı ˇc´ast´ı. Zaˇcneme popisem souˇcasn´eho syst´emu pˇrij´ım´an´ı a vyˇrizov´ an´ı objedn´ avek, kter´ y je zaloˇzen jen na b´ azi telefonu, faxu, tuˇzky a pap´ıru. D´ ale nadefinujeme c´ıl zaveden´ı informaˇcn´ıho syst´emu pro podporu chodu objedn´ avkov´eho centra. Nakonec vyspecifikujeme rysy tohoto syst´emu. Popis aplikace je struˇcn´ ym v´ ytahem z [5]. V pˇr´ıpadˇe potˇreby bliˇzˇs´ıho pochopen´ı analyzovan´eho syst´emu proto odkazuji na podrobn´e prostudov´ an´ı tohoto zdroje. Vzhledem k tomu, ˇze popis aplikace uv´ ad´ıme pˇredevˇs´ım z d˚ uvodu snazˇs´ıho pochopen´ı celkov´eho analytick´eho modelu, uv´ ad´ıme na nˇekter´ ych m´ıstech popisu v z´avork´ ach origin´ aln´ı n´ azvy popisovan´ ych objekt˚ u. Tyto n´ azvy koresponduj´ı s n´ azvy pouˇzit´ ymi v modelech.
Souˇ casn´ y stav Objedn´ avky na zboˇz´ı jsou pˇrij´ım´any telefonicky oper´ atorem (v [5] nazv´ an Ollie), kter´ y tvoˇr´ı prostˇredn´ıka mezi z´akazn´ıkem a jedn´ım z distributor˚ u. Ollie pˇrij´ım´a objedn´ avky pouze od z´akazn´ık˚ u, kteˇr´ı reprezentuj´ı nˇejakou organizaci (ne od samostatn´ ych osob). Po zaps´an´ı objedn´ avky Ollie odfaxuje objedn´ avku vybran´emu distributorovi, kter´ y zajist´ı doruˇcen´ı objednan´eho zboˇz´ı z jednoho ze sv´ ych sklad˚ u. Sklad je vybr´ an na z´ akladˇe z´akazn´ıkovy doruˇcovac´ı adresy. Po u ´spˇeˇsn´em doruˇcen´ı zboˇz´ı z´akazn´ıkovi distributor odfaxuje do objedn´ avkov´eho centra informace o vyˇr´ızen´ı objedn´ avky. Ollie tyto informace pˇrevezme a pˇred´ a u ´ˇcetn´ımu oddˇelen´ı. Z pˇredchoz´ıho popisu vypl´ yv´ a, ˇze n´as u kaˇzd´e objedn´ avky (Order ) zaj´ımaj´ı informace o z´akazn´ıkovi jakoˇzto organizaci (Customer ), osobˇe, kter´ a objedn´ avku v zastoupen´ı z´akazn´ıka vyˇrizovala (CustomerContact), zvolen´em distributorovi (Distributor ), osobˇe,
55
kter´ a vyˇrizuje objedn´ avku na stranˇe distributora (OrderClerk ), skladu, ze kter´eho m´a b´ yt zboˇz´ı dod´ ano (Warehouse), a samozˇrejmˇe o objednan´em zboˇz´ı (Item).
C´ıl zaveden´ı informaˇ cn´ıho syst´ emu Zv´ yˇsit efektivitu a pˇresnost pˇr´ıj´ım´an´ı objedn´ avek, doruˇcov´an´ı zboˇz´ı a placen´ı za objednan´e zboˇz´ı.
Rysy navrhovan´ eho syst´ emu Rysy navrhovan´eho syst´emu m˚ uˇzeme podle [5] rozdˇelit do ˇctyˇr skupin. Prvn´ı skupina charakterizuje d˚ uleˇzit´e informace, kter´e chceme v syst´emu evidovat, druh´ a obsahuje provozn´ı funkce, tˇret´ı statistick´e funkce pro podporu anal´ yzy obchodn´ıch v´ ysledk˚ u a posledn´ı skupina popisuje interakce s dalˇs´ımi syst´emy. Evidence d˚ uleˇ zit´ ych informac´ı • zboˇz´ı a jeho ceny (Item) • daˇ nov´e sazby (TaxCategory) • oper´ atoˇri distributora (OrderClerk ) • sklady (Warehouse) • z´akazn´ıci (Customer ) • obsah jednotliv´ ych sklad˚ u (WarehouseLineItem) • objedn´ avky a jejich stavy (Order ) Provozn´ı funkce pro podporu obchodu • v´ ypoˇcet celkov´e ceny objedn´ avky • d´ılˇc´ı v´ ypoˇcet ceny objedn´ avky (mezisouˇcet pro vybran´e zboˇz´ı, v´ yˇse danˇe) • v´ ybˇer objedn´ avky k vyˇr´ızen´ı (na z´ akladˇe priority z´ akazn´ıka a data zad´ an´ı objedn´ avky) Anal´ yza obchodn´ıch v´ ysledk˚ u • v´ ypoˇcet v´ ykonnosti distributora • v´ ypoˇcet v´ ykonnosti oper´ atora • v´ ypoˇcet vyt´ıˇzen´ı skladu Interakce s dalˇ s´ımi syst´ emy • skladov´ y syst´em v´ ystup: objedn´ avky vstup: doruˇcen´ı objedn´ avky • u ´ˇcetn´ı syst´em v´ ystup: informace o objedn´ avk´ ach a jejich doruˇcen´ı z´akazn´ıkovi
56
V´ ysledn´ y model aplikace Na obr´ azku 5.1 je uveden analytick´ y model aplikace Ollie’s Order Centre pˇrevzat´ y z knihy [5] a pˇreveden´ y do syntaxe UML.
Obr´ azek 5.1: Analytick´ y model aplikace Ollie’s Order Centre
57
5.2
Pouˇ zit´ı analytick´ ych vzor˚ u
Pro nasazen´ı analytick´ ych vzor˚ u zvol´ıme metodu dosazov´an´ı vzor˚ u do v´ ysledn´eho analytick´eho modelu. Budeme tedy systematicky proch´ azet vˇsechny analytick´e vzory (v naˇsem pˇr´ıpadˇe pouze vzory pˇredstaven´e v kapitole 3.2.2) a hledat v nich podobnost s ˇc´astmi navrhovan´e aplikace. Nasazov´an´ı analytick´ ych vzor˚ u pˇrin´ aˇs´ı mnoho doplˇ nuj´ıc´ıch ot´ azek, kter´e n´ am pomohou zacelit znalostn´ı mezery v dom´enov´e oblasti, kter´e bychom jinak nemuseli objevit. Analytick´e modely zn´azorˇ nuj´ıc´ı postupn´e nasazov´an´ı popisovan´ ych analytick´ ych vzor˚ u jsou uvedeny v pˇr´ıloze A. Je proto vhodn´e ˇc´ıst n´ asleduj´ıc´ı text spolu s nahl´ıˇzen´ım do t´eto pˇr´ılohy.
Accountability Vzor Party Pokusme se v analytick´em modelu naj´ıt adepty na vzor Party, tj. dvojice Person– Organization. Na prvn´ı pohled vid´ıme 3 adepty: CustomerContact–Customer, OrderClerk– ˇ adn´ Distributor a Person–Organization. Z´ a z tˇechto dvojic se vˇsak pro pouˇzit´ı vzoru Party nehod´ı, protoˇze se nepod´ıl´ı na spoleˇcn´ ych operac´ıch. Dokonce lze nahl´ednout, ˇze model neumoˇzn ˇuje rovn´e postaven´ı osoby a organizace. Nab´ız´ı se tedy ot´azka, zda m˚ uˇze nastat re´aln´ a situace, kdy je rovn´e postaven´ı osoby a organizace nutn´e. Touto situac´ı m˚ uˇze b´ yt objedn´ avka zboˇz´ı samostatnou osobou, kter´ a nereprezentuje ˇz´adnou organizaci. V tom pˇr´ıpadˇe bychom pohl´ıˇzeli na z´akazn´ıka rovn´ ym zp˚ usobem bez ohledu na to, zda je osobou ˇci organizac´ı. Ot´ azka analytika: Pˇrem´ yˇsl´ıte do budoucna o zpˇr´ıstupnˇen´ı objedn´ avek i samostatn´ ym osob´am, kter´e nereprezentuj´ı ˇz´adnou organizaci? Odpovˇed’: Ano, v budoucnu tuto moˇznost pravdˇepodobnˇe zavedeme. Vytvoˇr´ıme tedy nov´ y objekt reprezentuj´ıc´ı z´akazn´ıka jakoˇzto osobu (CustomerPerson) ´ castn´ıka, kter´ a nasad´ıme vzor Party. Uˇ y tvoˇr´ı nadtyp objekt˚ u Customer a CustomerPerson, nazveme CustomerParty. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.1 v pˇr´ıloze A. Vzor Accountability Vzhledem k tomu, ˇze v modelu aplikace nepouˇz´ıv´ ame ˇz´adnou formu organizaˇcn´ı struktury, pro kterou by bylo vhodn´e zav´est zodpovˇednosti mezi jej´ı u ´ˇcastn´ıky, vzor Accountability vynech´ ame.
Observations and Measurements Vzor Quantity Vzor Quantity je vhodn´ y ve vˇsech situac´ıch, kdy u objekt˚ u zaznamen´av´ ame kvantitativn´ı charakteristiky v r˚ uzn´ ych jednotk´ ach. Jako objekt s nˇekolika kvantitativn´ımi charakteristikami se n´am pˇr´ımo nab´ız´ı objekt Item, kter´ y reprezentuje nab´ızen´e zboˇz´ı. Ot´ azka analytika: L´ıbilo by se v´ am m´ıt moˇznost zapisovat nˇekter´e vlastnosti zboˇz´ı ve v´ıce r˚ uzn´ ych jednotk´ ach? Odpovˇed’: Ano, tato moˇznost by byla dobr´ a napˇr´ıklad u v´ ahy, kterou r˚ uzn´ı v´ yrobci uv´ adˇej´ı v r˚ uzn´ ych jednotk´ ach. 58
Pouˇzijeme tedy vzor Quantity a seznam vlastnost´ı jeˇstˇe dopln´ıme o rozmˇery (v´ yˇsku, ˇs´ıˇrku, hloubku) a cenu. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.2 v pˇr´ıloze A. Vzor Conversion Ratio Po zaveden´ı vzoru Quantity se nab´ız´ı ot´ azka, zda zav´est tak´e vzor Conversion Ratio, abychom umoˇznili prov´ adˇen´ı aritmetick´ ych a jin´ ych operac´ı s hodnotami vlastnost´ı zapsan´ ych v r˚ uzn´ ych jednotk´ ach. Ot´ azka analytika: Napad´ a v´ as aritmetick´a nebo jin´ a operace, kter´a by mˇela b´ yt prov´ adˇena na hodnot´ ach zboˇz´ı zapsan´ ych v r˚ uzn´ ych jednotk´ ach? Odpovˇed’: Ano, napˇr´ıklad v´ ypoˇcet v´ ysledn´e v´ahy objednan´eho zboˇz´ı kv˚ uli poˇstovn´emu. Zavedeme tedy vzor Conversion Ratio. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.3 v pˇr´ıloze A.
Observations for Corporate Finance Vzor Enterprise Segment Vzor Enterprise Segment bychom pouˇzili v pˇr´ıpadˇe z´ajmu sledovat odbyt jednotliv´eho zboˇz´ı. To vˇsak nen´ı c´ılem navrhovan´eho syst´emu, a proto to ponech´ ame na informaˇcn´ıch syst´emech jednotliv´ ych distributor˚ u, ve kter´ ych to uˇz pravdˇepodobnˇe implementov´ano je.
Referring to Objects Vzor Name Pro pˇr´ıpad nasazen´ı tohoto vzoru budeme v modelu hledat objekty, u kter´ ych by mohlo b´ yt vhodn´e pouˇzit´ı v´ıce jmen. Opˇet se nab´ız´ı objekt Item. Ten uˇz dokonce v´ıce identifikaˇcn´ıch jmen m´a. Je to jednak jeho ˇc´ıslo (number) a jednak jeho UPC (Uniform Product Code). Dokonce m˚ uˇzeme ˇr´ıct, ˇze tato dvˇe jm´ena reprezentuj´ı dvˇe identifikaˇcn´ı sch´emata, ˇc´ımˇz se dost´ av´ ame k n´ asleduj´ıc´ımu vzoru. Vzor Identification Scheme Vzhledem k tomu, ˇze k pojmenov´ an´ı zboˇz´ı pouˇz´ıv´ ame v´ıce identifikaˇcn´ıch sch´emat, zavedeme vzor Identification Scheme. Situace by byla jeˇstˇe zaj´ımavˇejˇs´ı v pˇr´ıpadˇe, ˇze by jedno zboˇz´ı mohlo b´ yt dod´ av´ ano v´ıce distributory. Ot´ azka analytika: St´ av´ a se nˇekdy, ˇze jedno zboˇz´ı dod´ av´ a v´ıce distributor˚ u? Odpovˇed’: Ano, ale vzhledem k tomu, ˇze m´a toto zboˇz´ı ˇcasto odliˇsn´e pojmenov´ an´ı, povaˇzujeme ho za r˚ uzn´e zboˇz´ı. Sjednot´ıme stejn´e zboˇz´ı nab´ızen´e r˚ uzn´ ymi distributory pomoc´ı identifikaˇcn´ıho sch´ematu, kter´e vyjadˇruje pojmenov´ an´ı a identifikaci vybran´ ym distributorem. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.4 v pˇr´ıloze A.
59
Inventory and Accounting Vzor Account Vzor Account pouˇzijeme v pˇr´ıpadˇe, ˇze v modelu objev´ıme kontejnery, u kter´ ym m´ame z´ajem o veden´ı evidence zmˇen jejich obsahu. Takov´ ym kontejnerem je sklad, jehoˇz obsah se m˚ uˇze mˇenit s prodejem z´ akazn´ıkovi, n´ akupem distributorem nebo pˇresunem mezi sklady. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.5 v pˇr´ıloze A. Vzor Transactions Vzor Transaction pouˇzijeme v pˇr´ıpadˇe, ˇze ke zmˇenˇe obsahu skladu doch´ az´ı pˇresunem z jin´eho skladu a my chceme evidovat z jak´eho. To by vˇsak znamenalo zaveden´ı dvou nov´ ych abstraktn´ıch sklad˚ u s neomezenou kapacitou reprezentuj´ıc´ıch prodej z´ akazn´ıkovi a naplnˇen´ı distributorem. Ot´ azka analytika: Bylo by pro v´ as zaj´ımav´e evidovat, zda ke zmˇenˇe obsahu skladu doˇslo n´ akupem, prodejem nebo pˇresunem mezi sklady? Odpovˇed’: Ne, to jsou intern´ı informace distributora, kter´e n´am nesdˇeluje. Vzor Transaction proto vynech´ ame.
Planning Vzor Proposed and Implemented Action Pokusme se v modelu naj´ıt vˇsechny akce, kter´e by mohlo b´ yt vhodn´e pl´ anovat. Je to objedn´ avka (Order) a doruˇcen´ı objedn´ avky (Shipment). Pod´ıvejme se bl´ıˇze na stavy, kter´ ymi tyto akce proch´ az´ı. • Order – objedn´ avka pˇrijata od z´ akazn´ıka – objedn´ avka pˇrevzata k vyˇr´ızen´ı a pˇred´ ana distributorovi – objedn´ avka pˇrevzata distributorem k vyˇr´ızen´ı • Shipment – zboˇz´ı odesl´ano z´akazn´ıkovi – zboˇz´ı doruˇceno a pˇrijato z´ akazn´ıkem Lze nahl´ednout, ˇze dvojice Order a Shipment spoleˇcnˇe tvoˇr´ı akci, kterou m˚ uˇzeme nazvat koupˇe zboˇz´ı (Purchase). Tato akce pˇreb´ır´ a stavy obou p˚ uvodn´ıch akc´ı. • Purchase – objedn´ avka pˇrijata od z´ akazn´ıka – objedn´ avka pˇrevzata k vyˇr´ızen´ı a pˇred´ ana distributorovi – objedn´ avka pˇrevzata distributorem k vyˇr´ızen´ı – zboˇz´ı odesl´ano z´akazn´ıkovi – zboˇz´ı doruˇceno a pˇrijato z´ akazn´ıkem Ze stav˚ u akce Purchase m˚ uˇzeme odvodit, ˇze prvn´ı stav je pl´ anem akce a druh´ y stav je zaˇc´atkem realizace akce. Tento i n´asleduj´ıc´ı vzor nasad´ıme do modelu sp´ıˇse z ilustrativn´ıho d˚ uvodu. Objedn´ avka totiˇz neobsahuje podstatn´e vlastnosti, kter´e by se mohly liˇsit u napl´ anovan´e a realizovan´e varianty objedn´ avky. Takovou vlastnost´ı by mohlo b´ yt 60
pl´ anovan´e datum doruˇcen´ı objednan´eho zboˇz´ı. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.6 v pˇr´ıloze A. Vzor Completed and Abandoned Actions Zamysleme se nyn´ı nad t´ım, zda je v naˇs´ı situaci vhodn´e rozezn´avat u koupˇe zboˇz´ı i dokonˇcen´e a zruˇsen´e koupˇe. Je zˇrejm´e, ˇze akci Purchase prohl´ as´ıme za dokonˇcenou po pr˚ uchodu posledn´ım stavem. Umoˇzn ˇujeme vˇsak zruˇsen´ı akce? V souˇcasn´em modelu ne. Pokud chceme zruˇsen´ı akce umoˇznit, budeme muset zav´est nov´ y stav a naj´ıt m´ısta v posloupnosti stav˚ u, na kter´ ych m˚ uˇze tento stav nastat. • Purchase – objedn´ avka pˇrijata od z´ akazn´ıka – [objedn´ avka zruˇsena] – objedn´ avka pˇrevzata k vyˇr´ızen´ı a pˇred´ ana distributorovi – [objedn´ avka zruˇsena] – objedn´ avka pˇrevzata distributorem k vyˇr´ızen´ı – [objedn´ avka zruˇsena] – zboˇz´ı odesl´ano z´akazn´ıkovi – zboˇz´ı doruˇceno a pˇrijato z´ akazn´ıkem Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.7 v pˇr´ıloze A.
Trading Vzor Contract Vzor Contract se v naˇsem modelu jiˇz vyskytuje. Kontraktem je v tomto pˇr´ıpadˇe objedn´ avka, kupuj´ıc´ım je z´akazn´ık (CustomerParty) a prod´ avaj´ıc´ım distributor (Distributor ). Obchodovan´ ym artiklem je zboˇz´ı (Item). Vymezen´ı instance vzoru v r´ amci analytick´eho modelu je zachyceno na obr´ azku 6.8 v pˇr´ıloze A. Vzor Portfolio Vzor Portfolio pouˇzijeme v pˇr´ıpadˇe, ˇze chceme definovat podm´ınky, podle kter´ ych m˚ uˇzeme ze vˇsech kontrakt˚ u vyb´ırat jen ty se zadan´ ymi vlastnostmi. Ot´ azka analytika: Bylo by pro v´ as v´ yhodn´e definovat si podm´ınky, podle kter´ ych m˚ uˇzete n´ aslednˇe vyb´ırat vyhovuj´ıc´ı objedn´ avky? Odpovˇed’: Takov´ a funkce by pro n´ as byla urˇcitˇe zaj´ımav´ a. Zavedeme tedy vzor Portfolio. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.9 v pˇr´ıloze A.
Derivative Contracts Vzor Forward Contracts Pouˇzit´ı vzoru Forward Contracts se pˇr´ımo nab´ız´ı pro umoˇznˇen´ı sjedn´ an´ı objedn´ avky s ˇcasov´ ym pˇredstihem. Ot´ azka analytika: Chtˇeli byste umoˇznit sv´ ym z´akazn´ık˚ um zad´ avat objedn´ avky s ˇcasov´ ym
61
pˇredstihem? Napˇr´ıklad 2 mˇes´ıce pˇred pl´ anovanou realizac´ı objedn´ avky. ’ Odpovˇed : Ano, uˇz to po n´ as dokonce nˇekteˇr´ı z´akazn´ıci vyˇzadovali. Zavedeme tedy vzor Forward Contracts. Zasazen´ı instance vzoru do analytick´eho modelu je zachyceno na obr´ azku 6.11 v pˇr´ıloze A.
5.3
Pouˇ zit´ı n´ avrhov´ ych vzor˚ u
Pˇri uk´ azce pouˇzit´ı n´ avrhov´ ych vzor˚ u bohuˇzel nen´ı moˇzn´e nab´ıdnout pohled na zasazen´ y vzor v kontextu cel´e aplikace. D˚ uvod je ten, ˇze na rozd´ıl od analytick´eho modelu je n´ avrhov´ y model velice rozs´ahl´ y. V t´eto kapitole proto budeme postupovat tak, ˇze si nast´ın´ıme nˇekter´e probl´emy, kter´e mohou pˇri n´ avrhu uk´ azkov´e aplikace vyvstat, a uk´ aˇzeme ˇreˇsen´ı tˇechto probl´emu pomoc´ı n´ avrhov´ ych vzor˚ uvu ´zk´em kontextu nˇekolika tˇr´ıd. Modely jednotliv´ ych ˇreˇsen´ı jsou uvedeny v pˇr´ıloze B. Je proto vhodn´e ˇc´ıst n´ asleduj´ıc´ı text spolu s nahl´ıˇzen´ım do t´eto pˇr´ılohy.
N´ avrhov´ e vzory GoF Vzor Adapter Probl´em: Chceme v syst´emu umoˇznit funkci vyhled´ an´ı zboˇz´ı podle zadan´eho jm´ena. K tˇemto u ´ˇcel˚ um nab´ız´ıme rozhran´ı SearchByName, kter´e definuje metodu searchByName(value:String). Z dˇr´ıvˇejˇs´ıch projekt˚ u m´ ame naprogramovanou tˇr´ıdu 1 av´ an´ı zboˇz´ı v datab´ azi. Tato tˇr´ıda vˇsak implemenItemDM realizuj´ıc´ı efektivn´ı vyhled´ tuje obecnˇejˇs´ı metodu search(atribut:Atribut, value:String), kter´ a vyhled´ av´ a zboˇz´ı podle hodnoty zadan´e vlastnosti. Hled´ ame tedy ˇreˇsen´ı, jak tuto tˇr´ıdu zapojit do naˇseho syst´emu. ˇ sen´ı: Vyuˇzijeme vzor Adapter (variantu Object). D´ıky tomu pˇresmˇerujeme vol´an´ı meReˇ tody searchByName(myValue) na nov´ y objekt pomoc´ı itemDM->search(name, myValue). V´ ysledn´ a instance vzoru je na obr´ azku 6.12 v pˇr´ıloze B. Vzor Facade Probl´em: Rozhodli jsme se vytvoˇrit k aplikaci Ollie’s Order Centre tenk´eho webov´eho klienta, pˇres nˇejˇz budou moci z´ akazn´ıci zad´ avat objedn´ avky sami pˇres webov´e rozhran´ı. Tomuto klientovi vˇsak chceme zpˇr´ıstupnit pouze omezenou sadu funkc´ı a viditelnˇe ho oddˇelit od zbytku aplikace. ˇ sen´ı: Pouˇzijeme vzor Facade. Nadefinujeme rozhran´ı zpˇr´ıstupˇ Reˇ nuj´ıc´ı pouze nˇekolik nezbytn´ ych funkc´ı jako je v´ ypis zboˇz´ı, vyhled´ an´ı zboˇz´ı na z´ akladˇe jm´ena a zad´ an´ı objedn´ avky a k tomuto rozhran´ı pˇripoj´ıme tenk´eho webov´eho klienta. V´ ysledn´ a instance vzoru je na obr´ azku 6.13 v pˇr´ıloze B. Vzor Proxy Probl´em: Kdyˇz se zamysl´ıme nad funkcemi poskytovan´ ymi tˇr´ıdou Warehouse (pˇredevˇs´ım nad funkc´ı selectNextOrder), mus´ı n´ as napadnout, ˇze je objedn´ avkov´ a aplikace nem´a pr´ avo implementovat. Spr´ avnˇe by mˇela implementaci tˇechto funkc´ı pˇrenechat objekt˚ um 1
ItemDM je tˇr´ıda pro spr´ avu objekt˚ u tˇr´ıdy Item, zkratka DM zastupuje v´ yraz Data Manager
62
Literatura [1] Arlow, J., Neustadt, I.: UML a unifikovan´y proces v´yvoje aplikac´ı. Brno, Computer Press 2003. [2] Bollinger, G., Natarajan, B.: JSP – Java Server Pages. Praha, Grada 2003. ˇ anek dostupn´ [3] Carroll, E.: Lightweight and Agile Software Development. Cl´ y na http://www.acm.org/ubiquity/views/e carroll 1.html (kvˇeten 2004). [4] Ceri, S., Fraternali, P., Bongio, A.: Web Modeling Language (WebML): a modeling language for designing Web sites. Italia, Milano, Politecnico di Milano, dokument dostupn´ y na www.webml.org/webml/upload/ent5/1/www9.pdf (kvˇeten 2004). [5] Coad, P.: Object Models – Strategies, Patterns and Applications. USA, Upper Saddle River, Yourdon Press 1997. [6] Coddington, A.: Systes Analysis & Design. UK, Glasgow, University of Strathclyde, dokument dostupn´ y na https://www.cis.strath.ac.uk/teaching/ug/classes/52.234/week1.pdf (kvˇeten 2004). [7] Conallen, J.: Building Web Applications with UML. USA, Boston, Addison-Wesley 2003. [8] Crawford, W., Kaplan, J.: J2EE Design Patterns. USA, Sebastopol, O’Reilly & Associates 2003. [9] Cunningham & Cunningham, Inc. – consultancy specialized in object-oriented programming. Slovn´ık pojm˚ u z OOP dostupn´ y na http://c2.com/cgi/wiki?SearchWords (kvˇeten 2004). [10] Fowler, M.: Analysis Patterns – Reusable Object Models. USA, Menlo Park, Addison-Wesley 1997. [11] Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. USA, Reading, Addison-Wesley 1995. [12] Kraval, I.: Design Patterns v OOP. Elektronick´ a kniha vydan´ a na http://www.objects.cz, 2002. [13] Marinescu, F.: EJB Design Patterns – Advanced Patterns, Processes, and Idioms. USA, New York, John Wiley & Sons 2002. [14] Martin, R.: Agile Software Development – Principles, Patterns, and Practices. USA, Upper Saddle River, Prentice Hall 2002. 67
ˇ e [15] Molhanec, M.: Metodologie orientovan´e na tvorbu webov´ych s´ıdel. Praha, Cesk´ vysok´e uˇcen´ı technick´e, dokument dostupn´ y na http://martin.feld.cvut.cz/~mmm/VaV/files/publik/2003/WebMet-co.pdf (kvˇeten 2004). [16] Molhanec, M.: WebML – Objektovˇe orientovan´ a metodika pro tvorbu webov´ych s´ıdel. ˇ Praha, Cesk´e vysok´e uˇcen´ı technick´e, dokument dostupn´ y na http://martin.feld.cvut.cz/~mmm/VaV/files/publik/2003/WebML-CO.pdf (kvˇeten 2004). [17] Monday, P.: Web Service Patterns: Java Edition. USA, Berkeley, Apress 2003. [18] Offutt, J.: Web Software Applications Quality Attributes. USA, Fairfax, George Mason University, dokument dostupn´ y na http://www.isse.gmu.edu/faculty/ofut/rsrch/papers/conquest02.pdf (kvˇeten 2004). [19] Page-Jones, M.: Z´ aklady objektovˇe orientovan´eho n´ avrhu v UML. Praha, Grada 2001. [20] Pol´ ak, J., Merunka, V., Carda, A.: Umˇen´ı syst´emov´eho n´ avrhu. Praha, Grada 2003. ˇ anek dostupn´ [21] Provost, W.: UML for Web Services. Cl´ y na http://webservices.xml.com/pub/a/ws/2003/08/05/uml.html (kvˇeten 2004). [22] Schmidt, D.: Pattern-Oriented Software Architecture – Patterns for Concurrent and Networked Objects. USA, St. Louis, Washington University, dokument dostupn´ y na http://www.cs.wustl.edu/~schmidt/posa2.ppt (kvˇeten 2004). [23] Schmidt, D., Stal, M., Rohnert, H., Buschmann, F.: Pattern-Oriented Software Architecture – Patterns for Concurrent and Networked Objects. USA, New York, Wiley & Sons 2000. [24] Yacoub, S., Ammar, H.: Pattern-Oriented Analysis and Design – Composing Patterns to Design Software Systems. USA, Boston, Addison-Wesley 2003. [25] Zelen´ y, J., Noˇziˇcka, J.: COM+, CORBA, EJB. Praha, BEN – technick´ a literatura 2002.
68
Pˇ r´ıloha A Pˇr´ıloha obsahuje analytick´e modely ilustruj´ıc´ı postupn´e nasazov´an´ı analytick´ ych vzor˚ u popsan´e v kapitole 5.2.
Obr´ azek 6.1: Zasazen´ı vzoru Party do analytick´eho modelu
69
Obr´ azek 6.2: Zasazen´ı vzoru Quantity do analytick´eho modelu
Obr´ azek 6.3: Zasazen´ı vzoru Conversion Ratio do analytick´eho modelu
70
Obr´ azek 6.4: Zasazen´ı vzoru Identification Scheme do analytick´eho modelu
Obr´ azek 6.5: Zasazen´ı vzoru Account do analytick´eho modelu
71
Obr´ azek 6.6: Zasazen´ı vzoru Proposed and Implemented Action do analytick´eho modelu
Obr´ azek 6.7: Zasazen´ı vzoru Completed and Abandoned Actions do analytick´eho modelu
72
Obr´ azek 6.8: Zasazen´ı vzoru Contract do analytick´eho modelu
Obr´ azek 6.9: Zasazen´ı vzoru Portfolio do analytick´eho modelu
73
Obr´ azek 6.10: Zasazen´ı vzoru Forward Contracts do analytick´eho modelu
74
Obr´ azek 6.11: V´ ysledn´ y model po nasazen´ı analytick´ ych vzor˚ u
75