86
- 1 - Objektovo-orientovaný prístup a jeho vlastnosti Objektovo orientovaný (OO) prístup sa začal presadzovať v osemdesiatych, ale najmä deväťdesiatych rokoch. Medzi vlastnosťami a výhodami OO prístupu existuje určitá priama súvislosť. Ak sa definuje objektová paradigma ako budovanie IS pomocou základných stavebných prvkov - objektov, potom zapúzdrenosť alebo uzatvorenosť (encapsulation) je jeho prvou vlastnosťou, využívanou z dvoch hľadísk: 1. Zapuzdrenie sémanticky a funkčne príbuzných dát (dátovej štruktúry, atribútov objektu) a funkcií (modelujúcich správanie a služby objektu) do jedného celku objektu. Spojenie dát a funkcií zlepšuje čitateľnosť, stabilitu a prepojenia. Pri zmene štruktúry dát existuje možnosť okamžite meniť aj príslušné algoritmy, ktoré s nimi pracujú. Okolie má prístup k dátam najčastejšie len sprostredkovane. Spojením dátovej a funkčnej špecifikácie, sledovaní dynamickej komunikácie a vzťahov medzi objektmi a triedami sa vyraďuje divergencia dátových a programových štruktúr so všetkými problémami a nedostatkami, ktoré vznikali v štruktúrovanej analýze a návrhu. 2. Uzavretosť a zapuzdrenie štruktúry dát a funkcií v rámci objektu pomocou definovania úrovne prístupu. Členské funkcie, ale aj dáta môžu byť prístupné všetkým (public - verejné), prístupné len členským funkciám triedy (private - súkromné) a prístupné členským funkciám triedy a tried od nej odvodených (protected - chránené). Túto vlastnosť označujeme aj ako viditeľnosť (visibility). Metódy sú najčastejšie typu public, aby k nim bolo možné pristupovať nielen v členských funkciách triedy, ale aj kdekoľvek v programe. Okrem riadiacich a výpočtových operácií pokrývajú metódy aj V/V operácie - interface, ktorý chráni atribúty pred neautorizovanou zmenou, ktorá by mohla narušit konzistenciu prostredia. Atribúty sú preto najčastejšie typu private, aby ich nebolo možné priamo meniť, ale len prostredníctvom metód často označovaných ako GetAt() a SetAt() (ktoré vracajú a nastavujú hodnotu atribútu At). Môžu však byť aj typu protected, aby bol zabezpečený ich prenos dedením do odvodených tried. Objektovo-orientovaný prístup je založený na práci s objektom (object) ako základným elementom, z ktorého sa skladá skúmaný systém a navrhovaný projekt.

Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 1 -

Objektovo-orientovaný prístup a jeho vlastnosti

Objektovo orientovaný (OO) prístup sa začal presadzovať v osemdesiatych, ale najmä

deväťdesiatych rokoch. Medzi vlastnosťami a výhodami OO prístupu existuje určitá priama

súvislosť. Ak sa definuje objektová paradigma ako budovanie IS pomocou základných

stavebných prvkov - objektov, potom zapúzdrenosť alebo uzatvorenosť (encapsulation) je

jeho prvou vlastnosťou, využívanou z dvoch hľadísk:

1. Zapuzdrenie sémanticky a funkčne príbuzných dát (dátovej štruktúry, atribútov

objektu) a funkcií (modelujúcich správanie a služby objektu) do jedného celku

– objektu. Spojenie dát a funkcií zlepšuje čitateľnosť, stabilitu a prepojenia.

Pri zmene štruktúry dát existuje možnosť okamžite meniť aj príslušné

algoritmy, ktoré s nimi pracujú. Okolie má prístup k dátam najčastejšie len

sprostredkovane. Spojením dátovej a funkčnej špecifikácie, sledovaní

dynamickej komunikácie a vzťahov medzi objektmi a triedami sa vyraďuje

divergencia dátových a programových štruktúr so všetkými problémami a

nedostatkami, ktoré vznikali v štruktúrovanej analýze a návrhu.

2. Uzavretosť a zapuzdrenie štruktúry dát a funkcií v rámci objektu pomocou

definovania úrovne prístupu. Členské funkcie, ale aj dáta môžu byť prístupné

všetkým (public - verejné), prístupné len členským funkciám triedy (private -

súkromné) a prístupné členským funkciám triedy a tried od nej odvodených

(protected - chránené). Túto vlastnosť označujeme aj ako viditeľnosť

(visibility). Metódy sú najčastejšie typu public, aby k nim bolo možné

pristupovať nielen v členských funkciách triedy, ale aj kdekoľvek v programe.

Okrem riadiacich a výpočtových operácií pokrývajú metódy aj V/V operácie -

interface, ktorý chráni atribúty pred neautorizovanou zmenou, ktorá by mohla

narušit konzistenciu prostredia. Atribúty sú preto najčastejšie typu private, aby

ich nebolo možné priamo meniť, ale len prostredníctvom metód často

označovaných ako GetAt() a SetAt() (ktoré vracajú a nastavujú hodnotu atribútu

At). Môžu však byť aj typu protected, aby bol zabezpečený ich prenos dedením

do odvodených tried.

Objektovo-orientovaný prístup je založený na práci s objektom (object) ako základným

elementom, z ktorého sa skladá skúmaný systém a navrhovaný projekt.

Page 2: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 2 -

Objekt môže byť akákoľvek entita, ktorú tak označíme a budeme ju skúmať: človek,

budova, formulár, účet, počítač, pokladňa.

Objektom môže byť aj abstraktná jednotka alebo štruktúra, ktorá nám napomôže

modelovať skúmanú časť univerza. Objekt je aj súčasťou programu alebo operačného

systému, čisto objektovo-orientované programy a OS sa skladajú len z objektov, čím je

zabezpečený unifikovaný prístup, správanie, možnosť dedenia, agregácie a podobne.

Objekt vlastní okrem svojej identifikácie (OID - Object ID), svojho mena aj svoje

atribúty (členské dáta, attributes) a metódy (členské funkcie, methods).

Vyznačuje sa istým správaním (behaviour) a službami (services) voči ostatným

objektom a okoliu.

Abstrakciou objektov s rovnakými vlastnosťami je trieda, ktorej grafický popis

a implementáciu popisuje príloha A.1. Štruktúru takejto triedy ukazuje obr. A.1.1 a A.1.2.

v prílohe A.1. Správanie a služby objektu zabezpečujú metódy, stav objektu zabezpečujú jeho

hodnoty uchovávané v členských dátach – atribútoch.

Komunikáciu s okolím, prístup k jeho atribútom a využitie vlastností objektu

zabezpečujú metódy, ktoré označujeme aj ako komunikačné rozhranie (interface).

V Component Object Modeling (COM) technológii objekty vlastnia aj niekoľko takýchto

rozhraní napríklad podľa verzie, prostredia, používateľa. COM protokol umožňuje využívať

jednotlivé COM objekty samostatne aj rôznym používateľom v distribuovanom prostredí

počítačovej siete paralelne bežiacich úloh (DCOM) a vymieňať konkrétne COM objekty

v binárnej podobe za nové a nie vymieňať celé aplikácie. COM+ ako nová verzia dopĺňa

ďalšie vlastnosti tejto rozširujúcej sa technológie. Táto metóda používa objektové vlastnosti

a implementačné vzory (container-iterator, smart pointers a podobne) a je základným

stavebným prvkom MS Windows aplikácií dnes a aj v .net technológii na začiatku nového

tisícročia má svoje pevné miesto v logickej vrstve vďaka svojim nepopierateľným kvalitám.

Z existencie objektov ako modulov vyplýva aj snaha o ich viacnásobné využitie, ktoré

v objektovom prístupe ide ďalej a vytvára možnosť pre dedenie vlastností objektov do iných

objektov a takto dokonalejšie napĺňa potrebu znovupoužiteľnosti už raz napísaného a

odladeného kódu. Dedenie však neslúži len na prenos atribútov a metód z nadtriedy do jej

podtried, ale vďaka dedeniu čisto virtuálnych metód abstraktných nadtried aj dodržiavaniu

vopred stanoveného rozhrania. V prílohe A.2. je popísané nielen jednoduché a násobné

Page 3: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 3 -

dedenie, ale aj opakované a virtuálne dedenie, jeho zápis aj implementáciu na konkrétnych

príkladoch.

Znovupoužitie v rôznorodom prostredí (napríklad celé čísla, reálne čísla, vektory,

matice, text a podobne) pri odlišných požiadavkách vyvolalo potrebu využiť rovnaký vzor pre

objekt, funkciu, parameter, metódu alebo operátor v rôznych tvaroch s rôznym správaním.

Túto mnohotvarosť označujeme ako polymorfia, vďaka ktorej je vytvorený projekt oveľa

prehľadnejší a preto aj menej náchylný na chyby, je ľahšie udržiavateľný a využiteľný.

V prílohe A.6 a A.7 je popísaná polymorfia metód, funkcií a operátorov, inkluzívna

a parametrická polymorfia, ako aj využite polymorfie v zlomkovej algebre veľkých čísiel

(dynamické polia celých čísiel s vlastnou aritmetikou) podľa [Polášek 98c].

Ďalšou dôležitou vlastnosťou objektov je posielanie a prijímanie správ (messages) a

reakcia na udalosti (events), ktoré môžu nastať.

Udalosť býva často prezentovaná nastatím javu (napr. vyplnenie formulára, podanie

žiadosti a pod.), prípadne dosiahnutím určitej úrovne sledovanej veličiny (čas, dátum, teplota,

hodnota premennej). Správa často obsahuje dáta a žiadosť spustiť konkrétnu metódu (napr.

PrijmiZiadost()).

Princípy a vlastnosti OO prístupu boli zatiaľ analyzované len na diagrame objektov a

tried, ktorý používajú všetky metodológie. Okrem tohto statického pohľadu na štruktúru

existuje aj dynamický model a jeho diagramy, v ktorom sa sleduje najmä správanie objektov

v čase a ich interakcie medzi sebou. Okrem toho slúži aj na identifikáciu potrebných metód

objektov prijímajúcich správu a vykonávajúcich potrebnú operáciu.

Na účely zaznamenania a popisu interakcií objektov a posielania správ (najmä vyvolania

metódy prijímajúceho objektu) slúži sekvenčný diagram (príloha B.3) a komunikačný

diagram (príloha B.4).

K ďalším výhodám patria:

Lepšia čitateľnosť a zrozumiteľnosť analýzy a návrhu, ktorý môže čítať bez

problémov aj zainteresovaný klient-zadávateľ, nádejný používateľ a doménový

expert. Zrozumiteľnejšie termíny OO prístupu približujú vývoj softvéru

používateľovi. Štruktúrovaný prístup sa podriaďoval potrebám, slovníku a

vyjadrovaniu z oblasti výpočtovej techniky, OO prístup prichádza bližšie k

neodborníkovi v oblasti informatiky, k neprogramátorovi a nenúti ho učiť sa

podrobne diagramové notácie pre dátový alebo funkčný model. Nemusí všetko

Page 4: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 4 -

vidieť v tabuľkách a algoritmoch. Môže čítať a opravovať bez dlhej prípravy

objektové diagramy, ktoré popisujú jeho pracovné okolie, ako aj systém, ktorý mu

má pomôcť a ktorý sa buduje. Spätná väzba je preto oveľa rýchlejšia a kvalitnejšia.

Predchádza sa tým mnohým chybám, ktoré vznikajú nedorozumením medzi

analytikom a doménovým expertom, ktorý poskytuje informácie.

Objektový prístup používa pri zobrazení skutočnosti a návrhu silnejšie prostriedky

schopné okrem prvkov skúmaného prostredia alebo informačného systému a ich

vzťahov (ako to je aj v štruktúrovanom prístupe) znázorniť aj:

- vzťahy nadriadenosti/podriadenosti alebo generalizácie/špecializácie a dedenia

vlastností prvkov,

- vzťahy agregácie a skladania častí do väčších celkov (príloha A.3), ako aj

štandardné vzťahy 1:1, 1:n, n:m a podobne (príloha A.4),

- tokov správ a udalostí,

- zapuzdrenia atribútov a metód zoskupených do jednoliatych objektov tvoriacich

nezávislé jadro, rozhranie alebo používateľské prvky.

Toto všetko možno zaznamenať v jednom diagrame, bez straty prehľadnosti. Okrem

tohto bohatého, ale statického modelu tried a objektov je možné zachytiť v

dynamických modeloch aj ich premenlivosť a správanie sa v čase.

Väčšia nezávislosť analýzy a návrhu od programovacích jazykov, databázového

prostredia a abstraktnosť bližšia ľudskému chápaniu.

Možnosť pridávať ďalšie prvky do systému v iteráciách.

Podpora najnovších technológií, akými sú predpripravené architektúry - skelety

(frameworks), vzory (patterns), komponenty (moduly), stereotypy (klasifikácia,

ktorá rozširuje a špecializuje prvok triedy alebo asociácie).

Nevýhodou OO prístupu je väčšia réžia, ktorá súvisí s vytváraním a správou objektov

ako stavebných prvkov obsahujúcich členské dáta a metódy. Prejaví sa to vyššími nárokmi na

výpočtový čas a pamäťový priestor, ktorý je však pri dnešných prostriedkoch zanedbateľný.

Štruktúrovaný prístup sa však používa aj naďalej z nasledujúcich dôvodov:

- existencia množstva výkonných relačných SRBD (Oracle, Informix, Sybase, MS

SQL Server a ďalšie), štruktúrovaných programovacích jazykov (Cobol, C,

Page 5: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 5 -

Pascal) a neobjektových operačných systémov (UNIX/linux, VMS), vývojových

prostredí a podobne,

- existuje množstvo odborníkov a používateľov pracujúcich so štruktúrovanými

metodológiami a množstvo existujúcich projektov, ktoré je potrebné udržiavať a

vyvíjať,

- pre svoje výhody, akou je napríklad menšia pamäťová a výpočtová náročnosť

programovacích jazykov, databáz a implementovaných projektov a iné.

Ak sa máme rozhodnúť, či si vyberieme štruktúrovaný, alebo objektový prístup, je

nutné zvážiť výhody a nevýhody jednotlivých filozofií pre konkrétny projekt, dostupnosť

prostriedkov (OS, DB, prog. jazyk, CASE) a odborných zdrojov.

Možnosti využitia objektového prístupu pri tvorbe informačných systémov

Po zhrnutí vlastností objektového prístupu a najpoužívanejších objektových

metodológií, postupností, metód a diagramových techník je možné zhodnotiť aj čiastkové

nedostatky pre vývoj IS:

1. Najrozšírenejšie metodológie a metódy nevytvárajú dostatočné možnosti minimalizovať

tvorbu nadbytočných a nesprávných konštrukcií, štruktúr a tried, ich voľnosť predpokladá

vytváranie vlastných konkrétnych postupov pre jednotlivé oblasti, nie každý tím však

zvolí najvhodnejší konkrétny postup pre svoj projekt pre nedostatok skúseností a

poznatkov. Najďalej sú napríklad metodológia OMT2 a postupnosť RUP, ktoré obsahujú

okrem orientácie na prípady použitia aj rozdelenie tried do vrstiev, vytváraných v

jednotlivých iteráciách. Chýba silnejšia nadväznosť a kontinuita, presnejší návod pri

vytváraní jednotlivých vrstiev: prezentačnej (V/V obrazovky a formuláre aplikácie),

logickej a databázovej, ktorá by viedla k previazanému vývoju a rozširovaniu. Objektový,

dynamický a funkčný model sú nedostatočne prepojené aj metodologicky, aj v SAPP a nie

je tak dostatočne podporená konzistencia návrhu ako aj implementácia kompletnej

aplikácie.

2. Chýba predpis pre tvorbu optimálnej štruktúry objektov, najmä stálych – perzistentných,

ktoré tvoria databázovú vrstvu, tak, ako tomu je v štruktúrovanom prístupe. Jednou z mála

Page 6: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 6 -

výnimiek je Coad-Yourdonova metodológia, ktorá popisuje normalizáciu a RUP, kde sa

aspoň spomína denormalizácia.

3. Diagram aktivít je pre zápis algoritmov metód objektov a služieb nevhodný, vychádza zo

stavového diagramu, ktorý používa koncepciu Petriho sietí. Hoci v UML nie je samotný

diagram aktivít najdôležitejší, je nepochopiteľné, prečo autori ponechali tak nevhodný

diagram, ktorý je v podstate obdobou vývojového diagramu. Nevhodnosť diagramu, v

ktorom sa ťažko odlišuje vetvenie od cyklu, iterácia a cykly s hornou a dolnou

podmienkou, nie je možné editovať štruktúru (vkladanie, presun a výber) a dovoľuje

vznik goto konštrukcií, bude vysvetlená a ilustrovaná v kapitole Riešenie prepojenia

modelov návrhom alternatívneho vývojového prostredia. Tejto problematike sa nevenuje

dostatočná pozornosť. Nemôžu ho nahradiť ani interaktívne diagramy. Objektové CASE

systémy nepodporujú dostatočne zaznamenanie vetvenia a cyklov ani v sekvenčnom a

komunikačnom diagrame. Z toho dôvodu je nevyhnutné hľadať lepší spôsob

zaznamenania operácií. Jednou alternatívou je prevziať vhodný diagram zo ŠP, pretože

telo metódy objektu podlieha pravidlám ŠP. Z tabuľky 1, kde sú porovnané jednotlivé

diagramové techniky štruktúrovaného a objektového prístupu, je zrejmé, že okrem

explicitnej normalizácie používa aj vhodnejšie zobrazenie algoritmov vo funkčnom

modeli ŠP. Tu je možné použiť JSP, YSD, NSD, alebo HIPO diagramy, v nich sa dá

nielen správne navrhnúť algoritmus základnými prvkami riadiacich štruktúr, ale je možná

aj ľahká zmena vkladaním, vyraďovaním a posunom celých podstromov, ako aj

generovanie metódy, druhou možnosťou je vychádzať z kódu a hľadať pre neho

odpovedajúce grafické vyjadrenie.

Štruktúrovaný prístup

(ŠP)

Objektový prístup

(OP)

výhody ŠP výhody OP

Entiry Relationship

Diagram (Dátový

model)

Diagram tried a

Objektový diagram

(Objektový model)

explicitná

normalizácia

silnejšie pros-

triedky (dedenie,

agregácia, …)

Data Flow Diagram

(súčasť Funkčného

modelu, ako aj

OO DFD sa zväčša

nepoužíva, používa sa

Collaboration

Page 7: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 7 -

nasledujúce diagramy) Diagram (UML)

Entity Life History, State

Transition Diagram

State Diagram

Vývojový diagram Activity Diagram

JSD, YSD, NSD, HIPO nepoužíva sa, nahrá-

dza ho Activity

Diagram, Use Case

Diagram, interaktívne

diagramy

vhodné

zobrazenie algoritmu

Tab. 1 Tabuľka porovnania zastúpiteľných diagramových techník

(použité aj originálne názvy a skratky pre porovnanie)

Medzi nedostatky nie je zaradené zneprehľadnenie znázornenia kardinality značkou

‘*’ v objektovom diagrame UML, napríklad oproti plnému krúžku ako konektoru na spojnici

v OMT, ktorý bol organickou súčasťou väzby a ponechával voľný priestor na zaznamenanie

kvalifikátorov a rolí. Takto voľne plávajúca kardinalita v UML pri konektore často ani presne

neurčuje, ku ktorej väzbe je priradená. Na toto upozorňujem už od roku 1997 na svojich

prednáškach. Riešenie je jednoduché: autority a odborná verejnosť by sa museli dohodnúť na

prechode k OMT znázorneniu kardinality. Toto kritizujú aj v [Blaha 98], kde však používajú

len OMT a nie UML.

Po štúdiu a praktických skúsenostiach pri tvorbe softvérových produktov, poznaní

predchádzajúcich prístupov, metodológií a techník, snahe nájsť vhodné postupy odvodením

podľa konkrétnych požiadaviek analýzy, návrhu a implementácie je možné predostrieť

nasledovný cieľ a koncepciu riešenia:

1. Popísať metódu analýzy a návrhu IS, obsahujúcu štandardné diagramy a základné

princípy jazyka UML a postupnosti RUP, jej etapy je však vhodné doplniť tak, aby

postupovali od požadovaných výstupov po potrebné vstupy, pretože moduly vstupu

a výstupu sú v IS veľmi dôležité. Vychádzať z požiadaviek používateľa cez vytvorenie

konceptuálneho pohľadu na doménovú vrstvu v analýze po návrh fyzickej štruktúry

aplikačnej, logickej a dátovej vrstvy systému postupnou inkrementáciou v iteráciách od

požadovaného až po neznáme. Takýto návrh, popísaný v kapitole Návrh metódy analýzy a

návrhu pre vývoj IS, by mal minimalizovať chyby v návrhu a maximalizovať prínosy

analýzy.

Page 8: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 8 -

2. Doplniť analýzu a návrh o myšlienky optimalizácie objektovej štruktúry, inšpirovanej

normalizáciou zo štrukturovaného prístupu budovania dátového modelu podľa [Codd

70], [Codd 71], [Scheber 88], [Russev MM] a z Coad-Yourdonovej metodológie [Coad

91]. Navrhnúť využitie konceptuálneho, logického a fyzického pohľadu na objektový, ale

aj na dynamický a funkčný model v kapitole Návrh metódy analýzy a návrhu pre vývoj IS.

3. Hľadať vhodnejšiu diagramovú techniku pre funkčný model a navrhnúť prepojenie

jednotlivých modelov v kapitole Riešenie prepojenia modelov návrhom alternatívneho

vývojového prostredia.

Návrh metódy analýzy a návrhu pre vývoj IS

Návrh alternatívnej postupnosti, radiacej sa svojimi vlastnosťami k následníkom konzervatívnych

metód, je obsahom tejto kapitoly. Základom bude všeobecne využívaná etapa konceptualizácie,

analýzy a návrhu, ako je tomu aj pri ostatných postupnostiach.

Postupnosť bude zachovávať

- orientáciu na používateľské požiadavky, z ktorých vychádza v konceptualizácii, rozvíja v

analýze a návrhu, vracia sa k nim a overuje s používateľom pri vytvorení modelu IS,

- postup od požadovaných výstupov IS k dátovej štruktúre, od dátovej štruktúry k potrebným

vstupom až po definovanie logickej vrstvy na transformáciu a spracovanie údajov,

- rekurzívnosť (rozvíjanie štruktúry objektov a metód z konceptuálneho do logického až po

fyzický návrh v dynamickom a objektovom modeli),

- iteratívnosť (neustále preverovanie modelov v jednotlivých krokoch z rôznych pohľadov) a

nie postupný, vodopádový proces analýzy, návrhu a implementácie, ale rýchly vývoj

aplikácie podľa koncepcie RAD (Rapid Application Development), kedy sa ponúka

používateľovi na schválenie hneď na začiatku vývoja prázdny prototyp IS so základnými

vstupmi a výstupmi, v ďalšom kole opravenými a doplnenými, v ďalšom funkčnými a

prepojenými na databázu atď., životný cyklus musí zabezpečovať vhodne zvolenou

postupnosťou krokov implicitnú, vnútornú iteratívnosť, ale dovoliť aj explicitný, vonkajší

cyklus opakovania pri ladení a pre zmenové konanie,

- inkrementálnosť (pridávanie aplikačnej, dátovej a logickej vrstvy k doménovej do

objektového modelu).

Page 9: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 9 -

Orientáciu na používateľské požiadavky, zachovanie a skĺbenie vlastností iteratívnosti,

rekurzívnosti a inkrementálnosti je možné zapísať čo najjednoduchšie nasledovne:

pre (doménovú, aplikačnú, mikroprocesnú vrstvu)

pre (všetky služby)

vytvor alebo aktualizuj dynamický model

vytvor alebo aktualizuj objektový model

vytvor alebo aktualizuj funkčný model

Doplnením tejto základnej kostry bude

1. postup od definovania výstupov k vstupom, buduje sa tak systém od očakávaných výstupov

zo služby systému, ktoré požaduje používateľ,

2. vytvorenie logickej vrstvy podľa požiadaviek výstupov na dáta a požiadaviek dátovej vrstvy

na vstupy a doplnenie funkčného modelu o kvalitnejšiu diagramovú techniku, odvodenú od

riadiacich štruktúr,

3. využitie používateľskej dokumentácie ako virtuálneho prototypu ešte neexistujúceho

produktu v etape návrhu, vytvorenie príručky ešte pred programovaním, overia sa prvé

analytické kroky a návrhy, vyhne sa nedorozumeniam medzi zadávateľom, používateľom,

analytikom a návrhárom, používateľ môže získať presnejší obraz o budúcom IS a pripraviť

ľudské kapacity odborne aj kvantitatívne, ako aj celkové prostredie, zabezpečí vstupné

informácie,

4. prepojenie dynamického, objektového a funkčného modelu konkrétnymi pravidlami v

postupnosti a návrh fyzického prepojenia aj priamo v SAPP.

Týmto spôsobom je možné minimalizovať chyby a chybné konštrukcie, skrátiť potrebný čas a

náklady a zachovať kontinuitu vývoja pomocou požiadaviek používateľa, odpovedajúcich služieb a

neskôr komponentov projektu, ktoré sú základnými prvkami procesu.

Podrobnejší postup je možné zapísať nasledovne:

1. zber požiadaviek a ich transformovanie do služieb systému v konceptuálnom diagrame ako

konceptualizácia

2. vytvorenie vysvetľujúcich modelov služieb ako analýza,

Page 10: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 10 -

3. návrh výstupov služieb a systému, vytvorenie alebo doplnenie aplikačnej vrstvy,

4. návrh DB vrstvy podľa výstupov,

5. návrh vstupov, ktoré vyžaduje DB vrstva, doplnenie aplikačnej vrstvy,

6. vytvorenie prázdneho prototypu a používateľskej príručky, obsahujúcej celú aplikačnú

vrstvu v podobe fiktívneho systému, všetky potrebné testy služieb aj s výsledkami, základnú

ale aj podrobnú koncepciu; ak užívateľ po jej prečítaní požaduje zmeny, je nutný návrat na 1.,

2. alebo 3.,

7. návrh logickej vrstvy objektov, ktoré zabezpečia výstupy z DB, zápis algoritmov metód

objektov,

8. doplnenie logickej vrstvy, ktorá zabezpečí naplnenie DB zo vstupov,

9. doplnenie návrhu DB a IS,

10. vytvorenie viacvrstvového objektového modelu ako revízia vrstiev,

11. vytvorenie modelu softvérových a hardverových komponentov, pilotná verzia,

12. implementácia, testovanie a zavádzanie do prevádzky.

Diagramy UML, ktoré vysvetľujú štruktúru služby (diagram tried a objektov), správanie sa

objektov pri plnení úlohy služby (sekvenčný a komunikačný diagram), popisujúce stavový priestor

služby (stavový diagram) alebo algoritmus plnenia úlohy služby (diagram služieb, interakcií

(sekvenčný a komunikačný) a procesný diagram) budeme označovať ako poddiagramy služby a budú

sa využívať v etape analýzy IS.

Vo všeobecnosti poddiagram (subdiagram) bude diagram, vysvetľujúci element diagramu v

ďalšom samostatnom diagrame napríklad komponent, zväzok tried, službu (Component, Package,

Use Case), operáciu a podobne.

Používateľ bude môcť pripomienkovať prázdny prototyp a fiktívny systém v kroku 6., schváliť

príručku ešte pred krokom 7., prvú pilotnú verziu v kroku 11. a prvú funkčnú verziu v kroku 12.,

ktorá bude podrobená všetkým testom, odladená, zavedená do prevádzky a považovaná za prvú

produkčnú nasadenú verziu, referenčnú pre ďalší vývoj a zmenové konania. Okrem návrhu tejto

postupnosti je v práci popísaná aj jedna z aplikácií, ktorá vznikla týmto spôsobom ako experiment a

slúžila na odskúšanie tejto postupnosti v celosti. Výhodou tohto projektu bola jeho potrebnosť pre

prax ako motivácia (zápis, evidencia, hľadanie riešenia a sledovanie eskalácie incidentov),

dostatočná náročnosť, univerzálnosť a komplexnosť. Vyriešiť tento projekt sa nepodarilo už dvom

Page 11: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 11 -

tímom v minulosti z dôvodov nedostatočnej analýzy ale aj skúseností. Vybraté časti analýzy a návrhu

sú v kapitole Aplikácia postupnosti pre vývoj IS na konkrétnom projekte.

Okrem popisu vlastností postupnosti a jej jednotlivých etáp treba definovať aj používané modely,

pohľady a vrstvy, ktoré navrhovaná metóda používa.

Model budeme chápať ako zjednodušenú kópiu reality v jazyku UML. V etape konceptualizácie

a analýzy ide najmä o kópiu podstatných častí analyzovanej domény a pôvodného IS, v etape návrhu

ide o model (predlohu) navrhovaného systému.

Konceptuálny model popisuje služby systému a jej používateľov, je to počiatočný model

konceptualizácie, ktorý zachytáva najmä dynamickú stránku systému (interakcie medzi používateľmi

a službami, ako aj službami navzájom), ale aj jeho funkčné prvky a hraničné triedy v podobe

stereotypov Používateľ (Actor). Používa sa v etape konceptualizácie.

Objektový model popisuje statickú štruktúru systému (triedy, objekty a ich vzťahy) pomocou

diagramu tried a objektov. Používa sa v analýze a návrhu.

Dynamický model popisuje správanie sa systému: interakcie medzi objektami pomocou

sekvenčného a komunikačného diagramu, zmenu stavov pomocou stavového diagramu. Používa sa v

analýze a návrhu.

Funkčný model popisuje spôsob riešenia úloh a funkcií systému: algoritmus je možné zapísať

nielen procesným, ale aj sekvenčným a komunikačným diagramom, ako aj diagramom služieb.

Používa sa v analýze a návrhu.

Vrstva systému je súbor tried, príbuzných vzhľadom na štruktúru aplikácie.

Doménová vrstva obsahuje triedy reálneho sveta (real world classes), skutočne existujúce triedy

konkrétnej analyzovanej problémovej domény (oblasti), ktoré napomáhajú pri analýze pochopiť a

popísať jej štruktúru.

Aplikačná alebo prezentačná vrstva obsahuje vstupno-výstupné triedy systému, ako sú

formuláre, obrazovky, filtre, report, listingy a podobne. Postupnosť rozoznáva výstupnú vrstvu, ktorá

umožnuje zobraziť požadované výstupy z aplikácie a vstupnú, ktorá slúži na vstup potrebných

údajov.

Interná alebo mikroprocesná vrstva obsahuje triedy, ktoré zabezpečujú funkčnosť prezentačnej

vrstvy. Logická vrstva umožnuje najmä výpočty a spracovanie informácií, dátová vrtsva zabezpečuje

uchovanie údajov pomocou perzistentných tried a tried manipulujúcich s dostupnou bázou dát (aj v

relačnej podobe) a komunikujúcich s jej systémom riadenia.

Page 12: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 12 -

Pohľad na systém budeme chápať v tejto metóde ako konkrétne zobrazenie modelu (forma),

alebo jeho diagramu v zodpovedajúcej minimálnej podrobnosti formy a popisu.

Konceptuálny pohľad je zobrazenie základných prvkov a ich vzťahov bez orientácie, prípadnej

kardinality a druhy vzťahu (asociácia, agregácia, šecializácia a podobne), bez atribútov a metód, rolí

a kvalifikátorov. Tento pohľad je vhodný pre analytika ako vstupná forma. Používa sa v etape

konceptualizácie a návrhu, prípadne pre komplexné alebo koncepčné zobrazenie modelu, kde nie je

možné zachytiť všetky vlastnosti.

Logický pohľad obsahuje okrem prvkov a vzťahov aj ich orientáciu a druh, atribúty a metódy.

Tento pohľad je vhodný pre používateľa na overenie analýzy a návrhára ako vstupná forma pre

návrh.

Fyzický pohľad obsahuje okrem prvkov a vzťahov, ich orientácie a druhu, atribútov a metód, aj

role, kvalifikátory, typy atribútov a ich inicializačné hodnoty, návratové typy metód, typy a

inicializačné hodnoty parametrov metód a všetky ostatné prvky, potrebné pre implementáciu. Preto

je tento pohľad vhodný ako výstupná forma návrhu pre implementátora ako najúplnejší pohľad.

Etapa postupnosti Využívaný model

Používaný pohľad Spracovávaná

vrstva

Konceptualizácia Konceptuálny Konceptuálny

(Logický)

Doménová

Analýza Objektový

Dynamický

Funkčný

Konceptuálny

Logický

(Fyzický)

Doménová

Aplikačná

(Mikroprocesná)

Návrh Objektový

Dynamický

Funkčný

Logický

Fyzický

Doménová

Aplikačná

Mikroprocesná

Tab. 2 Tabuľka využitia modelov, vrstiev a pohľadov

Predchádzajúca tabuľka 2 zachytáva použitie jednotlivých modelov, vrstiev a pohľadov v

etapách. Je z nej zrejmé previazanie modelov, pohľadov a vrstiev na jednotlivé etapy ako aj

najčastejšia forma (pohľad) zobrazenej vrstvy: pre doménovú je to konceptuálny a logický pohľad,

pre aplikačnú a mikroprocesnú najmä logický a fyzický. Alternatívy v zátvorkách je možné použiť v

konkrétnej etape. V ďalších explicitných iteráciách už slúži dosiahnutá forma (pohľad) modelu ako

Page 13: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 13 -

základ, ktorý sa prehlbuje smerom k podrobnejšiemu, môže byť však pre konkrétny nový inkrement

alebo pre komplexné zobrazenie rozsiahleho modelu použitý aj jednoduchší pohľad.

Konceptualizácia

Zber požiadaviek, identifikácia používateľov a inicializačných udalostí, vytvorenie

katalógov

Začíname s identifikáciou používateľov, pretože musia byť známi, ako aj požiadavkami na

systém, jeho službami, ktoré používateľ očakáva, pretože ich vie identifikovať. Samozrejme, je ich

potrebné, v interakcii s ním, presne definovať a vyradiť redundantné, vágne a nadbytočné podľa

stanovenej priority. Je to vhodnejšie, ako začať s tvorbou tried v objektovom modeli.

V súvislosti so zberom požiadaviek (User Requirement Management) a s modelovaním

odpovedajúcich služieb systému (Use Case Modelling) sa používa aj pojem modelovania

ekonomických procesov a služieb (Business Proces Modelling alebo BPM). Cieľom podnikania je tu

poskytnúť službu zákazníkovi, kde aj vývoj, alebo výroba produktu je službou. V BPM sa stretávame

s dvoma metódami inžinierstva ekonomických procesov (Business engineering):

1. Spätné (Reverse engineering) - porozumenie existujúcemu podnikaniu, vytvorením

modelu, prípadne aj s potrebnou reštrukturalizáciu (potom reinžinierstvo).

2. Priame alebo dopredné (Forward engineering) - návrh nových procesov podnikania.

Zadávateľ alebo používateľ IS môže reštrukturalizovať BP, vzhľadom na informačné toky,

spracovanie a uchovanie údajov v očakávanom IS.

Ak sa model podnikania prekrýva s modelom IS, ktorý podporuje interné procesy, potom je

vhodné OO technológiou fixovať poznatky (know how) v zákazníckych triedach (business classes),

ktoré patria do logickej vrstvy. Na zaznamenanie informácií z konzultácií so zadávateľom projektu a

používateľom, zo štúdia ich dokumentov, smerníc a príručiek je možné sa inšpirovať metodológiou

SSADM, kde jedným z výstupov je súbor katalógov, vytvorených v etape analýzy:

Konkrétne výsledky tejto etapy sa vytvárajú v nasledovných krokoch:

1. vytvorenie zoznamu požiadaviek používateľa (ID, dátum zadania, priorita, zložitosť,

názov, charakteristika, dátum spustenia, odvolávky na komponenty a ostatné modely a

diagramy (modely číslované podľa služby/požiadavky, bez čísla pre celý systém, diagramy

Page 14: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 14 -

číslované podľa poradia), prípadne explicitné vyjadrenie, že model nie je pre danú službu

potrebný),

Príklad štruktúry a obsahu katalógu:

ID požiadavky: POZ001

Názov: Zápis incidentu

Dátum zadania: 1.6.1999

Priorita: A

Stupeň zložitosti: -

Charakteristika: zápis incidentu do MS SQL DB hneď pri jeho nahlásení

Dátum spustenia: 1.2.2000

Objektový model: OM01.DT01 (objektový model 1. služby, diagram tried č.1)

Dynamický model: DM01.SD01, DM01.SD02, DM01.VD01

Funkčný model: -

...

ID: POZ012

Názov: Automatický výber experta

Dátum zadania: 21.6.1999

Priorita: B

Stupeň zložitosti: problém vytvorenia pravidlového systému a previazanie s dátovou

vrstvou MS SQL a aplikačnou ASP

Charakteristika: vyhľadanie experta podľa pravidiel

Dátum spustenia: 1.5.2000

...

2. vytvorenie zoznamu používateľov systému (ID, meno, trieda, atribúty, charakteristika),

Príklad štruktúry a obsahu katalógu:

ID používateľa: POU001

Názov: ASCSlužba

Typ: Actor

Charakteristika: Služba funguje 24 hodín denne, strieda sa po týždni

Page 15: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 15 -

Atribúty: ID, meno, telefón, e-mail

ID: POU002

Názov: Klient

Typ: Actor

Charakteristika: Klient obsahuje triedy Pracovisko a Kontaktna osoba

Atribúty: ID, názov, adresa, telefón,fax, e-mail

3. vytvorenie zoznamu udalostí vstupujúcich do systému (ID, názov, typ (zasielajúca

udalosť, vyvolávajúca metódu, zmenu, lokálna akcia, vytvárajúca novú inštanciu, rušiaca

inštanciu, ukončujúca úlohu, návratová, signál, časová udalosť), parametre,

charakteristika, zdroj, cieľ), každú takúto udalosť by mala spracovávať konkrétna služba a

jej zdrojom by mal byť konkrétny používateľ alebo používatelia,

Príklad štruktúry a obsahu katalógu:

ID udalosti: UDA001

Názov: Nový incident

Typ: vyvoláva celú službu

Charakteristika: Klient oznamuje problém službe a tá ho zapíše ako incident

vyvolanie dialógu na zápis incidentu, kontrola vstupných údajov, zápis do DB

Parametre: ID kllienat, ID služby, OS, verzia, produkt, verzia, problém

Zdroj: POU001

Cieľ: POZ001

Vytvorenie konceptuálneho diagramu

V konceptuálnom diagrame sa prekryjú požiadavky z katalógu službami systému,

ktoré poskytuje svojim používateľom. Popri grafickom zápise, kde sa získa prehľad

o jednotlivých elementoch ale najmä o ich vzťahoch, treba dbať aj o dôslednú dokumentáciu.

Page 16: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 16 -

Môže prísť k zlúčeniu jednoduchých, navzájom súvisiacich požiadaviek do spoločnej

služby, alebo rozdeleniu zložitej požiadavky do niekoľkých samostatných služieb a podobne,

diagram zobrazí aj vzťahy medzi používateľmi a službami podľa inicializačných udalostí.

Na záver je možné doplniť jednotlivé zoznamy a zosúladiť ich s konceptuálnym

diagramom. Pri zložitejšom systéme sa vytvárajú podskupiny katalógov a diagramov.

Vytvorenie modelov pre jednotlivé služby ako analýza

Pri každej službe (Use Case) je vhodné uvažovať o vytvorení diagramov, ktoré pod-

robnejšie vysvetľujú samotnú službu. V tejto etape sa zapíšu postupy, riešenia a návrhy

používateľa a/alebo zadávateľa systému, ktorý vychádza zo svojich predstáv a skúseností, ako

danú službu vykonávajú, alebo čím ju zabezpečujú. Pri zápise sa niektoré nezrovnalosti

okamžite konzultujú, zatiaľ to však nie je fáza návrhu, preto nie je potrebná optimalizácia, ale

získanie čo možno najviac poznatkov. Diagram sa stáva súčasťou modelu konkrétnej služby.

Konceptuálny diagram ako poddiagram zjemňuje a dovysvetlí službu, ktorá je príliš

globálna a všeobecná. Je možné, že v záujme prehľadnosti sú služby zastúpené až

diagramom nižšej úrovne. Príklad: konceptuálny diagram pre celý IS by obsahoval hlavné

podsystémy ako služby, tieto podsystémy by boli rozpracované do skupín úloh ako

služieb na ďalšej úrovni, na ďalšej úrovni by sa skupiny úloh rozvinuli do konceptuálnych

diagramov, kde by boli služby chápané ako úlohy. Na ďalšej úrovni by úlohy boli

dovysvetľované sekvenčnými a objektovými diagramami a podobne. Takýto

konceptuálny diagram patrí ešte do konceptuálneho modelu služby. Ak je v ňom

naznačený postup, ako budú jednotlivé služby spolupracovať a využívať ostatné, potom

patrí do funkčného modelu služby. V tomto prípade je vhodnejší aj doslovný preklad:

diagram prípadov použitia.

Sekvenčný diagram znázorňuje reakcie služby na všetky významné udalosti ako

poddiagram, vysvetľuje realizáciu služby pomocou dynamickej interakcie objektov; tu už

pravdepodobne nestačia triedy typu používateľ (Actor) z konceptuálneho diagramu, ale

objavujú sa aj nové objekty tried: to je aj cieľom vytvorenia dynamického typu diagramu

v tejto etape. Postup spracovania úlohy v službe je znázornený interakciami medzi

Page 17: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 17 -

objektmi, označený najčastejšie udalosťami, ktoré vzniknú a ktoré si objekty posielajú, a

operáciami, ktoré prijímajúci objekt bude musieť vykonať. Sú to najčastejšie jeho budúce

metódy. Pri komplexnom postupe treba zvážiť všetky inicializačné udalosti z katalógu

a podľa nich vytvoriť jednotlivé scenáre (diagramy) správania sa služby. Mnohé udalosti

(aj keď od rôznych používateľov) vyvolávajú rovnaké interakcie v službe, preto nie je

potrebné pre každú udalosť vytvoriť jeden diagram. Často ani služba nie je natoľko bohatá

na objekty a ich interakcie, niekedy však potrebuje rozpísanie na podslužby

v konceptuálnom diagrame a následne vytvorenie sekvenčných diagramov. Sekvenčný

diagram spolu s komunikačným patria do dynamického modelu. Špeciálne prípady,

obsahujúce prvky vetvenia a cykly, popisujúce striktne určitý algoritmus, je vhodnejšie

zaradiť do funkčného modelu služby.

Tieto scenáre interakcií medzi objektami môže zaznamenať aj komunikačný diagram. Je

len iným vyjadrením sekvenčného diagramu. Stačí si zvoliť vhodnejšiu formu, nie je

nutné použiť obidva, iba v prípade, že prvý zaznamenáva udalosti a druhý vyvolané

správy s metódami objektov. Udalosťou je Poslanie objednávky. Správa, obsahujúca

žiadosť o vyvolanie metódy PrijmiObjednávku(), prekrýva a nahrádza udalosť. Pri oboch

interakčných diagramoch je potrebné rozlišovať optimistický scenár, kde sa zameriava len

na základ skúmanej služby a nie riešenia možných problémov, bežný scenár, ktorým je

najčastejšia realizácia služby v praxi a pesimistický scenár, v ktorom sú zaznamenané

všetky možnosti a udalosti aj pri kritických a chybových stavoch. Je prirodzené začať

optimistickým, alebo bežným scenárom, ale je vhodné nakoniec vytvoriť a doplniť všetky

tri: prvé dva, jednoduchšie, pre porozumenie a zmeny v návrhu, posledný, najzložitejší,

pre neskoršie doplnenie v návrhu a implementáciu. Ďalšou možnosťou je vytvoriť najprv

scenár interakcií medzi objektami reálneho sveta, tak ako v skutočnosti v skúmanej

doméne prebieha. Potom ho doplniť o aplikačné (vstupo-výstupné) objekty IS a nakoniec

vytvoriť najpodrobnejší, v ktorom už budú vystupovať aj interné, skryté (mikroprocesné)

objekty aplikácie. Ak však zadávateľ projektu nemá podklady a predstavu o aplikačnej

a mikroprocesnej vrstve (vzhľad formulárov, presný postup riešenia), ponechávame túto

činnosť až na návrh, kde organicky patrí.

Diagram objektov a tried je vhodný najmä na exaktné definovanie tried a statických

vzťahov medzi nimi, znázornenie DB, na definovanie štruktúry služby, ktorá je potrebná

na zabezpečenie jej fungovania. Požívateľ tu oboznamuje analytika s používanými

Page 18: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 18 -

formulármi a tabuľkami, s pôvodným systémom a podobne. Tu je možné viesť riadené

interview, v ktorom začíname od doménovej vrstvy s existujúcimi prvkami reálneho sveta

(klient, počítač, pokladňa, účet), ktoré sa týkajú samotnej služby a je ich ľahké

identifikovať a pomáhať si touto štruktúrou v ďalšom kroku, v ktorom používateľ definuje

potrebné V/V triedy aplikačnej vrstvy (formuláre, obrazovky, reporty, listingy a podobne),

a nakoniec kompletizuje doplnením mikroprocesnej vrstvy: riadiacich, výpočtových

(špeciálnych, ekonomických), dátových (stálych aj dočasných) prvkov (súbory, zoznamy,

tabuľky, denníky a knihy a podobne) ako interných objektov. Tieto informácie môžeme

doplniť existujúcimi prvkami pôvodného IS a prostredia, ktoré sa nenachádzajú

v požiadavkách. Tento postup bude ešte výraznejší vo fáze návrhu, kde sa už buduje

systém nezávisle a systematicky. Pri veľkej mohutnosti diagramov (napr. viac ako 10

prvkov - tried) je vhodné vytvoriť hierarchickú sieť poddiagramov, kde hlavný diagram

obsahuje len komponenty a tie sa v poddiagramoch rozvíjajú do ďalších komponentov

alebo tried na najnižšej úrovni. Takýmto spôsobom je možné vybudovať objektový model

služby.

Stavový diagram je vhodný na zápis množiny stavov, v ktorých sa môže služba, prípadne

významná dynamická trieda služby nachádzať. Slúži na znázornenie prechodu stavovým

priestorom v závislosti od udalostí. Dopĺňa dynamický model.

Procesný diagram znázorňuje ako je možné jednotlivé požiadavky na služby riešiť vo

forme algoritmu, predpísanej postupnosti operácií. Môžu sa vytvoriť aj pre špeciálne

algoritmy niektorých metód v triedach pre danú oblasť, ktoré používateľ pozná a požaduje

ich presné splnenie (generovanie ID, čísiel účtov a podobne). Niekedy je vhodnejšie

použiť na tento účel Jacksonov štruktúrovaný diagram, v ktorom v stromovej štruktúre

zapíšeme algoritmus metódy bežnými prostriedkami štruktúrovaného prístupu (sekvencia,

cyklus, vetvenie), prípadne použijeme zápis v programovacom jazyku ako skript alebo

návrh. Vhodný je napríklad Visual Basic pre ľahkú čitateľnosť, ak sa nepoužijú špeciálne

prvky, prípadne nie je nutné použiť už v tejto fáze špeciálne prvky konkrétneho jazyka

implementácie. Napríklad jazyk C/C++ nie je všetkým programátorom, pracujúcim

napríklad v Transact SQL / PL SQL, Visual Basic a podobne, pochopiteľný a nie je

vhodné ho použiť, ak nebol zvolený ako predpokladaný jazyk implementácie.

Page 19: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 19 -

Pri tvorbe poddiagramov pre jednotlivé modely služby je najvhodnejšie postupovať

nasledovne:

1. Pe príliš komplexnú službu vytvoriť konceptuálny poddiagram s podslužbami a ich

vzťahmi.

2. Zaznamenať jednotlivé scenáre služby podľa inicializačných udalostí v interaktívnom

modeli, začať najpravdepodobnejším, bežným scenárom, prípadne optimistickým

a prejsť k pesimistickému, v ktorom už vystupujú aj všetky ošetrenia problémov.

Jednotlivé objekty v scenároch ponechávať v rovnakej pozícii, vytvárať tak vrstvy

rôznych scenárov nad identickou objektovou štruktúrou. Ak existuje diagram tried

a objektov, tak používať komunikačný diagram na zaznamenanie scenára služby nad

ním a nie sekvenčný diagram, pokiaľ je to možné (dovoľuje to používaný SAPP, napr.

MS VISIO) a prehľadné. Ak to nie je možné, alebo vhodné, potom sa dá

prekonvertovať na záver sekvenčný diagram na komunikačný, objekty umiestniť aj so

zreteľom na ich ďalšiu funkciu v objektovom diagrame, je vhodné vytvoriť jeden

scenár ako prenos udalostí medzi objektami a druhý ako správy, v ktorých sa

vyskytujú volania metód prijímajúceho objektu od vysielajuceho objektu.

3. Ak to klient vyžaduje, je možné vytvoriť aj diagramy vstupno-výstupných formulárov,

kde sa ujasnia jeho predstavy a z ktorých vyplynú aj potrebné prvky (objekty, metódy,

udalosti), informácie a zmeny do jednotlivých modelov, vstupno výstupné formuláre

už obsahujú mikroprocesné objekty, alebo aspoň vyžadujú ich existenciu

a komunikáciu s nimi (konverzné, výpočtové, vyhľadávacie a db služby).

4. Diagram tried vytvárame na základe objektovej štruktúry z interaktívnych diagramov

ako jeho ďalšiu vrstvu, kde si objekty zachovajú pôvodnú pozíciu, jednotlivé objekty

obohatiť o metódy z interakcií-správ a potrebných atribútov.

5. Preveriť, či nadobúda služba alebo trieda počas svojej existencie konkrétnu sériu

stavov a zaznamenať ich v dynamickom modeli: v stavovom diagrame.

6. Ak je potrebné pre službu zaznamenať riešenie požiadavky od používateľa ako

postupnosť krokov, potom zaznamenať tento algoritmus vo funkčnom modeli služby:

v procesnom diagrame, alebo v JSD, prípadne v skriptovacom jazyku (podľa dohody

väčšinou v tomto kroku postačuje Java alebo VB skript, zložitejší C/C++ jazyk,

bohatší o smerníkovu aritmetiku a škálu operátorov nie je potrebný), možné je použiť

aj interaktívne diagramy a diagram prípadov použitia (konceptuálny diagram).

Page 20: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 20 -

7. Pre jednotlivé služby je potrebné vytvoriť scenáre testovania a sady vstupných údajov

s ich výstupnými ekvivalentami. Podľa pravidiel eXtreme Programming v [Collins

01], [Beck 99], [Fowler 01a] a podľa [Booch 96] ak sa to robí už v analýze, obe strany

si lepšie uvedomia obsah a zmysel (služby) a presnejšie stanovia jej štruktúru a

funkcie.

8. V analýze zapisujeme všetky informácie od zadávateľa projektu a vytvárame tak

doménovú a časť aplikačnej vrstvy modelov. Ak sú informácie príliš podrobné, je

možné vytvoriť čiastočne aj mikroprocesnú vrstvu. Predmetom návrhu bude korigovať

analýzu a vytvoriť alebo doplniť a aktualizovať jednotlivé vrstvy až po internú vrstvu

cielene a systematicky.

Pravidlá konzistencie modelov pre analýzu a návrh

Konzistenciu postupnosti a jej modelov budeme chápať ako prepojenosť jednotlivých

krokov a modelov v činnostiach, prvkoch a štruktúrach na zabezpečenie všetkých potrebných

zmien pri aktualizácii vo všetkých činnostiach a modeloch.

Optimálna objektová štruktúra IS bude taká štruktúra, ktorá pri minimálnom počte

prvkov a vzťahov (bližšie v kapitole Optimalizácia objektovej štruktúry) zabezpečí splnenie

požiadaviek používateľa a ďalšie štandardné vlastnosti softvéru (spoľahlivosť, integrita,

efektívnosť a podobne podľa [Russev MMb], [Bieliko MM]).

Optimálna postupnosť vývoja IS bude taká postupnosť, ktorá dosiahne optimálnu

objektovú štruktúru IS pri minimálnych časových, ľudských, finančných a ďalších nákladoch.

Teda taká, ktorá bude minimalizovať počet krokov a činností, stratu informácií,

minimalizovať nadbytočné, vágne a redundantné prvky a podobne.

Na dodržanie konzistencie modelov je vhodné dodržiavať nasledovné pravidlá:

1. pre každú službu vytvoriť jednotlivé modely, pokiaľ je to možné a vhodné,

2. vytvoriť modely aj pre celý systém, pokiaľ je to potrebné, v etape návrhu preveriť

a vyradiť prípadnú redundanciu rovnakých prvkov v rôznych službách,

3. všetky metódy, použité v interakciách medzi objektami, musí prijímajúca trieda

implementovať a vysielajúca umiestniť jej volanie do kódu svojich metód,

Page 21: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 21 -

4. všetky objekty, vyskytujúce sa priamo, alebo sprostredkovane v konceptuálnom

(napríklad používatelia), stavovom, procesnom, alebo interaktívnom diagrame sa musia

vyskytovať aj v objektovom diagrame,

5. štruktúra systému, premietnutá do služieb bude mať svoj odraz aj v architektúre systému,

popísanom na záver v diagrame komponentov a rozmiestnenia,

6. každú operáciu zo stavového diagramu musí zastúpiť konkrétna metóda konkrétnej triedy

v objektovom modeli, ak diagram definuje stavový priestor jednej triedy a nie celej služby

s viacerými triedami, potom je naviazanie a konzistencia jednoduchšia, všetky akcie

a aktivity v stavoch pokrýva jedna trieda svojimi metódami, ak nebolo určené, že ju

vykonáva metóda inej triedy,

7. všetky neelementárne operácie z funkčného modelu musí vykonať konkrétna metóda

konkrétnej triedy v objektovom modeli,

8. triedy budú obsahovať všetky potrebné atribúty pre zabezpečenie vhodnej implementácie

metód a naopak,

9. zmeny v obsahu (pridanie, zmena, vyradenie prvku) sa musia premietnuť do všetkých

modelov, ako aj zmeny v zvýšení úrovne pohľadu (konceptuálny->logický->fyzický),

alebo doplnením vrstvy (doménová->aplikačná->mikroprocesná).

Podobné sady pravidiel obsahuje aj [Coad 91], [Rumbaugh 91], [Booch 94], [Booch 96],

[Šešera 94] a ďalší.

Všeobecné pravidlá pre analýzu a návrh

Na záver načrtnutého postupu analýzy je možné vyjadriť všeobecné pravidlá, ktoré sú

platné nielen pre analýzu, ale aj pre návrh:

1. vytváranie a dopĺňanie modelov ako aj sledovanie konzistencie je nutné vykonávať

neustále nielen v analýze ale aj v návrhu,

2. vytváranie modelov pre jednotlivé služby samostatne je možné vykonávať v paralelných

prúdoch aj v tímovej spolupráci, kedy si rozpracovanie služieb rozoberú jednotliví

kolegovia alebo skupiny, pri jemných a malých službách je možne vytvoriť komplexný

objektový model pre viacero služieb,

Page 22: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 22 -

3. pri konceptualizácii a analýze asistuje zadávateľ projektu, budúci používateľ, doménový

expert a podobne, jednotlivé diagramy sú vynútené potrebou zaznamenať ich informácie

požiadavky a popis, v návrhu už jednotlivé diagramy slúžia na návrh optimálnej

objektovej štruktúry, preto obsah môže byť ponechaný, ale aj pozmenený,

4. v analýze aj v návrhu sa používajú podľa potreby prvotný, komplexný konceptuálny

pohľad (objekty, udalosti a vzťahy, bez presného popisu atribútov, metód, parametrov a

podobne), logický pohľad (udalosti nahradzujú správy a metódy, vzťahy sú spresňované

do asociácie, dedenia a agregácie, pridávajú sa atribúty a parametre) a nakoniec

najpodrobnejši fyzický pohľad (kardinalita vzťahov, role tried, kvalifikátory, typy

a rozmery atribútov, parametrov a návratových hodnôt).

Návrh výstupov IS, odvodenie aplikačnej vrstvy objektov

V etape návrhu sa začína od výsledkov služieb, ktoré klient očakáva a potrebuje, nie od

nejasnej predstavy o vnútornej štruktúre a jej správaní sa. Navrhované výstupy služieb sa tvoria na

základe požadovaných výsledkov akýmkoľvek editorom formulárov a následne sa prepisujú do

dynamického, objektového a funkčného modelu podľa pravidiel konzistencie.

Neskôr sa diagramy obohatia aj o interné triedy, ako je aj db tabuľka/y, z ktorej záznamy

vyberáme, čím sa zviditeľní jej štruktúra, jej atribúty - stĺpce a jej metódy.

Pri viacerých, jednoduchých výstupoch sa môže vytvoriť z každého výstupu objekt, kde

atribúty sú jednotlivé položky výstupu, prípadne viacero diagramov pre každý výstup samostatne

pri väčšej zložitosti.

Tieto diagramy aplikačných objektov je potrebné optimalizovať vzhľadom na poznanie

všetkých výstupov zadaných klientom, aby nevznikali redundancie a výstupy boli dostatočne

samostatné a použiteľné z viacerých služieb. Ak používateľ neidentifikoval výstupy, nie je

problém navrhnúť ich odvodením z charakteristiky služby a vytvoriť všetky potrebné obrazovky,

formuláre, reporty a listingy. Tu je vhodný logický pohľad (triedy, atribúty a operácie tried,

vzťahy špecifikovať ako agregáciu, dedenie a asociáciu, upresniť kardinalitu), konceptuálny (len

identifikácia tried so vzťahmi ešte presne nešpecifikovanými) je príliš jednoduchý a

nedostatočný, je vhodný pre viacvrstvový model a model aplikačných, softvérových a

hardvérových komponentov.

Page 23: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 23 -

Návrh DB vrstvy podľa výstupov

Na zabezpečenie výstupov je potrebné mať k dispozícii dáta vo vhodnej štruktúre, preto v

tejto fáze je nutné prepojiť požiadavky výstupov s dátovou vrstvou tvorenou perzistentnými

triedami. Zjednodušene povedané, ide o transformáciu štruktúry V/V objektov aplikačnej vrstvy

aj do objektov dátovej vrstvy.

V tomto kroku je vhodné prejsť od logického k fyzickému pohľadu novopridaných, ako aj

existujúcich tried. Znamená to konkretizovať dátový typ atribútov (char, int, boolean, float/real,

double, string/varchar a podobne) a typ návratovej hodnoty metód. Dátovým typom je aj typ

triedy. Je nutné konkretizovať zoznam formálnych parametrov metód ako aj ich typ, prípadne

inicializačnú hodnotu. Tento krok však možno ponechať až na fázu návrhu, kde bude po revízii

diagramov jasné, či konkrétna trieda zostáva, prípadne zostáva v pôvodnom tvare.

Návrh vstupov, ktoré vyžaduje dátová vrstva, doplnenie aplikačnej vrstvy

V tomto kroku ide o vytvorenie odpovedajúcich vstupných formulárov, ktoré naplnia

konkrétnu DB. Transformovaním štruktúry (najmä atribútov) perzistentných objektov DB do

objektov vstupných formulárov s prihliadnutím k už definovaným výstupom sa dá vhodne

doplniť aplikačná vrstva bez vytvorenia nadbytočných vstupov. Vzniknú tak aj úplné vstupno-

výstupné fomruláre obrazoviek.

Vytvorenie prototypu IS a používateľskej príručky

V tomto kroku sa vytvorí prototyp IS a prvá verzia používateľskej príručky, v ktorej je

koncepcia celého IS, podrobná charakteristika, predpokladané technické, programové,

personálne a iné požiadavky, jeho ovládanie, varianty V/V formulárov, použité v simulácii práce

celého systému. Všetko sa píše v duchu ukončeného produktu a zadávateľ, doménoví experti aj

koncový používateľ ju tak čítajú. Klient tak môže oboznámiť svojich pracovníkov s novými

zmenami, vyškoliť ich na nové prostredie a vypočuť si ich námety a pripomienky. Môže

zamýšľané inovácie konzultovať a predostrieť aj partnerom, prezentovať pred konkurenciou a

Page 24: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 24 -

všetky výhrady a doplnenia adresovať analytikom. Ak zadávateľ nie je spokojný, prípadne

požaduje zmenu, potom je nutný návrat na predošlé kroky, doplnenie a zmeny a opätovné

hodnotenie. Používateľ si zvyká a hodnotí nový produkt, hoci návrh logickej vrstvy a

implementácia ani nezačala a neboli investované zbytočné peniaze a čas. Často sa jeho bežná

averzia k novému produktu zmení pri jeho spoluúčasti na aktívnu spoluprácu a pozitívnejšie

prijatie.

Prototyp IS dopĺňajú presné scenáre testovania a sady vstupných údajov a ich výstupných

ekvivalentov. Okrem upresnenia funkcionality služby napomáhajú aj pri korekcii ďalších

návrhov. Tieto informácie budú veľmi cenné aj pre etapu testovania, ladenia a implementácie,

kedy preklenú bariéru medzi používateľmi a analytikmi, ktorí vytvorili tieto scenáre a testovacie

sady v analýze, medzi návrhármi, ktorí ich dopĺňali v návrhu, programátormi a pracovníkmi

testovacích oddelení, ktorí ich overovali v etape implementácie, testovania a ladenia. Pre

všetkých bývajú často aj tieto údaje veľmi dobrým základom na dorozumievanie sa a

porozumenie zamýšľanej funkcionalite.

Návrh logickej vrstvy objektov, ktoré zabezpečia výstupy z DB

V tejto fáze sa prechádza k systematickej identifikácii objektov logickej vrstvy. Sú to

rôzne výpočtové, riadiace a transformačné triedy, zaoberajúce sa spracovaním údajov,

numerickými metódami a podobne. Tieto triedy zabezpečujú požiadavky výstupov z aplikačnej

vrstvy na dáta. Tu je možné použiť aj implementačné vzory podľa [Meyers 96], [Meyers 98] a

[Murray 93]. Ako príklad môžu slúžiť vzory ako zásobníky, kontajnery, iterátory, inteligenté

smerníky, COM objekty a podobne. Dopĺňajú sa objektový, dynamický a funkčný model.

Doplnenie logickej vrstvy, ktorá zabezpečí naplnenie DB zo vstupov

Po vytvorení logickej vrstvy pre zabezpečenie naplnenia výstupov je možné navrhnúť

podobným spôsobom aj časť vrstvy pre smer od vstupov do dátovej vrstvy na transformáciu

vstupných údajov a uloženie do DB.

Doplnenie návrhu DB a IS o pôvodné prvky a jej optimalizácia

Page 25: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 25 -

Nevyužité dáta a štruktúry sa ponechávajú pre prípad neskoršieho využitia a

prehľadávania (datamining a datawarehousing), je však vhodné udržiavať ich ako samostatné

moduly, v prípade nutného prepojenia a označiť ich dohodnutou formou. Podobne treba vytvoriť

zabezpečenie v logickej a aplikačnej vrstve. Tieto možnosti je vhodné ponechať skryté pred

bežným používateľom, ako voliteľné v nastavení a taktiež zabezpežiť aby nezasahovali do

spracovania a nespomaľovali ho a zaradiť ich do samostatných modulov, vyvolateľných na

požiadanie.

V ďalšom kroku môžeme uvažovať o vzťahu agregácie a dedenia, zjemňovať klasické

asociácie (upresňovať kardinalitu, roly tried, kvalifikátory, pomenovať vzťahy).

Doplnením atribútov a metód dokončíme prechod od konceptuálneho k logickému

návrhu.

V ďalšom kroku navrhneme typ atribútov (int, long, float, double, char, String a

podobne), parametre metód, typy parametrov, inicializačné hodnoty, návratové typy metód, ak

ich chápeme ako funkcie, a nie ako operácie. Návrh objektového modelu sa mohol začať už pri

zápise fyzického pohľadu na interné triedy v závere analýzy.

Návrh objektového modelu môže byť vedený revíziou a optimalizáciou (vyraďovanie

nevhodných tried a ich členov a zaraďovanie výkonnejších, vzhľadom na presnosť, nároky na

priestor a čas vykonávania) pôvodného modelu z analýzy alebo vytvorením úplne nového

modelu, v ktorom len vychádzame z poznatkov analýzy.

Pravidlá normalizácie relačnej BD

V nasledujúcej kapitole uvádzame základnu definíciu relácie, operácie s ňou a pravidlá

normalizácie (aj s príkladmi, použitými aj v iných kapitolách), pretože je možné aplikovať niektoré

uvedené vlastnosti a postup aj na objektový model.

Pri relačne orientovaných bázach dát, ktoré sú najrozšírenejšie a objektové systémy ich zatiaľ

najviac využívajú (na ukladanie perzistentných objektov) sa optimalizácia celkovej štruktúry

označuje ako normalizácia a prechádza jednotlivými normálnymi normami. Reláciou sa tu chápe

fyzicky databázová tabuľka (alebo matica) s n stĺpcami a m riadkami. Jednotlivé stĺpce zastupujú

atribúty, alebo entity v pôvodnej relácii a v riadkoch sú zaznamenané hodnoty konkrétnych výskytov

alebo objektov. Je zaujímavé, že tieto pomenovania sú vhodné aj pre objektové využitie. K presnejšej

matematickej formulácii relácie môže poslúžiť nasledovná definícia relácie, ktorú používa aj

[Scheber 88], odvolávajúci sa na [Codd 70]:

Page 26: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 26 -

Nech je daný systém {Di | 1 ≤ i ≤ n} neprázdnych množín (domén). Potom podmnožinu

karteziánskeho súčinu R D1 x D2 x … x Dn nazývame reláciou stupňa n (n-árnou reláciou) nad D1,

D2, …, Dn. Prvky R sú usporiadané n-tice < d1, d2, …, dn > také, že di Di pre 1 ≤ i ≤ n.

Relácia je teda spojenie konkrétnych entít. Objektový prístup uznáva ako predchodcu

objektov entity, nie však relácie, hoci spolu súvisia a mnohé sa dá využiť. Na prácu s reláciami je

prepracovaný kalkul relačnej, ale aj množinovej algebry. Na prácu so štruktúrou relácie sa používa

kartézsky súčin (R x S = { rs | r R s S }), delenie (inverzná operácia ku kartézskemu súčinu),

spojenie (takzvaný join podľa spoločných reštrikčných atribútov A a B relácií R a S do relácie T

A x B = R[ATB]S = { rs | r R s S (r.A, s.B) T) a projekcie. Na prácu s hodnotami-obsahom

entít sa využíva reštrikcia (podľa hodnôt k v reštrikčnom atribúte A pomocou binárneho

porovnávacieho atribútu kde R[A k] = { r | r R (r.A k) }) ako aj množinové operácie

zjednotenia, prieniku a relatívneho komplementu (rozdielu). Dôležitá pre normalizáciu je projekcia –

definícia projekcie je nasledovná:

Nech R je relácia a A jej atribút, potom projekciou R do A (označovaná ako R[A]) sa nazýva:

R[A] = { r.A | r R }

Pre samotnú normalizáciu sú dôležité najmä jej prvé tri kroky, v ktorých sa literatúra príliš

neodlišuje. Štvrtá, prípadne piata normálna forma nie je uspokojivo popísaná [Yourdon 91] [Scheber

88] a rozchádzajú sa jej definície, prípadne nie je zabezpečená reverzibilnosť a hrozí strata

informácií.

Prvá normálna forma predpokladá, že relácia obsahuje len jednoduché atribúty, nie zložené, ktoré sú

reláciami.

Ak napríklad relácia Zamestnanec obsahuje atribút MenoZamestnanca a v ňom je uložené priezvisko,

meno, prípadne aj titul, tak môžu vznikať nasledovné problémy:

- používateľ môže zadať len priezvisko a ignoruje krstné meno,

- používatelia ukladajú priezvisko a meno, prípadne aj titul v rôznom poradí a dochádza k

nejednoznačnosti a problémom pri vyhľadávaní (nie je známe, či je prvé meno alebo

Page 27: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 27 -

priezvisko),

- okrem problémov pri vyhľadávaní sa často uloží to isté meno v rôznych podobách a podobne.

Druhá normálna forma je definovaná nasledovne:

Relácia R je v druhej normálnej forme ak je v prvej normálnej forme a ak každý atribút, ktorý nepatrí

k žiadnemu kľúču relácie R, silne funkčne závisí od každého kľúča relácie R.

Atribút B funkčne závisí od A (A -> B), ak platí:

s, r R : s.A = r.A => s.B = r.B

Atribút B silne funkčne závisí od A, ak neexistuje žiadna vlastná podmnožina A’ zloženého atribútu

A taká, že platí A’ -> B .

Kľúč relácie jednoznačne identifikuje každý výskyt, populáciu alebo n-ticu relácie. Je to vybraný

atribút, alebo podmnožina atribútov relácie, kedy žiaden atribút z kľúča nemôže byť vynechaný,

pretože by vznikla redundancia.

Ako príklad môže poslúžiť relácia Hala s informáciami o obsahu jednotlivých hál skladu.

Relácia sklad môže obsahovať nasledovné atribúty: IDHaly, Kapacita, Pobočka, IDTovaru,

NázovTovaru, Množstvo, MernáJednotka, DátumObstarania, Cena, TypTovaru.

Pri napĺňaní odpovedajúcej fyzickej tabuľky jednotlivými výskytmi relácie sa však zistí, že

- atribúty NázovTovaru, MernáJednotka, Cena, TypTovaru sú závislé na atribúte IDTovaru

- atribúty Kapacita, Pobočka sú závislé na IDHaly

- atribúty Množstvo, DátumObstarania, Cena sú závislé na IDHaly a IDTovaru.

Vznikajú tak nasledovné problémy:

- informácie o hale sú k dispozícii až po uložení prvého tovaru do nej, po vybratí tovaru z nej,

ak je teda hala prázdna, dáta znovu neexistujú,

- rovnaké atribúty o hale sa opakujú n x m, atribúty o tovare m krát, kde n je počet výskytov

druhu tovaru a m počet dovezeného množstva v konkrétnom čase a cene; tu vzniká problém

redundancie a spotreby pamäti, ošetrovania chýb, násobných zmien a podobne.

Preto je vhodné rozdeliť reláciu projekciou na tri relácie:

Hala(IDHaly, Kapacita, Pobočka, Mesto, Kraj),

Tovar(IDTovaru, NázovTovaru, MernáJednotka, TypTovaru),

Page 28: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 28 -

a TovarVHale(IDHaly, IDTovaru, Množstvo, DátumObstarania, Cena).

Podčiarknuté atribúty sú kľúčmi v reláciách a ostatné atribúty sú od nich silne funkčne závislé.

Teraz už je možné uchovať informácie o hale samostatne, nepopulovať ich výskyt podľa počtu

druhov tovaru v hale a ich výskyte v hale a podobne.

Opakujú sa však atribúty Mesto, Kraj, alebo Krajina, Štát a podobne. Tieto atribúty sú tranzitívne

závislé a bolo by vhodné ich oddeliť ďalšou projekciou a udržiavať v samostatnej relácii.

Relácia je v tretej normálnej forme, ak je v druhej normálnej forme a žiaden atribút, ktorý nie je

zložkou niektorého kľúča relácie R, nie je tranzitívne závislý od žiadneho kľúča relácie.

Na odstránenie tranzitívnej závislosti sa môže rozdeliť relácia Hala nasledovne:

Hala(IDHaly, Kapacita),

Pobocka(Pobočka, Mesto, Kraj),

Možno aj MernaJednotka je tranzitívne závislá na TypTovaru, tieto príklady sú ilustratívne a nie

verná kópia existujúceho projektu. V praxi niekedy rozdiel medzi silnou funkčnou závislosťou a

tranzitívnou závislosťou je skrytý v úlohe a zložení kľúča. Normalizácia sa väčšinou vykonáva

intuitívne a často zostáva štruktúra v nenormalizovanej podobe, pre väčšiu rýchlosť výberu dát z

jednej nenormalizovanej tabuľky s opakujúcimi sa hodnotami ako z viacerých normalizovaných.

Pravidlá eliminácie nevhodných tried

Pri perzistentných triedach, ktoré vytvárajú stále inštancie, uchovávané v databáze aj mimo času

vykonávania aplikácie, ale aj pri tranzientných, ktoré sa vytvárajú počas behu programu, možno

vykonať podobnú optimalizáciu štruktúry ako pri normalizácii relačnej bázy dát. V [Blaha 98]

odmietajú koncepciu normalizácie, pretože objektový prístup používa entity a má teda bližšie k

entitnému prístupu ako k relačnému Na druhej strane radia elimináciu nevhodných tried, najmä

redundantných (z podobných (napríklad investície, portfólio, investičné portfólio, mix) vybrať

najvýstižnejšiu), irelevantných (nesúvisiacich priamo s riešením problému a vytvárajúcich len

okolie), vágnych (príliš všeobecných tried s nejasnými hranicami, napríklad softvér, program, modul,

druh, schopnosť a podobne), atribútnych (ďalej neštrukturalizovateľných, ktoré sa dajú zapísať ako

atribúty, alebo operácie), relačných (trieda má byť entitou a nie odrážať vzťah). Toto je popísané už

v [Rumbau 91], ktorá sa považuje za jednu z prvých a najlepších kníh o OMT (Object Modeling

Technique). V [Blaha 98] pokračujú v koncepcii metodológie OMT, hoci jazyk UML sa stal

Page 29: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 29 -

štandardom a RUP ho dopĺňa ako postupnosť. Aj James Rumbaugh, spoluautor UML, RUP aj OMT,

dokonca napísal predhovor k tejto knihe a hoci predná strana upozorňuje na použite UML v nej,

okrem kritiky popisu multiplicity (“*”) tu nie je nikde významne použitá.

Popisujú aj obojsmerné transformácie objektových štruktúr objektov (napríklad zmeny vzťahov,

ich kardinalít, prenášanie atribútov z podtried do nadtried a podobne).

Z týchto dvadsiatich transformácií sú zaujímavé transformácie T18 až T20, popisujúce vzťah

kvalifikátora a asociačného atribútu, jeho prenos do triedy a použitie asociačnej triedy. Nevedú

však k optimalizácii, dajú sa len použiť ako prostriedok.

Pravidlá revidovanej normalizácie štruktúry tried

Ak sa pri tvorbe objektov použije entitný prístup, na záver je možné považovať ich v jednom

kroku za relácie vlastností (object properties) a aplikovať revidovanú normalizáciu objektov,

najmä ak aj literatúra pripúšťa neoptimálnosť štruktúry a navrhuje dosť intuitívny postup

eliminácie prípadných nevhodných tried. Nasledovné pravidlá síce vychádzajú z princípov

normalizácie štruktúrovaného prístupu, manipulujú však s objektmi, ich atribútmi a metódami.

1. Preverenie dostatočnej a adekvátnej atomárnosti nielen atribútov ale aj metód objektov: ak sa

metóda skladá z častí, ktoré by mohli byť vyvolané samostatne, je prirodzené vykonať

rozdelenie metódy na viac samostatných členských funkcií objektu. Pri atribútoch je proces

tiež jednoznačný: príkladom je MenoZamestnanca ako atribút, ktoré sa rozdeľuje na atribúty

Priezvisko, Meno a Titul, aby nevznikali problémy pri vstupoch, triedení a vyhľadávaní.

Možno však považovať za vhodný aj taký atribút, ktorého typom je štruktúra alebo trieda,

pokiaľ vyhovujú rekurzívne ich jednotlivé položky hľadisku atomárnosti a ostatným

podmienkam na rozdiel od štruktúrovaného prístupu, kde relácia ako atribút nie je vhodná.

2. Vytvorenie explixitného identifikátora - určenie primárneho kľúča z atribútu/atribútov,

jednoznačne určujúceho každú inštanciu triedy, ak nepostačuje systémový identifikátor objektu

(OID).

3. Vyradenie atribútov, ktoré nie sú závislé od primárneho atribútu, alebo sú tranzitívne závislé

cez nekľúčový atribút (2NF a 3NF pri štruktúrovanom prístupe). Metódy sa neviažu na

primárny kľúč, len Get()/Set() metódy na atribút, ktorého hodnotu nastavujú a vypisujú, ostatné

na množinu atribútov, ktoré pri svojom výpočte potrebujú. Ponechanie modelu v

neoptimalizovanom (nenormalizovanom) tvare je možné, je však vhodné túto modifikovanú

Page 30: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 30 -

objektovú normalizáciu previesť explicitne a nie intuitívne a definovať konkrétne zámery

prípadnej denormalizácie, napríklad vzhľadom na rýchlosť spracovania a podobne, kedy je

vyhľadávanie nad nenormalizovanou triedou inštancií rýchlejšie ako nad niekoľkými

normalizovanými triedami objektov, ktoré vznikli rozdelením pôvodnej triedy, jej projekciou

do nových tried. Metódy prechádzajú do nových tried podľa atribútov s ktorými pracujú,

niekedy je potrebné vytvoriť aj rozdelenie metód (napríklad editácia alebo kontrola množiny

atribútov).

4. Preverenie štruktúry a normalizácie podľa nasledujúcich vzorov 1 - 4.

5. Pridanie chýbajúcich asociačných tried pre vzťahy m:n, ale aj 1:n ak je to potrebné a ak to

nevyplynulo z bodu 3. Tieto triedy obsahujú referencie na obe triedy vo vzťahu, prípadne aj

ostatné atribúty vzťahu, vzťah n:m sa takto doplní, rozdelí a vznikajú dva nové vzťahy n:1 a

1:m.

Pravidlá rozdelenia tried

Zaujímavou možnosťou je sledovať odstránenie redundantných atribútov (a tým aj metód),

alebo redundantných hodnôt atribútov pomocou rozdelenia do tried s konkrétnym typom vzťahov.

Atribúty objektov s opakujúcimi sa hodnotami môžeme rozdeliť podľa využitia na prázdne (Null)

a neprázdne. Pri rozdelení prechádzajú do nových tried aj príslušné metódy. Zapísať jednotlivé

prípady je možné aj v jazyku OCL (Object Constraint Language), ktorý upresňuje a formalizuje

určité podmienky pre objektový model. Je popísaný v [OCL97] a v [UML 99] a využitý v

[Semantics 97] a v [UML 99]. Tento jazyk je vo vývoji a na jeho nevýhody upozorňujú v [Cook

99a] aj v spoločnej práci [Cook 99b], najmä na formálne nepresnosti typov a výrazov.

Zavedenie kľúča key pre triedu withKey a jej všetky inštancie v OCL vyzerá nasledovne:

withKey : class

withKey.allInstances->forAll(p1, p2 | p1 <> p2 implies p1.key <> p2.key

and

withKey.allInstances->forAll(p | p.key <> Empty)

Potom definícia závislého atribútu att v triede Normalized je nasledovná:

Page 31: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 31 -

Normalized : class

Normalized.allInstances->forAll(p1, p2 | p1.key = p2.key implies p1.att = p2.att)

Existencia atribútu at bez hodnoty v triede notNormalizedWithEmpty sa dá popísať nasledovne:

notNormalizedWithEmpty : class

notNormalized.allInstances->exist(p1, p2 | p1.key <> p2.key and p1.att = p2.att

and p1.att = Empty)

To však nie je negácia závislosti atribútu podľa predošlej definície, tá by vyzerala nasledovne:

notNormalized : class

notNormalized.allInstances->forAll(p1, p2 | p1.key = p2.key and p1.att <> p2.att)

a nemá preto svoj obraz v normalizácii bázy dát, preto je potrebné posúdiť či ide o

abnormalitu a je nutné ju vyradiť podľa vzoru 1. popísaného nižšie. Takýto pohľad na

optimalizáciu databázového modelu sa dá priblížiť spôsobom popisu vzorov podľa [Gamma

95].

Pravidlo č.1 Rozdelenie triedy špecializáciou

Slúži na odstránenie atribútov s redundantnými nulovými hodnotami rozdelením tried na

nadtriedu a podtriedy, do ktorých prechádzajú tieto neefektívne využité atribúty. Vždy treba

rozhodnúť, či použitie tohto vzoru napomôže optimalizácii. Z pôvodnej triedy sa presunú často

nevyužité atribúty do derivovaných podtried, v ktorých už obsahujú hodnoty.

Page 32: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 32 -

Klucov y Zav isly Nezav isly Zav islyKlucov y

Nenormalizov anaTrieda

*

Atribut

* *

Atribut

nadtrieda

Normalizov anaTrieda<<creates>>

2..n

*

*

specializacia >

podtrieda

*

casto nev y uzity ,prechádza do podtriedy

Obr. 4a Možnosti optimalizácie pre obsahovo opakujúce sa atribúty, prázdne

Doplňujúci popis a príklady:

Vzor je ilustrovaný na príklade publikácie, účtu a dokladu. Ak by boli všetky inštancie

objektami jednej triedy, tak by pri objekte typu kniha triedy publikácia ostávali prázdne

atribúty časopisu (názov, číslo, ročník, ...) a príspevku pre zborník konferencie, pri bežnom

účte atribúty výpovednej lehoty termínovaného a revolvingu a naopak pri termínovanom účte

atribúty povoleného debetu a pokuty, alebo poplatku prípadne úročenia debetu pre

kontokorentný účet. Pri doklade PAM by sa striedali prázdne hodnoty v atribútoch dôvod

výpovede a nástupný plat a funkcia. Podmnožina atribútov by bola prázdna podľa

konkrétneho reštrikčného atribútu, upresňujúceho typ alebo stav objektu - existujú prípady,

kedy sa aj pre stav objektu vytvárajú samostatné triedy v [Gamma 95] je popísaný dokonca

vzor State.

Page 33: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 33 -

Publikacia

NazovDatumVy daniaVy dav atelISBN

Clanok

RocnikCisloNazov

Zbornik

Nazov Konef erencieDatumMiestoKonania

Kniha Ucebnica Skripta

Ucet

CisloUctuIDVlastnikaUrocenieKredituStav

Bezny

Vy skaPov DebetuUrocenieDebetu

Terminov any

SplatnostUcetPreUrok

Doklad

IDdatumv y stav iladresattexttermin

Vy pov ed

dov od

Prijatie

f unkcianastupny

Obr. 4b Vhodné rozdelenie pre triedy Publikacia, Ucet, Doklad.

Okrem týchto príkladov je takáto špecializácia potrebná aj pri rôznych typoch cenných

papierov, klientov (fyzická, právnická osoba), firiem (a.s., s.r.o., domáca alebo zahraničná

spoločnosť), poistiek (životná, neživotná), tovaru, výrobkov a podobne. Zvolené príklady sú na

prvý pohľad zrejmé, ale pri konkrétnom projekte je vhodné sledovať opakujúci sa výskyt

prázdnych atribútov podľa určitého javu a aplikovať rozdelenie.

Klasický prípad nezávislých atribútov v triede, ktorých hodnoty sa opakujú a ktorý je negáciou

definície závislých atribútov, uvedenou vyššie je nasledovný zápis:

Page 34: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 34 -

notNormalized2 : class

notNormalized.allInstances->exist(p1, p2 | p1.key = p2.key and p1.att <> p2.att)

Pre tranzitívne závislý atribút s nenulovou hodnotou:

notNormalized3 : class

notNormalized.allInstances->exist(p1, p2 | ( p1.key <> p2.key and p1.att1 = p2.att1 )

implies ( p1.att2 = p2.att2 ) )

kde att1<>key, ale môže byť súčasťou kľúča key: att key.

Odstránenie obsahovo opakujúcich sa neprázdnych atribútov popisuje vzor 2.

Pravidlo č.2 Rozdelenie triedy asociáciou/agregáciou

Slúži na odstránenie atribútov s redundantnými nenulovými hodnotami,

spôsobujúcimi neefektívne spracovanie a anomálie. V takomto prípade treba rozhodnúť, či

použitie tohto vzoru napomôže optimalizácii. Odstránenie sa vykoná rozdelením na triedu

(atribúty s opakujúcou sa hodnotou ostávajú v triede) a jej časť, ako agregovanú, prípadne

asociovanú triedu, obsahujúcu ostatné atribúty, ktorých viacnásobný výskyt donútil k

spomínanému opakovaniu.Kardinalita agregácie/asociácie je 1:n.

Page 35: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 35 -

Klucov y Zav isly Nezav isly Zav islyKlucov y

Nenormalizov anaTrieda

*

Atribut

* *

Atribut

Agregov ana*

Agregujuca*

*Normalizov anaTrieda<<creates>>

2..n

*

*

*

agregacia >

*

asociacia

OR

casto sa opakuje hodnota,prechádza do agregujucej

Obr. 5 Možnosti optimalizácie pre obsahovo opakujúce sa atribúty, neprázdne

Pôvodnú triedu nahradia agregované triedy s neopakujúcimi sa atribútmi a agregujúca

trieda, ktorá obsahovala opakujúce sa atribúty. Namiesto agregácie sa môže podľa potreby

použiť aj asociácia, najmä ak agregované triedy komunikujú a majú vzťahy aj s inými

triedami alebo ich životný cyklus (vznik a zánik, ako aj jednotlivé stavy) neovplyvňuje

výlučne agregujúca trieda.

Doplňujúci popis a príklady:

Ako príklad môže poslúžiť faktúra alebo objednávka so svojimi položkami na obr. 7a,

kde sa okrem atribútov faktúry (ID, názov, dátum vystavenia, odosielateľ, príjemca) popisujú

aj atribúty jednotlivých položiek (tovar, cena, množstvo, merná jednotka) a preto sa opakujú

pre každú inštanciu číslo faktúry, dátum vystavenia, odosielateľ, príjemca a podobne. Toto je

v relačnom chápaní slabá závislosť od kľúča – čísla faktúry, ak aj je atribút súčasťou kľúča

inštancie. Ak číslo položky obsahuje číslo faktúry, potom ide o tranzitívnu závislosť.

Podobným príkladom na tranzitívnu závislosť je v triede zamestnanec štát zamestnanca

pobočky nadnárodnej spoločnosti na obr. 6, ktorý závisí od mesta a tým až tranzitívne od

adresy (ulice) a ID zamestnanca.

Page 36: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 36 -

Stat

Mesto

Zamestnanec

IDRC

Ulica

**

*

**

*

Obr. 6 Optimalizácia adresy zamestnanca:

Podobne aj atribúty haly s tovarom na obr.7a sa opakujú vďaka viacerým druhom tovaru

v nej. Ide o tranzitívnu závislosť atribútov merná jednotka, názov tovaru a typ tovaru od ID

tovaru, ak je kľúčom ID haly, alebo tranzitívnu závislosť skladu alebo pobočky od haly, ak je

kľúčom ID tovaru. Keďže by mal byť kľúč zložený z oboch pre atribút množstva tovaru

v hale, potom nevzniká ani silne funkčná závislosť atribútov na kľúči. Tranzitívna závislosť

skladu sa vyrieši jeho oddelením agregáciou a tranzitívna závislosť tovarových atribútov

oddelením tovaru od haly a množstvo v hale ako aj čas uskladnenia vyrieši asociatívna trieda.

V triedach, kde okrem zamestnanca sa evidujú deti, alebo projekty, alebo firmy, pre ktoré

pracuje, vzniká tiež tranzitívna závislosť napríklad dátumu narodenia na ID dieťaťa, vedúceho

na ID projektu a adresy na ID firmy. V prípade, že vznikne zložený kľúč z ID zamestnanca a

ID dieťaťa, ID projektu alebo ID firmy, nebudú niektoré atribúty silne funkčne závislé, preto

je vhodné rozdeliť triedu na n:m asociáciou. Nie je možné použiť agregáciu, pretože ide

o kardinalitu n:m (obaja rodičia pracujú v jednej firme, viac zamestnancov vo viacerých

firmách a projektoch, n firiem dodáva, alebo objednáva m produktov).

Page 37: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 37 -

Polozka

IDtextmjmnozstv ocena

Faktúra

IDtextdatumadresatv y stav ilodosielatel

**

Sklad

Tov ar

IDnazovmj

Hala

*

*

*

*Polozka

IDtextmjmnozstv ocena

Objednáv ka

IDtextdatumadresatv y stav ilodosielatel

**

Mnozstv oUlozeneho

mnozstv o

Obr. 7a Optimalizácia štruktúry pre objednávku, faktúru, tovar na sklade

Zamestnanec

IDRC

Dieta

IDRC

**

Prispev ok

poberaPrispev ok

* *

Zamestnanec

IDRC

Projekt

IDNazovVeduci** **

Odpracov ane

odpracov aneHodiny

Zamestnanec

IDRC

Firma

ICODICONazov*** *

Funkcia

FunkciaPrijem

**

pracuje pre

pracuje na

Firma

ICODICONazov

Tov ar

IDnazovmj**

Mnozstv oDodav aneho

mnozstv o

Obr. 7b Optimalizácia štruktúry pre pracovníka s deťmi a zamestnanca

Silne funkčná závislosť množstva dodávaného tovaru, odpracovaných hodín na

projekte, funkcií, príspevkov na dieťati a podobne sa vyrieši asociatívnou triedou, ktorá bude

obsahovať zložený kľúč z oboch ID objektov, zúčastňujúcich sa na väzbe a na ktorom budú

atribúty väzby silne funkčne závislé.

Page 38: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 38 -

Pravidlo č.3 Rozdelenie generalizáciou

Slúži na odstránenie viacnásobného výskytu atribútov/metód v triedach presunom do

vytvorenej nadtriedy, pre sémanticky blízke atribúty a triedy. Takéto vytváranie hierarchických

štruktúr zjemňovaním dedenia je môžné vykonať opakovane až do odstránenia všetkých

opakujúcich sa atribútov/metód triedy.

Vo pravidle č. 1 sme z príliš všeobecnej triedy vytvárali špecializáciou odvodené

podtriedy s dovtedy často sa opakujúcimi, nulovými hodnotami niektorých atribútov, ktoré

takto získali v derivovaných triedach na význame. Tu vytvárame z viacerých tried nadtriedu,

ktorej delegujeme spoločné, opakujúce sa prvky. Tento vzor teda popisuje generalizáciu

a tvorbu tried opačným merom, zdola nahor. Spolu so vzorom č. 1 popisuje postup vytvárania

tried, ktorý je intuitívne jasný, ale mnoho doménových expertov má problémy s rozhodnutím

sa pre generalizáciu, špecializáciu, kompozíciu alebo asociáciu a potrebujú poznať pravidlá

postupu.

Štruktúra

Ak niektoré triedy obsahujú redundantné atribúty, ktoré sú sémanticky podobné, je

vhodné vytvoriť pre nich nadtriedu a presunúť tam tieto atribúty. Triedy ich budú môcť vďaka

dedeniu ako podtriedy využívať aj naďalej, ale sprehľadní sa celková štruktúra. Pri pridaní

novej triedy, ktorá obsahuje takéto atribúty, je možné ich v novej triede vyradiť a triedu

zaradiť do príslušnej úrovne takéhoto hierarchického stromu.

Page 39: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 39 -

X

XAtribut1XAtribut2...XAtributNSpolocny Atribut1Spolocny Atribut2...Spolocny AtributN

Y

YAtribut1YAtribut2...YAtributNSpolocny Atribut1Spolocny Atribut2...Spolocny AtributN

Yderiv

YAtribut1YAtribut2...YAtributN

Xderiv

XAtribut1XAtribut2...XAtributN

XY

Spolocny Atribut1Spolocny Atribut2...Spolocny AtributN

<<creates>>

Obr. 8 Možnosti optimalizácie pre atribúty a triedy sémanticky blízke s opakujúcimi sa atribútmi

Triedy ich budú môcť vďaka dedeniu ako podtriedy využívať aj naďalej, ale

sprehľadní sa celková štruktúra. Pri pridaní novej triedy, ktorá obsahuje takéto opakujúce sa

prvky, je možné ich v novej triede vyradiť a triedu zaradiť do príslušnej úrovne takéhoto

hierarchického stromu.

Doplňujúci popis a príklady:

Page 40: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 40 -

Vzor môžeme ilustrovať na príklade personálu v nemocniciach, kde evidujeme rôzne

druhy zdravotných sestier a rôzne profesie lekárov. Je vhodné identifikovať tieto triedy

a vytvoriť pre ne spoločnú nadtriedu lekár, zdravotná sestra a podobne. Takisto aj pre faktúru,

dodací list a podobne, môžeme vytvoriť spoločnú nadtriedu doklad. Podobne aj pre triedy

popisujúce potrebné typy účtov (spoločnú triedu účet).

Pravidlo č.4 Rozdelenie tried agregáciou/asociáciou

Slúži na odstránenie viacnásobného výskytu atribútov/metód v triedach presunom

(projekciou) do novovytvorenej triedy ako ich časti – agregovanej, alebo asociovanej triedy, pre

sémanticky odlišné triedy.

Page 41: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 41 -

X

XAtribut1XAtribut2...XAtributNSpolocny Atribut1Spolocny Atribut2...Spolocny AtributN

Y

YAtribut1YAtribut2...YAtributNSpolocny Atribut1Spolocny Atribut2...Spolocny AtributN

<<creates>>

Xderiv

XAtribut1XAtribut2...XAtributN

XY

Spolocny Atribut1Spolocny Atribut2...Spolocny AtributN

*

Yderiv

YAtribut1YAtribut2...YAtributN

***

Obr. 9 Možnosti optimalizácie pre atribúty a triedy sémanticky rozdielne s opakujúcimi sa atribútmi

Ak niektoré triedy obsahujú spoločné atribúty, ktoré sú sémanticky rozdielne od

ostatných, je vhodné vytvoriť pre ne samostatnú triedu mimo hierarchie a presunúť tam tieto

atribúty. Takáto trieda bude potom vo vzťahu asociácie, alebo agregácie, ak boli dovtedy tieto

prvky súčasťou celku a budú vznikať a zanikať spolu s ostatnými.

Doplňujúci popis a príklady:

Vzor môžeme ilustrovať na príklade tovaru alebo výrobného produktu a jeho súčastiek

(napríklad auto a jeho vybavenie: motor, kolesá, karoséria a podobne).

Page 42: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 42 -

Viacvrstvový model

Po dokončení všetkých modelov a vrstiev je vhodné vytvoriť aj viacvrstové diagramy zložené

z niekoľkých častí alebo vrstiev. Väčšinou sa používa trojvrstvový diagram (Three - Tiered Class

Diagram) kde sa nachádzajú:

Prezentačná, alebo používateľská vrstva (User Services) - triedy, ktoré zabezpečujú služby

navonok, pre konkrétneho používateľa; sú to aplikačné V/V triedy,

vrstva logiky (Business Services) - ktorá zabezpečuje výpočty, spracovanie, úlohy a logiku

systému,

dátová vrstva (Data Services) obsahujúca (perzistentné) triedy a služby komunikácie so

SRBD.

Ide tu o rozdelenie a zoskupenie tried podľa príslušnosti do jednotlivých vrstiev, ktoré

navzájom spolupracujú v aplikácii. Tak možno oddeliť DB služby od výpočtových, ľahšie ich

udržiavať, optimalizovať, opravovať, vymieňať a využívať na podobné zameranie. Identifikuje sa tak

a analyzuje komunikácia medzi vrstvami a zjednodušuje sa, prípadne posudzuje adaptácia vrstvy pre

iné podmienky (prezentačná vrstva pre iné odvetvie, alebo krajinu, dátová vrstva pre nový typ

databázy, logická pre výmenu za efektívnejšie algoritmy), alebo jej výmenu.

V konceptualizácii a analýze sa začína často s doménovými, reálnymi triedami, ktoré sa

neskôr transformujú do dátovej entity, budú potrebovať formulár na editovanie obsahu, prípadne

výpočtovú triedu a triedu pre rozhranie. Vznikne tak viac tried s rovnakým názvom: doménová,

aplikačná pre V/V formulár, interná-dátová, interná-výpočtová, rozhranie a podobne. Tento problém

sa dá riešiť dvomi spôsobmi:

1. pre jednotlivé triedy sa vytvoria rôzne stereotypy, napríklad Form (ako Formular pre aplikačnú),

DB (pre dátovú), Internal alebo C (ako Class pre výpočtovú), I alebo Interface pre rozhranie,

2. ak konkrétne prostredie nedovoľuje rovnaké mená, hoci pre rôzne stereotypy, potom budú slúžiť

predchádzajúce akronymy ako predpony mena pre jednotlivé druhy tried: Faktura (reálna trieda),

FormFaktura (V/V formulár, aplikačná trieda, v prezentačnej vrstve), CFaktura (pre výpočtovú

triedu, v logickej vrstve), DBFaktura (pre internú triedu v dátovej vrstve), IFaktura pre všeobecné

rozhranie rôznych typov faktúr, tento príklad je len ilustratívny pre návrh menných konvencií

a nie je dokonalý svojím obsahom.

Page 43: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 43 -

Väčšinou doménová reálna trieda tvorí na začiatku predobraz pre následné dvojnícke triedy

a v závere návrhu už zaniká a ostávajú už len jej implementační následníci v aplikačnej

(používateľskej) a internej vrstve (logickej a dátovej).

Na obr. 10. je znázornená dvojvrstvová architektúra klient-server podľa [RUP 98], kedy prvá

pracovná stanica (Client A) obsahuje aplikáciu a všetky potrebné služby a komunikuje priamo s

databázou. Trojvrstvovú architektúru využíva až druhá alternatíva, kedy pracovná stanica (Client B)

využíva server, na ktorom je sústredená časť všeobecnej logiky systému a služieb a až ten komunikuje

s databázou. Dnes ide najmä o spoločné COM objekty a db služby. Tretia alternatíva, typická pre

intranet/internet riešenia, používa tzv. tenkého klienta (Client C), ktorý obsahuje len prehliadač. Web

server, s ktorým komunikuje, obsahuje aj prezentačnú aj logickú vrstvu.

Obr. 10 Dvojvrstvová, trojvrstvová a web aplikácia, RUP, Rational Software, 1998

Ďalším prvkom objektovej analýzy je vyčlenenie tried, ktoré slúžia len ako rozhranie

(interface), nielen k používateľovi, ale aj k ostatným triedam. Sú to triedy, ktoré obsahujú len metódy

na sprístupnenie ostatných členov, dát a funkcíi, vlastností, atribútov, zabezpečenie V/V rozhrania.

Tieto metódy sú prázdne, slúžia len ako abstraktné vzory prístupu a komunikácie, ktoré skutočné

triedy dedia a dopĺňajú ich funkčný kód, implementáciu. Význam tejto technológie je v tom, že

používateľ dopredu pozná rozhranie a nezaujíma ho, ako bude zabezpečené. Ak napríklad dodávateľ

vyvinie novú verziu, musí ponechať pôvodné rozhranie a pridať aj nové, vylepšené, ako ďalšiu

verziu, aby pôvodné programy a komponenty pristupovali k pôvodnému rozhraniu a nové k novému.

Vo všetkých krokoch analýzy a návrhu boli uplatnené pravidlá konzistencie o vytváraní

dynamického a následne objektového modelu. Pre triedy, ktoré menia stavy počas behu programu, sa

Page 44: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 44 -

vytvára aj stavový diagram. To sa vytvára už pre doménové triedy. V nich sa definujú stavy skúmanej

triedy a udalosti, ktoré vedú k prechodu do jednotlivých stavov. V stavoch sa zaznamenávajú operácie

- metódy triedy, ktoré je nutné pri vstupe do stavu alebo na výstupe - zániku pri ukončení vykonať.

Operácie sú chápané ako aktivity (vykonávajú sa počas celého trvania stavu (do)) a ako akcie

(vykonávajú sa pri vstupe (on entry), výstupe (on exit), alebo pri nejakej udalosti (on event)).

Stavový diagram použijeme pre každú triedu, ktorá vykazuje možnosť nachádzať sa vo viac

stavoch, do ktorých prechádza po nastatí udalostí, príchodu očakávanej správy alebo splnení určitých

podmienok.

Algoritmy metód tried, ktoré je nutné pre svoju dôležitosť navrhnúť a zapísať, tvoríme

podobným postupom ako v analýze.

V analýze sa algoritmy väčšinou získali od používateľa; išlo o algoritmy aplikačnej oblasti

týkajúce sa všeobecných alebo interných predpisov a smerníc.

Vo fáze návrhu môže ísť síce aj o doplnenie potrebných algoritmov od používateľa alebo

zadávateľa, ale ide aj o získavanie algoritmov pre triedy mikroprocesov, ktoré sú viac systémovo a

programátorsky orientované a nie aplikačne. Ich riešenia sa vyhľadávajú väčšinou v odbornej

literatúre a článkoch, na konferenciách a pri konzultáciách so špecialistami. Ide napríklad o špeciálne

numerické a dátové algoritmy, kde sa prihliada na stupeň presnosti, spotrebu primárnej a sekundárnej

pamäte, časové nároky a pod. Aj táto práca je dôležitou súčasťou návrhu.

Model softvérových a hardvérových komponentov IS

Na záver možno zrevidovať hlavný diagram komponentov a vytvoriť pohľad na softvérové

komponenty navrhovaného systému, kde vystupujú už mená konkrétnych knižníc tried a funkcií, či už

dodávaných, alebo vytvorených. Môžeme uvádzať aj ich prípony ako .lib, .dll, .ocx., .bin, aj .exe a

podobne. Možno navrhnúť aj komponenty zdrojových textov programu (.hpp, .cpp a pod.) a ich

závislosť, prípadne aj usporiadanie výkonných modulov podľa prevádzok, oddelení, pracovných

staníc a podobne.

V tejto etape je nutné navrhnúť aj spôsob ochrany a zabezpečenia systému, režim práce, typ

programovacieho jazyka, DB a podobne. Toto však nie je integrálnou súčastou UML.

Page 45: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 45 -

Implementácia

Implementáciu bežnej aplikácie je možné rozdeliť na implementáciu dátovej, logickej a

prezentačnej vrstvy (pri technologických procesoch, systémových programoch alebo napríklad

aplikáciách čipových kariet sa môžu použiť iné architektúry). Väčšinou programátor potrebuje pre

implementáciu dátový model, základné scenáre služby (use case) a návrhy obrazoviek. Dnešné

vývojové prostredia dovoľujú návrh obrazoviek a okamžité generovanie celkovej aplikácie. Takýmito

rozšírenými prostrediami pre jazyk C++ je napríklad C++ Builder alebo Microsoft Visual C/C++,

popísané množstvom publikácií podobných [Kruglin 98] prípadne celé MS Visual Studio, kde sú aj

ďalšie jazyky (Visual Basic, Visual FoxPro), ktoré tiež používajú spoločné prostredie návrhu

prezentačnej vrstvy a generovanie prázdnej aplikácie. Je dokonca možné navrhnúť aj prepojenie na

databázu pomocou sady premenných a nakoniec doplniť preddefinované metódy kódom. K

jednotlivým objektom obrazoviek je možné priradiť metódy podľa udalosti na objekte. Pri vstupnom

poli je dôležitou udalosťou zapisovanie znakov z klávesnice, prípadne potvrdenie na konci zápisu

pomocou klávesy Enter. Pri tlačidle je to jeho voľba poklepom na ňom pomocou počítačovej myši,

kedy sa v metóde spustí žiadaná operácia, ktorú samotné tlačidlo zastupuje. Keďže používateľ okrem

menu práve tieto objekty žiada o spustenie operácií, ich metódy v dialógu sú najdôležitejšie a kryjú sa

často s dôležitými scenármi služby. Preto je vhodné zaznamenať interakciu objektov v dialógu po

stlačení tlačidla (Obr. 11a. a 1.11b.).

Page 46: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 46 -

: Pouziv atel

Pridaj : PushButton

Vy rad : PushButton

Produkt : EditBox

Zoznam : Listbox

Pridaj::PridajProdukt(){

Produkt.VratProdukt();Zoznam.ZaradProdukt();Produkt.Vy znacText();if (Vy rad.Nepristupny ())

Vy rad.Uv olni();}

1: PridajProdukt()2: VratProdukt()

4: Vy znacText()

3: ZaradProdukt()

5: [nepristupny ] Uv olni()

Obr. 11a Scenár metódy PridajProdukt() objektu Pridaj triedy PushButton (komunikačný diagram)

Page 47: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 47 -

: Pouziv atel

Pridaj : PushButton

Produkt : EditBox

Zoznam : Listbox

Vy rad : EditBox

PridajProdukt

VratProdukt

ZaradProdukt

[nepristupny ] uv olni

Vy selektujText

Obr. 11b Scenár metódy PridajProdukt() objektu Pridaj triedy PushButton (sekvenčný diagram)

Keďže ide často o veľmi jemné operácie, analytik ich nezaznamenáva v takomto tvare často,

ale len v skripte v dokumentácii dialógu, ako to je pri obrázku 2.11a. Na tomto obrázku je celý scenár

zaznamenaný v komunikačnom diagrame, ktorý môže v doplňujúcej vrstve prekrývať objektový

diagram dialógu podľa kapitoly 2.1.3.

Previazaním jednotlivých objektov obrazovky sa zaoberá aj vzor Mediator z [Gamma 95].

Vzor Command opisuje štruktúru a fungovanie celej aplikácie, obsahujúcej dokumenty a menu s

príkazmi na spracovanie. Dnes sú skôr vynikajúcim príkladom používanej architektúry a nie je

potrebné už tieto vzory implementovať, pretože ich štandardné prostredie už obsahuje. Vo

vygenerovanej aplikácii už je väčšinou prítomná aj podpora pre Dispečer (Mediator), ktorý spúšťa

metódy objektov podľa zaregistrovanej udalosti, podpora pre menu systém, spracovanie dokumentov

(SDI - Single Document Interface, MDI - Multiple Document Interface), podobné prostrediu

dokumentov Wordu, Excelu, PowerPointu v Microsoft Office a iných systémov a nie je problém

vytvoriť pre spracovanie faktúr, klientov, alebo objednávok podobné aplikácie. Aj CASE systém

D4W:Doors For Windows, ktorý vznikol pred dnešnými vývojovými nástrojmi, popísaný v [Polášek

Page 48: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 48 -

94] a v Prílohe D., sa zaoberá tvorbou dialógov a zdrojového kódu celej aplikácie, ich vnútornou

riadiacou logikou a naviazaním na databázu.

Ak však ide o rozsiahlu profesionálnu aplikáciu, kde nestačia len návrhy obrazoviek a

predstava spracovania údajov, je potrebné použiť jazyk UML a jeho jednotlivé diagramy na

vytvorenie modelu budúceho systému. Ak sú v elektronickej podobe, vytvorené pomocou CASE

systému, je možné priamo z nich generovať skelet, alebo fragmenty aplikácie. Čo všetko by bolo

potrebné pre vygenerovanie celej aplikácie bez ďalšieho zásahu v ideálnom prípade?

Na zabezpečenie previazania celej aplikácie je potrebný konceptuálny diagram, podľa

jednotlivých služieb sa vytvárajú moduly a knižnice aplikácie v komponentovom diagrame a ich

fyzické umiestnenie v diagrame rozmiestnenia. Jednotlivé služby – moduly sú naplnené konkrétnou

objektovou štruktúrou a to je potrebné zaznamenať v objektovom diagrame a aj vygenerovať do

zdrojového kódu. Transformáciu jednotlivých prvkov (trieda s jej atribútmi a metódami, špecializácia

tried, agregácia a asociácia) do kódu je uvedená v kapitole 1.2. Na vygenerovanie fyzickej štruktúry

dátovej a logickej vrstvy je teda potrebné použiť objektový model, najlepšie plnohodnotný

viacvrstvový diagram. Pre prezentačnú vrstvu je najvhodnejšie použiť aj verné návrhy skutočných

obrazoviek a doplniť ich metódami podľa odpovedajúcich aplikačných tried. K tejto stále ešte

statickej štruktúre je vhodné pripojiť aj dynamický a funkčný model, ktorý dokáže vyplniť aj telá

metód objektov. Doplnenie triedy o potrebné atribúty ale najmä metódy, dokonca aj o ich

implementáciu je možné aj pomocou stavového diagramu, kde často stav triedy môže zabezpečiť

jedna metóda a jej telo bude pozostávať postupne z operácií popísaných pre vstup do stavu (entry

operácie), samotný stav (do aktivity) a výstup zo stavu (exit operácie). Aj pri prechodoch zo stavu do

stavu sa okrem udalosti zapisuje aj vykonávaná operácia, ktorej telo môže obsahovať operácie z

nasledujúceho vetvenia, stavov, prechodov a podobne. Naplnenie metód objektov pomocou stavového

diagramu je priblížené v Príloha B.5 Stavový diagram na príklade zo [Semantics 97].

V dynamickom modeli sa sleduje interakcia konkrétnych objektov a a b, kde ju v závere môže

zastupovať volanie metódy b.m() objektu b z objektu a. Všetky ďalšie metódy objektov, ktoré vyvolá

následne objekt b, môžu byť súčasťou metódy b.m(). Interaktívne diagramy sú popísané v prílohe B.3

a B.4. Pri zložitejších, napríklad numerických metódach logickej vrstvy je vhodné využiť

zaznamenaný algoritmus z funkčného modelu priamo do konkrétnej metódy. Použitie funkčného

modelu pre konkretizáciu algoritmu metódy, jej presnejší popis je v prílohe B.6 a v kapitole Riešenie

prepojenia modelov návrhom alternatívneho vývojového prostredia, aj s konkrétnymi problémami.

Page 49: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 49 -

Takto vznikne funkčná aplikácia, ktorú môžeme dopĺňať priamo v prostredí SAPP, prípadne ju

aktualizovať pomocou reverzného inžinierstva.

K vytvoreniu aplikácie bez ďalšieho zásahu je potrebné využiť nasledovné diagramy

jednotlivých modelov:

1. Konceptuálny diagram na previazanie celého vývoja tvorbou služieb systému, a

vybudovanie architektúry pomocou komponentov.

2. Pokrytie rozhraní jednotlivých služieb smerom na používateľa pomocou návrhov V/V

obrazoviek.

3. Interaktívne diagramy na popis scenárov fungovania služieb systému, ktoré previažu

jednotlivé V/V obrazovky a formuláre a ich vyvolávanie.

4. Objektový diagram na generovanie zdrojového kódu štruktúry aplikácie (tzv. skelet alebo

shell), všetkých jeho vrstiev.

5. Diagramy funkčného modelu na presný popis algoritmu metód. Ak bude procesný diagram

realizovaný ako podstrom metódy objektu v navigátore SAPP, alebo ako JSD, prípadne

YSD, potom je možné použiť pre generovanie zdrojového kódu bežný algoritmus, použitý

aj v [Polášek 96c]. Program prechádza stromom rekurzívne po jeho vrcholoch, generuje

kód a pokiaľ je viac podriadených prvkov (najmä pre riadiace štruktúry while, for, if-else a

podobne) zapisuje aj začiatok a koniec bloku podľa zvoleného jazyka.

Základný algoritmus pre generovanie kódu z revidovaného JSD ako syntaktického

stromu, popísanom v kapitole Riešenie prepojenia modelov návrhom alternatívneho

vývojového prostredia, použitý v [Polášek 96c] a v [Polášek 98], môže vyzerať nasledovne

(prvok znamená vrchol stromu, úroveň znamená úroveň vrcholu stromu, podriadený prvok

znamená následník):

Zapíš(úroveň, prvoki)

{

ZapíšDoKódu(úroveň, prvoki)

ak (existuje podriadený prvokik)

ak (prvoki je funkcia alebo existuje viac ako jeden podriadený prvokik)

{

ZapíšDoKódu(úroveň, BEGIN) BEGIN je { alebo begin a pod.

pokiaľ (existuje nezapísaný podriadený prvokik)

Zapíš(úroveň+1, prvokik)

ZapíšDoKódu(úroveň, END) END je } alebo end

}

inak Zapíš(úroveň+1, prvokik)

}

Page 50: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 50 -

a b c

[while(not EndOfTasks())]

[endwhi le]

Obr. 11c Príklad zápisu riadiacej štruktúry v sekvenčnom diagrame

Program pre generovanie zdrojového kódu z interaktívneho diagramu by mohol vyzerať

nasledovne:

pre všetky objekty o v interakčnom diagrame

{

pokiaľ existuje volanie metódy mj() objektu oi volanej z objektu oa

{

ak neexistuje oi.mj()

vytvor oi.mj()

inak

vytvor samostatnú sekciu metódy, volanú dispečerom

(napríklad pomocou prepínača switch-case podľa this

volajúceho objektu alebo iného parametra,

ako je tomu vo vzore Mediator podľa [Gamma 95])

pokiaľ (neprišlo zavolanie inej metódy oi)

(a teda nenastal explicitný koniec metódy a začiatok inej)

pokiaľ (existuje volanie z oi metódy mjk() objektu ob

zapíš ob.mjk() do oi.mj()

}

}

Page 51: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 51 -

Ak je potrebné zaznamenať aj riadiacu štruktúru (if – else, while a podobne), je

možné toto zapísať pomocou rekurzívnej interakcie (local invocation) v objekte a štruktúru

a/alebo začiatok a koniec bloku uložiť ako podmienku interakcie a samotnú správu nevyplniť.

Takto je možné aj vnárať štruktúry, nemusí to však zvýšiť prehľadnosť.

Navigácia a prepojenie jednotlivých diagramových techník

Použitie jednotlivých diagramových techník a uloženie vizualizovaných informácií a návrhov

je veľmi dôležité.

V konceptuálnom diagrame ukladáme informácie o používateľoch systému. Títo používatelia

vystupujú neskôr v analýze a návrhu chápaní ako triedy. Prideľujeme im názvy v tvare podstatného

alebo zpodstatnelého mena ako klient, pracovník, vedenie, dodávateľ, odberateľ a podobne.

Používatelia sú triedami v podstate od začiatku, len sú špecifikovaní stereotypom Actor.

V Use Case diagramoch ďalej zaznamenávame aj služby, ktoré systém ponúka. Tieto služby

sa neskôr môžu stať komponentami alebo zväzkami tried. Môžeme ich tiež zaznamenávať v tvare

podstatného alebo spodstatneného mena, prípadne slovného spojenia: evidencia pracovníkov, mzdy,

nábor nových pracovníkov, evidencia hostí, kontrola, audit, evidencia dodávateľov, fakturácia a pod..

Sekvenčné diagramy rozvíjajú služby do podoby scenárov. Identifikujeme v nich tok

externých udalostí, ktoré vyvolávajú odozvu systému (služby) a interných udalostí, ktoré modelujú a

zabezpečujú správanie služby. Udalosti opisujeme ako javy, ktoré práve nastali, najčastejšie slovnými

spojeniami: príchod hosťa, podanie žiadosti, dodanie tovaru, splatná faktúra a podobne. Udalosti

môžu spoluidentifikovať aj prídavné mená: dodané, utriedené a pod. Okrem udalostí spoznávame v

tomto diagrame aj nové objekty, ktoré zabezpečujú príjem, spracovanie a odosielanie udalostí.

Objekty označujeme aj podstatnými menami ako fakturačné oddelenie, sklad, personálne oddelenie a

podobne. V diagrame sa pracuje nie s triedami, ale s ich inštanciami - objektmi. Možno však označiť

objekt podobným menom, ako má trieda (sklad:Sklad), prípadne ho vynechať (:Sklad). Výhoda

objektov je v tom, že možno vytvoriť aj viac inštancií tej istej triedy a modelovať interakcie aj medzi

nimi.

Komunikačné diagramy sa sústreďujú na dátové a riadiace správy medzi objektmi.

Najčastejšie ich zastupujú už metódy objektu, ktorý správu prijíma. Preto sa už nezapisuje udalosť

napr. poslanie ziadosti medzi objektom ziadatel a oddelenie ale PrijmiZiadost(), ktorá je členskou

Page 52: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 52 -

funkciou - operáciou objektu oddelenie. Metódy môžu byť v tvare podstatného mena: Triedenie(),

VyhladanieOdberatela(), TlacFaktur() a pod., ale aj v tvare slovesa v 2. os. j. č. v rozkazovacom

spôsobe: Vyhladaj(), Utried(), Vytlac() a podobne. Aj v tomto diagrame sa zapisujú nové objekty.

Stavové diagramy zaznamenávajú prechod vybratých tried stavovým priestorom, a to

vybratých tried, ktoré menia stavy dynamicky v čase podľa vzniknutých udalostí. Identifikujú sa tu

udalosti, ktoré spôsobujú prechod z jedného stavu do druhého, ale aj metódy objektov, ktoré sa musia

v danom stave vykonať. Niektorí autori pripúšťajú aj možnosť zapisovať do stavu aj potrebné atribúty

pre vykonanie operácií a aktivít v danom stave. Potom stav so svojou rozšírenou štruktúrou: názov

stavu, potrebné atribúty, operácie a aktivity, pripomína definíciu triedy. Je možné to chápať ako

definíciu triedy v danom momente, ide o časový rez triedou a poskladanie všetkých rezov nám vlastne

vytvorí úplný obraz o triede. Samotné stavy si vyžiadajú najčastejšie vytvorenie samostatného

atribútu. Stavy dobre opisujú prídavné mená v slovných spojeniach. Takýmto príkladom je aj diagram

A.3 v kapitole Aplikácia postupnosti..., kde Incident nadobúda stavy Zapisany, Eskalovany, Rieseny

a podobne, po udalostiach napríklad Experti najdeni, Incident odoslany. Operáciami v stavoch sú

napríklad OverIncident, PosliExpertom, ZapisRiesenia, ktoré budú neskôr metódami objektu Incident

v objektovom diagrame.

Procesný diagram je podobný stavovému diagramu ale namiesto stavov sú tu operácie, ktoré

sú súčasťou algoritmu vybratej metódy triedy, ktorej algoritmus je potrebné analyzovať alebo

navrhnúť. Operáciami môžu byť nielen jednoduché príkazy, ale aj vyvolania metód iných objektov.

Nemodeluje sa tu správanie vybratej triedy, ale vybratá členská funkcia triedy. Diagram nahrádza

Jacksonov, Yourdonov alebo vývojový diagram.

Objektový model slúži na zápis a doplnenie o ďalšie nové triedy, najmä aplikačné a interné,

dopĺňajú sa aj o atribúty a metódy. Pri názvoch atribútov používame podstatné mená, prídavné mená

môžu byť hodnotami.

Ak by sme to mali zhrnúť, tak triedy a ich objekty ako základné stavebné prvky vznikajú z

používateľov a služieb, navrhnutých v konceptualizácii a zapísaných v konceptuálnych diagramoch.

Dopĺňajú sa o ďalšie objekty v sekvenčných a komunikačných diagramoch, ako aj v objektových

diagramoch. Nové metódy do tried sa pridávajú počas tvorby sekvenčného, komunikačného,

stavového, objektového a procesného diagramu.

Page 53: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 53 -

Diagram možnosť identifikovať objekt možnosť identifikovať atribút objektu možnosť identifikovať metódu objektu

konceptuálny áno

(z používateľa; komponenty zo služby) áno

(z atribútov používateľa) áno

(funkcie a možnosti používateľa)

objektový áno

áno

áno

interaktívny áno

(potrebné pre komunikáciu) áno

(z obsahu interakcií a správ)

stavový áno

(z potrebných atribútov stavu) áno

(z operácií v stave)

procesný áno

(podľa volania metódy objektu) áno

(pre potrebu metódy) áno

(z volania inej metódy)

Tab. 3 Možnosť identifikácie objektov, atribútov a metód z jednotlivých diagramov

Navrhovanú postupnosť ako algoritmus možno zapísať nasledovne:

opakuj

{

pre všetky (požiadavky, používateľov, vstupujúce inicializačné udalosti)

vytvor, alebo aktualizuj katalóg

vytvor, alebo aktualizuj konceptuálny diagram,

kde služby spĺňajú jednotlivé požiadavky

pre (každú službu)

{

pre (každú inicializačnú udalosť s odlišnou reakciou služby)

pre (pesimistický, bežný, optimistický scenár)

ak (existuje a je to potrebné)

vytvor alebo aktualizuj interaktívny diagram

ak (zadávateľ disponuje konkrétnou V/V predstavou)

zapíš potrebné V/V formuláre služby podľa zadávateľa

ak (je potrebný objektový model služby)

vytvor alebo aktualizuj diagram tried a objektov

ak (je potrebný stavový diagram služby)

vytvor alebo aktualizuj ako poddiagram služby

ak (je potrebný funkčný model služby)

vytvor alebo aktualizuj vhodné diagramy funkčného modelu

}

opakuj {

pre (každú službu, alebo celý systém)

{

navrhni výstupné formuláre podľa potrieb používateľa

Page 54: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 54 -

a doplň aplikačnú vrstvu modelov

vytvor alebo doplň dátovú vrstvu (DB) podľa potrieb výstupov,

navrhni vstupné formuláre podľa potrieb DB

a doplň aplikačnú vrstvu týmito objektmi

vytvor alebo aktualizuj prototyp IS v používateľskej príručke

}

}

pokiaľ nie je používateľ spokojný s prototypom IS v príručke

vytvor alebo aktualizuj vrstvu logiky, zabezpečujúcu výstupy z DB,

vytvor alebo aktualizuj vrstvu logiky, zabezpečujúcu DB zo vstupov,

vytvor alebo aktualizuj viacvrstvové diagramy

dokonči prechod z logického do fyzického pohľadu a optimalizuj

doplň návrh DB a IS pre DWH a DM

implementuj IS, testuj a zaveď do prevádzky,

}

pokiaľ nie je IS úplne funkčný

Page 55: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 55 -

: Interaktivne diagramy

: Zadavatel : Stavovy diagram

: Funkcny model

: V/V formulare

: Konceptualny model

: Objektovy model

Zaznamenaj pouzivatelov

Zaznamenaj poziadavky

Zaznamenaj inicializacne

udalosti

Zapis pouzivatelov ako triedy

Zapis sluzby ako komponenty

Vytvor konceptualny diagramsluzby splnaju jednotlive poziadavky

Vytvor katalog pouzivatelov

Vytvor katalog poziadaviek

Vytvor katalog in. udalosti

Obr. 12a Toky informácií v etape konceptualizácie medzi modelmi a diagramami

Na obr. 12a je zaznamenaná postupnosť etapy konceptualizácie formou sekvenčného

diagramu. Objektami sú tu modely (konceptuálny, funkčný a objektový), diagramy dynamického

modelu (interaktívne diagramy a stavový diagram) a vstupno/výstupné formuláre systému. Jednotlivé

správy (zazanamenaj, zapíš, vytvor) však neposiela zdrojový prvok a prijímajúci ho nevykonáva, je to

skôr predpis pre analytika. Je to algoritmus, zapísaný pomocou sekvenčného diagramu, nevyužíva sa

však cyklus a podmienky. Napriek tomu je zo zápisu zrejmé, odkiaľ kam sú prenášané jednotlivé

prvky a informácie, kto je ich zdrojom (Zadávateľ) a kam sa zaznamenávajú a zobrazujú

(Konceptuálny model a Objektový model). Prvá správa prikazuje analytikovi získať od zadávateľa

Page 56: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 56 -

všetky typy používateľov budúceho IS, ich úlohy zodpovednosť a práva a uložiť ich do

konceptuálneho modelu, ktorý obsahuje katalógy a konceptuálny diagram.

Na obr.12b je zaznamenaná postupnosť etapy analýzy. Správy sú opäť jednotlivými krokmi

analytika, ktorý sa opiera o dostupné informácie v zdrojovom prvku, dopĺňa ich údajmi od

zadávateľa, doménových expertov a vytvára nové elementy a štruktúry v cieľovom objekte.

: Pouzivatel : Interaktivne

diagramy : Stavovy diagram

: Funkcny model

: V/V formulare

: Konceptualny model

: Objektovy model

Vytvor scenare pre sluzby

Zapis nove triedy a metody

Vytvor diagram pre dynamicke sluzby

Vytvor diagram pre dynamicke triedy

Zapis nove metody triedy podla operacii v stavoch

Zapis algoritmy pre sluzby

Zapis algoritmy pre metody

Obr. 12b Toky informácií v etape analýzy medzi modelmi a diagramami

Na obr.12c je zaznamenaná postupnosť etapy návrhu, kde pracuje návrhár samostatne, vytvára

a dpĺňa aplikačnú a mikroprocesnú vrstvu v dynamickom, objektovom a funkčnom modeli.

Page 57: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 57 -

: Pouzivatel

: Interaktivne diagramy

: Stavovy diagram

: Funkcny model

: V/V formulare

: Konceptualny model

: Objektovy model

Vytvor/aktualizuj vystupy pre sluzbu

Vytvor/aktualizuj datovu vrstvu podla vystupov

Vytvor/aktualizuj vstupy podla datovej vrstvy

Vytvor/aktualizuj aplikacnu vrstvu

Dopln logicku vrstvu pre vystupy

Dopln logicku vrstvu pre vstupy

Dopln aplikacnu vrstvu

Obr. 12c Toky informácií v etape návrhu medzi modelmi a diagramami

Prehľadne sa dá postupnosť zapísať v procesnom diagrame, ktorý sa nachádza na obr.13.

Využíva synchronizáciu na paralelné procesy, ktoré môžu vzniknúť pri vytváraní jednotlivých

diagramov súčasne, hoci vykonanie aktivít zľava doprava môže byť niekedy vhodnejšie.

Page 58: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 58 -

Konceptuálny diagramKatalóg inicializačných udalostíKatalóg požiadaviek Katalóg používateľov

Dynamický model Funkčný modelObjektový model

Výstupy IS

Návrh DB

Vstupy IS

Prototyp IS v používateľskej príručke

[požiadavky splnené]

Logická vrstva pre zabezpečenie Výstupy <- DB

Logická vrstva pre zabezpečenie Vstupy -> DB

Viacvrstvové diagramy a optimalizácia

Doplnenie objektového, dynamického a funkčného modelu

[Funkčný IS]

Implementácia, testovanie a ladenie

[Potrebná oprava

zmena

doplnenie]

[zmena, oprava

alebo doplnenie]

Vytv

ára

nie

/dopĺň

anie

kata

lógov a

konc.

dia

gra

mu

ako K

ON

CE

PT

UA

LIZ

ÁC

IA

Vytv

ára

nie

/dopĺň

anie

poddia

gra

mo

v s

lužie

b

ako A

NA

ZA

VR

H

Pre metódy objektov

Aplikačná vrstva modelov

Podľa aplikačnej vrstvy

Podľa dátovej vrstvy a jej modelov

použitá aplikačná vrstva

Diagram interakcií pre scenáre služby,

stavový diagram pre dyn. službu a triedy

Obr. 13 Schéma postupnosti návrhu IS v procesnom diagrame

Page 59: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 59 -

Vytvorme štvordimenzionálnu tabuľku použitia vrstiev a pohľadov v modeloch počas

jednotlivých etapách postupnosti a zaznamenajme ich povinné použitie znakom “!”. Znakom “?”

zaznamenajme možnosť práce alebo doplnenia vrstvy v modeli pre konkrétny pohľad a pomocou

znaku “-“ nevhodnosť pre danú etapu. Vyznačme prienik povinného použitia rovnakých vrstiev v

modeloch tmavšou farbou v tabuľke a zistíme že ide o prezentačnú vrstvu vo forme logického

pohľadu v etape analýzy a návrhu v objektovom dynamickom a funkčnom modeli.

Koncept. model Objektový model Dynamický model Fun. model

KP LP FP KP LP FP KP LP FP KP LP FP

doménová ! ? - - - - - - - - - -

konceptualizácia prezentačná ? ? - - - - - - - - - -

logická ? ? - - - - - - - - - -

dátová vrstva - - - - - - - - - - - -

doménová ? ? ? ! ! ? ! ! ? ! ! ?

Analýza prezentačná ? ? ? ! ! ? ! ! ? ! ! ?

logická ? ? ? ? ? ? ? ? ? ? ? ?

dátová vrstva ? ? ? ? ? ? ? ? ? ? ? ?

doménová ? ? ? ? ? ? ? ? ? ? ? ?

Návrh prezentačná ? ? ? ? ! ! ? ! ! ? ! !

logická ? ? ? ? ! ! ? ! ! ? ! !

dátová vrstva ? ? ? ? ! ! ? ! ! ? ! !

Tab. 4 Použitie jednotlivých modelov, vrstiev a pohľadov pre navrhovanú postupnosť: nutnosť (!), možnosť (?)

a nevhodnosť (-), použité dimenzie: 1. etapy postupnosti, 2. modely (konceptuálny, objektový, dynamický,

funkčný), 3. vrstvy (doménová, prezentačná, logická, dátová), 4. pohľady (konceptuálny – KP, logický – LP,

fyzický - FP)

Vyplýva z toho dôležitosť popisu vstupno-výstupných formulárov a objektov prezentačnej

vrstvy od používateľa v analýze ako jej výstupu a ich dôkladné spracovanie v etape návrhu a

odvodenie potrebnej štruktúry dátovej a logickej vrstvy.

Page 60: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 60 -

Aplikácia postupnosti pre vývoj IS na konkrétnom projekte

(Vybraté časti dokumentácie analýzy a návrhu systému Support Server )

Nasledujúce fragmenty diagramov ukazujú skutočné použitie postupnosti návrhu IS,

ktorá nebola použitá do všetkých detailov pre nedostatok času a tlak používateľa, ale sú cenné

vyňatím zo skutočného, reálneho riešenia, ktoré bolo zavŕšené fungujúcou aplikáciou, hoci už

dnes sú zrejmé možnosti doplnenia a zmien. Táto aplikácia je už treťou a jedinou funkčnou

verziou, kedy prvá klient/server verzia v jazyku C/C++/SQL nebola dobre navrhnutá a

implementovaná, druhá verzia skončila vo fáze analýzy pre neschopnosť analytikov vytvoriť

korektný návrh vďaka nasledovným chybám:

- neboli hneď na začiatku ujasnené požiadavky v konceptualizácii a tým aj funkcionalita

systému,

- začalo sa hneď návrhom dátového modelu, ktorý sa neustále prepracovával a nikdy

nedokončil, vládla snaha o jeho dokonalosť namiesto iteratívnej konvergencie k

vyhovujúcemu modelu.

Konceptualizácia

Nasledujúci konceptuálny diagram bol vytvorený na prvom stretnutí a ďalej dopĺňaný. Stal sa

východiskom a autoritou počas celého vývoja implementácie a testovania. Obsahuje základné

požiadavky na Support Server:

- zápis a evidencia incidentu (incidentom sa rozumie hardverový alebo

softvérový problém klienta, ktorý je potrebné vyriešiť),

- riešenia a mailing (sleduje sa eskalácia incidentu: priradenie riešenia

incidentu množine vhodných voľných expertov, ich odpovede, zaslanie

riešenia klientovi),

- evidencia klientov a pracovníkov,

- reporty (reporty sú potrebné pre pracovníkov a vedenie support centra, pre

jeho zriaďovateľa (spoločnosť Microsoft))

Page 61: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 61 -

Obr. A.1a Globálny konceptuálny diagram pre systém Support Server

Na ďalšom stretnutí sa stanovili prioritné požiadavky, odvodili sa dôležité požiadavky

pre riešenie v druhom slede (iterácii) a ďalšie perspektívne požiadavky pre budúce iterácie.

Nepostupovalo sa rozširovaním služieb na špecializované služby, prepojené vzťahom extend a

podslužby napojené cez include alebo uses. Diagram sa nerozširoval, len sa spísal katalóg

požiadaviek, ktorý sa stal aj súčasťou diagramu ako jeho upresňujúca dokumentácia.

Katalóg požiadaviek obsahoval nasledovné informácie:

A. Prioritné požiadavky na systém:

1. zápis a evidencia incidentov:

vytvorenie editora formuláru na zápis incidentu a uloženie do DB, čítanie incidentov,

editovanie riešenia,

Opakujúce sa cinnosti

vedenie

3. reporty

podla obdobiapodla klientapodla stavupodla typu

Klient

2. evidencia klientov a pracovnikov

PracovnikKlienta

report pre klienta

Expert

1.zapis a evidencia incidentov

prezeranie a update

nahlasenie

4. riesenie a mailing

ASCsluzba

update a kontrola

zapis a update

prezeranie

nahlasenie: telefonom/mailom

Page 62: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 62 -

2. editovanie ostatných entít - tabuliek:

2.1. produktov (automaticky odvodený formulár)

2.2. klientov, pracovísk a kontaktných pracovníkov (prepojené)

2.3. expertov a pracovníkov ASC, ktorí prijímajú a riešia incidenty (odv. formulár)

Obr. A.1b Doplnený konceptuálny diagram

3. reporty incidentov podľa rôznych kritérií pre rôznych užívateľov:

3.1. podľa experta pre experta,

3.2. podľa stavu riešenia, priority,

Opakujúce sa cinnosti

vedenie

3. reporty

podla obdobiapodla klientapodla stavupodla typu

Klient

A. Prioritne poziadavky na system su nasledovne:1. zapis a evidencia incidentov:vytvorenie editora formularu na zapis incidentu a ulozenie do DB, citanie incidentov, editovanie rieseni 2. editovanie ostatnych entit - tabuliek:2.1. produktov (aut. formular)2.2. klientov, pracovisk a kontaktnych pracovnikov (prepojene)2.3. expertov a pracovnikov ASC, ktori prijimaju a riesia incidenty (aut. formular)3. reporty incidentov podla roznych kriterii pre roznych uzivatelov:3.1. podla experta pre experta,3.2. podla stavu riesenia, priority,3.3. podla obdobia, produktu, OS, prijimatela,...je nutne ponuknut moznost triedenia priamo vo formulari...

B. Dolezite poziadavky, riesene v druhom slede:1. vyber experta na riešenie incidentu,2. mailing strukturovanych mailov,3. zadavanie incidentov cez web, reporty incidentov podla klienta pre klienta,4. editovanie zoznamu pracovnikov (expertov), klientov, produktov, OS, kl. slov,5. kontrola klienta na povolene osoby a zaplatenu podporu (body),6. export do cvc, backup,7. restaurovanie a editovanie DB

C. dalsie poziadavky:1. blacklist neplaticov,2. editovanie kontaktnych osob klientom3. vyhladavanie rieseni (UI)4. prijem strukturovanych mailov a aut. zaevidovanie incidentu,5. hladanie riesenia podla vyriesenych klientom

2. evidencia klientov a pracovnikov

PracovnikKlienta

report pre klienta

Expert

1.zapis a evidencia incidentov

prezeranie a update

nahlasenie

4. riesenie a mailing

ASCsluzba

update a kontrola

zapis a update

prezeranie

nahlasenie: telefonom/mailom

Page 63: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 63 -

3.3. podľa obdobia, produktu, OS, prijímateľa,...

je nutné ponúknuť možnosť triedenia priamo vo formulári...

B. Dôležité požiadavky, riešené až v druhom slede:

1. automatický výber experta na riešenie incidentu,

2. mailing štruktúrovaných mailov,

3. zadávanie incidentov cez web,

reporty incidentov podľa klienta pre klienta,

4. editovanie zoznamu pracovníkov (expertov), klientov, produktov, OS a kľúčových slov,

5. kontrola klienta na povolené osoby a zaplatenú podporu (body),

6. export do celkového výkazu činnosti, záloha DB,

7. reštaurovanie a editovanie DB

C. ďalšie požiadavky:

1. čierna listina neplatičov,

2. editovanie kontaktných osôb klientom

3. vyhľadávanie riešení (vytvoriť ES)

4. príjem štruktúrovaných mailov a automatické zaevidovanie incidentu,

5. hľadanie riešenia samotným klientom podľa už vyriešených incidentov

Analýza

Analýze boli podrobené služby pre Zápis a evidenciu incidentu a Riešenie a mailing a

vytvorené poddiagramy týchto dvoch služieb spoločne pre ich prepojenosť a analytickú

zložitosť pre programátora. Služba Evidencia klientov a pracovníkov a služba Reporty bola

pre svoju jednoznačnosť ignorovaná v tejto etape.

Dynamický model bol vytvorený zo sekvenčných diagramov pre zápis a riešenie

incidentu nového záujemcu a klienta, ako aj stavový diagram pre triedu incident a jeden pre

obidve analyzované služby.

Page 64: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 64 -

Obr. A.2b Sekvenčný diagram pre zápis a eskaláciu incidentu klienta (doménové objekty)

klient ASC GTI Back Up MS Back UpZáujemca Ek. oddelenie

Kontrola ciernej listiny

Otázka alebo ziadost o zmluv u

Ak je jednoduchá otázka, odpov ed

Údaje pre zmluv u

Zmluv a

Podpísaná zmluv a

Potv rdenie

Ak má otázku, ale nemá zmluv u, zapíšu sa v šetky potrebné údaje (osoba a tel. cislo, prip. ICO a pod.)

Update ciernej listiny Ak klient v ráti podpísanú zmluv u, prípadne po zaplatení,je v y mazaný z ciernej listiny

Zapis do DB klientov

Page 65: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 65 -

Obr. A.2a Sekvenčný diagram pre zápis incidentu nového záujemcu (doménová vrstva)

ASCKlient GTI Back Up MS Back UpEk. oddelenie

ID, ID zmluv y /série, otázka

Ov erenie ID, ID zmluv y /série

Ak v y riešené, odpov edá

Hladanie riešeniaAk v y riešené, odpov edá,

inak v y sv etluje

další postup

Eskalácia problému

Riešenie, alebo rieši

Eskalácia problému

Odpov ed alebo oznámenie

eskalácie do MS

Riešenie

Odpov ed z MS

Okamzite, v rámci telef onátu

Telef onát do 1, 2 hodín

Telef onát do 1, 2 dní

UpozorneniePri predposlednej a poslednej odpov edi zo série, aleboMesiac/týzden pred v y pršaním rocnej/mesacnej zmluv y

Upozornenie po 12 hodináchAk neprišla uspokojiv á odpov ed a v šetci neodpov edali

Upozornenie po 18 hodinách

Pre neodpov edajúcich riešiacich

Riešenie

Riešenie

Koniec telef onátu

Koniec telef onátu

Telef onát, mail, f ax

Všetky odpov ede pre rýchlost telef onicky , zárov en f axom pre dokumentáciu

Page 66: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 66 -

Obr. A.3 Stavový diagram pre triedu incident

Oznameny

entry: OverIncidentexit: UrciTypIncidentu

Zapisany

entry: Zapisentry: UrciExpertov

Eskalovany

entry: PosliExpertomdo: KontrolaEskalacie exit: OznamKlientovi

Rieseny

entry: Riesenie

Vyrieseny

entry: ZapisRiesenia

Informacie

Novy incident

Archivovany

entry: Oznam

Experti najdeni

[ Incident OR Onsite ] [ Otazka ]

[ omyl ]

[ ziadost o informacie ]

riesenie zapisane a doplnene

[ riesenie najdene ][ riesenie nenajdene ]

incident odoslany

Page 67: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 67 -

Obr. A.4 Stavový diagram pre zápis a eskaláciu incidentu (analýza)

Objektový model nebol vytvorený vzhľadom na skúsenosti z predošlého projektu a

prešlo sa na návrh výstupov, kde sa počítalo s tým, že vznikne aj prvý prázdny prototyp,

obsahujúci množinu prepojených obrazoviek.

Návrh výstupov IS

V tejto etape sa najprv vytvoril interaktívny diagram, ktorý popísal znovu

komunikáciu objektov pri zápise a riešení incidentu. Tentoraz to však neboli doménové, ale

aplikačné objekty. Týmto spôsobom sa identifikovali potrebné formuláre. Pri analýze

participoval vzhľadom na RAD koncepciu aj programátor, ktorý nerozumel na prvý pohľad

zistov anie udajov o incidente

zistov anie udajov o zaujemcov i

riesenie incidentu

zapis udajov o incidente

hladanie riesitela

zapis incidentu

incident uzatv oreny

riesitel najdeny

udaje zapisane

zaujemca nie je a ani nechce by t nasim klientom

zaujemca je nas zakaznik alebo je VAP

alebo ide o otazku, inf ormaciu alebo v nutorny hotline

incident je riesitelny

zaujemca o support sa na nas obrati

Page 68: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 68 -

zložitému účtovaniu za vyriešné incidenty a výberu vhodných expertov pre incident. Bol teda

už teraz vytvorený aj procesný diagram (dve verzie), ktoré napomohli nielen lepšiemu

pochopeniu, ale aj pri tvorbe obrazoviek.

Obr. A.5 Sekvenčný diagram pre zápis a riešenie incidentu (aplikačná vrstva)

ries(incident)

: Klient : ASCsluzbaFormIncident FormKlient DBKlient DBIncident

: Expert

PrijemIncidentu()

ZapisIncident()

ZapisKlienta

ZapisNovehoKlienta

OverKlienta

ZapisNovehoKlienta

klient OK

klient NOK

ZapisIncidentu

Klient existuje

Novy klient

zaevidovanie incidentu

overenie

riesenie

riesenie

editovanie udajov

odcitanie kreditov

zaevidovanie experta

Page 69: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 69 -

Obr. A.6a. Diagram operácií a stavov pre zápis a riesenie incidentu (návrh)

Obr. A.6a Diagram operácií a stavov pre zápis a riešenie incidentu (návrh), 1. verzia

zapis incidentu

zapis udajov o klientovi

nas klientnie je nas klient

vyber z DB expertov podla produktu

vyber z DB expertov podla produktu a OS

vyber z DB expertov podla produktu a OS a kl.slov

mailing

oznamenie klientovi, expertom, ocakavanie vyriesenia a zapisu

V/V formular na login do systemu V/V form na zapis incidentu

ak pojde o noveho klienta,V/V form na zapis jeho nazvu, adresy pracoviska kontakty (mena a tel. cisla)

VAP hotline

zapis kredit(5)zapis kredit (16)

otazka

novy VAP

kredit>0

kredit<=0

zapis kredit(1)

kredit-=body(produkt)

paralelne

kredit--

otazka alebo VAP incident

* novy incident

nema zaujem

niekto novy

kredit <= 0

kredit>0

Page 70: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 70 -

Nakoniec sa pristúpilo k návrhu obrazoviek pre reporty, riadkový a obrazovkový

prehliadač incidentov. Dopĺňali sa aj o typický príklad v obsahu, pretože vypovedacia

hodnota obrazoviek s prázdnymi výstupmi bola nižšia. V dokumentácii sa popísali množiny

typických a akceptovateľných hodnôt pre jednotlivé prvky, ich formáty a podobne.

Obr. A.7a Obrazovkový report incidentov (je vidieť len jeden incident a všetky jeho atribúty)

Obr. A.7b Riadkový prehliadač incidentov (je vidieť viac incidentov ale nie všetky ich atribúty)

Page 71: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 71 -

Obr. A.7c Obrazovkový prehliadač incidentov (je vidieť len jeden incident a všetky jeho atribúty)

Obrazovka pre reporty je typický výstupný formulár zo systému, ktorý dostatočne

presne naznačí, ktoré údaje je potrebné uchovávať v databáze. Prehliadače sú už vstupno-

výstupné formuláre, v ktorých je možné incidenty nielen prehliadať ale aj editovať prípadne

zadávať nové.

Podobné návrhy boli vytvorené aj pre prehliadače klienta a expertov.

Návrh DB vrstvy podľa výstupov systému

Page 72: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 72 -

Po identifikovaní takéhoto dostatočného množstva doménových a aplikačných

objektov je už možné pristúpiť k tvorbe objektového modelu. Prvý diagram popisuje

doménové abstraktné, perzistentné aj aplikačné triedy: Incident, Report a jeho druhy,

Pracovnik a jeho špecializácie (Expert, ASCsluzba, PracovnikKlienta). Novou triedou je tu

Produkt a Klucove slovo, ktoré dopĺňajú incident a podľa ktorých bude vyberaný expert na

riešenie.

Na ďalšom diagrame je vťah n:m medzi expertom, incidentom a kľúčovým slovom

doplnený asociatívnou triedou.

V oboch diagramoch chýba viacero atribútov tried, napríklad ID klienta, Operačný

Systém v incidente a podobne. Tie však nezmenia štruktúru modelu. Už teraz je zrejmé čo je

potrebné ukladať do databázy, objekty sú odlíšené stereotypom <<Persistent>>. Pre

konzistenciu a čitateľnosť modelu sú použité aj doménové triedy (bez stereotypu), abstraktné

triedy (<<Abstract>>) a aplikačné (<<Form>>).

Osoba

MenoAdresatelefonID

<<Abstract>>

PodlaKlienta PodlaObdobia PodlaStavu PodlaTypuRiadkovyObrazovkovy

1..*

*

*

*

ASC

*

KlientASC

Nazov

<<Persistent>1..*

*

Pracovnik

pracoviskoPracTelefonmobile-mailfax

<<Persistent> * KlucoveSlovo

IDKlucovehoSlovaKlucoveSlovo

<<Persistent>>

*

ASCsluzba

(from Use Case View)

*

*

riesitel

Expert

(from Use Case View)

*

*

*

*

Produkt

IDProduktuNazovProduktu

<<Persistent>>

PracovnikKlienta

(from Use Case View)

<<Actor>>

**

*

Incident

IDNazovProduktProblemNahlasilPrijalDatumPrijatiaVyriesilDatumVyrieseniaRiesenieStavTypJazyk

<<Persistent>>

*

**

*

*

Reporty

<<Form>

*

Page 73: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 73 -

Obr. A.8a Objektový diagram, obsahujúci doménové, aplikačné aj interné triedy

6.1 Návrh vstupov IS podľa … Obr. A.8b Revidovaný objektový diagram

Návrh potrebných vstupov

Keďže si reporty incidentov a prehliadače vyžadujú aj údaje o klientovi, jeho

pracoviskách a kontaktných pracovníkoch, expertoch, produktoch a podobne, je potrebné v

etape návrhu vstupov upresniť formuláre pre vstup údajov o klientovi, expertovi, produkte a

ostatných. Okrem toho bolo potrebné vytvoriť aj vstupné filtre pre reporty (hodnoty atribútov,

štruktúra reportu, utriedenie), ktoré sa tiež ľahko odvodili od výstupného formuláru reportu.

Dôležitým formulárom je vstup údajov o incidente, kde sa nepridalo veľa nových informácií,

len sa rozhodlo, ktoré vstupné polia budú kombinované s ponukou preddefinovaných hodnôt

(označované ako ComboBox – spojenie zoznamu – ListBox so vstupným poľom – EditBox,

alebo TextBox). Po návrhu tohto formuláru sa doplnil objektový model o ďalšie potrebné

Osoba

MenoAdresatelef onID

<<Abstract>>

PodlaKlienta PodlaObdobia PodlaStav u PodlaTy pu

ExpertKluc

IDExpertaIDKlucov ehoSlov a

<<Persistent>>

IncidentKluc

IDIncidentuIDKlucov ehoSlov a

<<Persistent>>

Riadkov yObrazov kov y

1..*

1..*

1..*

1..*

ASC

1..*

KlientASC

Nazov

<<Persistent>1..*

1..*

Pracov nik

pracov iskoPracTelef onmobile-mailf ax

<<Persistent> 1..* Klucov eSlov o

IDKlucov ehoSlov aKlucov eSlov o

<<Persistent>>

*

ASCsluzba

(f rom Use Case View)

1..*

*

riesitel

Expert

(f rom Use Case View)

1..*

1..*

1..*

*

Produkt

IDProduktuNazov Produktu

<<Persistent>>

Pracov nikKlienta

(f rom Use Case View)

<<Actor>>

1..**

*

Incident

IDNazovProduktProblemNahlasilPrijalDatumPrijatiaVy riesilDatumVy rieseniaRiesenieStavTy pJazy k

<<Persistent>>

1..*

**

*

*

Reporty

<<Form>

*

Page 74: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 74 -

aplikačné triedy pre produkt, pracovníka, experta, klienta, pracovisko klienta, pracovníka

klienta a podobne. Keďže CASE systém (Rational Rose a MS Visio 2000) nedovolil používať

rovnaké názvy tried, hoci mali rôzne stereotypy, bolo nutné ich odlíšiť predponou Zaznam

(Produkt – ZaznamProdukt).

Obr. A.9 Objektový diagram (ďalšie odvodené aplikačné a interné DB triedy)

Osoba

MenoAdresatelefonIDemail

<<Abstract>>

PodlaKlienta PodlaObdobia PodlaStavu PodlaTypu

ExpertKluc

IDExpertaIDKlucovehoSlova

<<Persistent>>

IncidentKluc

IDIncidentuIDKlucovehoSlova

<<Persistent>>

Riadkovy

NovyIncident<<Form>>

EditIncident

ID : EditBoxNazov : EditBoxProdukt : ComboBox...Vyrad : ButtonNovy : Button...

Vyrad ()Novy ()Dalsi ()Predosly ()Prvy ()Posledny ()Zmen ()Najdi ()

<<Form>>

ZaznamExpert<<Form>>

ZaznamASCSluzba<<Form>>

1..*

1..*

1..*

1..*

ASC

1..*

*

Pracovnik<<Persistent>

ZaznamPracovnik<<Abstract>>

1..* KlucoveSlovo

IDKlucovehoSlovaKlucoveSlovo

<<Persistent>>

*

ASCSluzba

(from Use Case View)

1..*

*

riesitel

Expert

(from Use Case View)

1..*

1..*

1..*

*

*

*

Reporty<<Form>

Obrazovkovy

Zaznam<<Form>

Produkt

IDProduktuNazovProduktu

<<Persistent>>

ZaznamProdukt<<Form>>

KontakKl ienta

(from Use Case View)

<<Actor>>

Pracovisko

nazovadresatelefonfax

<<Persistent>>

ZaznamKlient<<Form>>

Incident

IDNazovProduktProblemNahlasi lPrijalDatumPrijatiaVyriesilDatumVyrieseniaRiesenieStavTypJazyk

<<Persistent>>

1..*

**

*

*

*

Kl ientASC

Nazov

<<Persistent>1..*

**

**

*

ZaznamPracovisko<<Form>>

ZaznamKontaktKl ienta<<Form>>

Page 75: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 75 -

Obr. A.10 Obrazovka pre zápis nového incidentu a jeho editovanie

Obr. A.11 Obrazovka pre vstup údajov o klientovi

Page 76: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 76 -

Obr. A.12a Obrazovka pre zápis hľadaných hodnôt a obmedzení do filtra pre report incidentu

(Filter hodnôt)

Obr. A.12b Obrazovka pre definovanie štruktúry reportu a triedených atribútov

(Filter štruktúry)

Vytvorenie používateľskej príručky

Používateľská príručka (jej časť je uvedená nepozmenená v prílohe B.) bola

prezentovaná pracovníkom support centra a bol vytvorený aj prvý prototyp aplikácie.

Page 77: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 77 -

Návrh logickej vrstvy

Logická vrstva by mala zabezpečiť vyselektovanie správnych údajov na výstupy a uloženie

vstupov do tabuliek. Tieto procesy sa dajú odvodiť podľa dátovej a prezentačnej vrstvy.

Okrem toho však vznikla aj potreba upresniť niektoré interné procesy ako vyhľadávanie

expertov podľa produktu a kľúčových slov incidentu a apôsob ovládania.

Obr. A.13 Obrazovka pre naviazanie produktov (alebo kľúčových slov) na experta

Obr. A.14 Obrazovka zabezpečujúca tvorbu a rozosielanie mailu s incidentom správnym expertom

Page 78: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 78 -

Obr. A.15 Objektový diagram (interné a V/V triedy)

Pracovnik

MenoAdresatelefonIDemail

<<Abstract

PodlaKlienta PodlaObdobia PodlaStavu PodlaTypu

ExpertKluc

IDExpertaIDKlucovehoSlova

<<Persistent>>

IncidentKluc

IDIncidentuIDKlucovehoSlova

<<Persistent>>

RiadkovyObrazovkovy

NovyIncident

<<Form>>

EditIncident

ID : EditBoxNazov : EditBoxProdukt : ComboBox...Vyrad : ButtonNovy : Button...

Vyrad ()Novy ()Dalsi ()Predosly ()Prvy ()Posledny ()Zmen ()Najdi ()

<<Form>>

ZaznamExpert

<<Form>>

ZaznamSluzba

<<Form>>

1..*

1..*

1..*

1..*

ASC

1..*

1..*

ZaznamPracovnik

<<Abstract>>

1..* KlucoveSlovo

IDKlucovehoSlovaKlucoveSlovo

<<Persistent>>

*

ASCsluzba

(from Use Case View)

1..*

*

riesitel

Expert

(from Use Case View)

1..*

1..*

1..*

*

Produkt

IDProduktuNazovProduktu

<<Persistent>>

*

*

MailingForm

PonuknutiExperti : ListboxVybraniExperti : ListboxVyrad : ButtonZarad : ButtonPosli : Button

Posli ()Zarad ()Vyrad ()

<<Form>>

Reporty

<<Form>

Filter

NastavFilter ()SpustiFilter ()ZrusFilter ()

<<Internal>>

FilterForm

<<Form>>

*Pracovisko

NazovAdresaTelefonFax

PracovnikKlienta

(from Use Case View)

<<Actor>>

ZaznamKontaktKlienta

<<Form>>

Import/Export

SQLImport ()SQLExport ()ExcelExport

<<Internal>>

Incident

IDNazovProduktProblemNahlasilPrijalDatumPrijatiaVyriesilDatumVyrieseniaRiesenieStavTypJazyk

<<Persistent>>

1..*

**

*

*

*

KlientASC

Nazov

<<Persisten1..*

1..*

*

Zaznam

<<Form>Mailing

VyberExpertov (ID : Incident)ZasliMail (ID : Incident)

<<Internal>>

ZaznamKlient

<<Form>>

ZaznamPracovisko

<<Form>>

Page 79: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 79 -

Obr. A.16 Procesný diagram pre zápis a riesenie incidentu (návrh), 2.verzia

* ZapisNovyIncident()

ZapisUdajovKlienta

V/V formulár na zápis incidentu

V/V formular na zápis nového klienta

alebo editovanie názvu,

pracoviska a kontaktu (mená a tel. čísla)

[otázka][hotline][VAP][klient][~klient]

ZapiKredit(20) ZapisKredit(5) ZapisKredit(1)

[nový] [nový][nový] [kredit>0]

[kredit>0]

[kredit<=0][kredit<=0]

[kredit<=0]

vyber expertov z DB podla produktu

vyber expertov z DB podla produktu a OS

vyber expertov z DB podla produktu a OS a kl.slov

poslanie incidentu vybranym expertom

[expertov > k]

[expertov > k]

oznamenie expertom o zaslani incidentu oznamenie klientovi o prijati incidentu ocakavanie riesenia

Zapis riesenia

--kredit kredit -= body(produkt)

[otazka alebo VAP] klient

Page 80: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 80 -

Viacvrstvový model

Zavŕšením návrhu bolo vytvorenie viacvrstvového diagramu, ktorý nezískal

štandardnú podobu troch sekcií vedľa seba, ale podobu organicky začlenených oblastí: dátová

vrstva je na spodnej časti diagramu a logická je umiestnená v centre prezentačnej vrstvy. Na

ne v treťom rozmere nadväzujú rezy, v ktorých sú znázornené jednotlivé scenáre využitia

modelu: zápis nového incidentu, prezeranie incidentov, reporty a podobne. V týchto rezoch je

vidieť využitie tried a indikuje, ktoré triedy treba pozmeniť, ktoré (nevyužité) vyradiť a ktoré

vytvoriť.

Obr. A.17 Viacvrstvový objektový diagram intranet/internet aplikácie Support Server

Schématicky v zmenšenom merítku približne 1:5 je uvedený viacvrstvový objektový diagram,

scenár zápisu nového klienta a scenár nastavenia a generovania reportov na obr. A.17-A.19.

Page 81: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 81 -

Je z nich zrejmá ohraničená DB vrstva v spodnej časti a veľká mikroprocesná ASP trieda v

centre diagramu, zabezpečujúca väčšinu interných operácií.

Obr. A.18 Komunikačný diagram - scenár

Zápis nového klienta

Obr. A.19 Komunikačný diagram - scenár

Nastavenie a generovanie reportov

Page 82: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 82 -

Z predchádzajúcich obrázkov je zrejmé, že nie každý scenár používa všetky triedy. Pre

skúmanie scenára samostatne je v prípade potreby vhodné konvertovať ho do sekvenčného

diagramu.

Nedostatky a možnosti zlepšenia

Pri tvorbe viacvrstvového diagramu boli zistené nasledovné poznatky a nedostatky

tohto postupu:

1. Číslovanie správ v jednotlivých scenároch je zložité, hoci zachytáva aj

paralelizmus a vetvenie, a jednoznačne určuje postupnosť a môže slúžiť aj pre

prípadné generovanie metód. Jednotlivé rezy boli vytvorené v CASE systéme MS

Visio 2000, bola by však vhodná aj animácia interakcií, ako tomu je napríklad v

CASE/4/0 od spoločnosti Microtool.

2. Je potrebné odlišovať paralelizmus a vetvenie, pre paralelné interakcie budú

priraďované veľké písmená A..X, pre vetvenie male písmená a..x, pri

premenlivom počte a cykle je možné použiť podmienku *(i=1..n) podľa [Fowler

MM] a [Semantics 97].

3. Pri takejto zložitosti nie je možné používať obojsmerné prepojenie a správy s navi-

gáciou (šípkou) pre naznačenie smeru správy, každá správa má vlastné prepojenie

od triedy k triede s navigáciou smeru pri konektore.

4. Na označenie stereotypov bolo použité značenie <…> namiesto << … >> , čo je

nedorozumenie a chyba, spôsobená aj možnosťami ešte príliš nového CASE

systému MS Visio 2000.

5. Udalosť a operácia na hrane sú oddeľované lomítkom, ak udalosť chýba, operácii

nepredchádza lomítko v snahe o zjednodušenie, čo je tiež nesprávne.

6. V diagramoch boli použité nasledovné stereotypy interakcie: <<user

interaction>> - aktivita používateľa (vyplňovanie formulára, zadávanie údajov),

<<return>> - návrat hodnoty alebo referencie, <<redirect>> - presmerovanie

riadenia na inú adresu alebo dialóg, <<call>> - vyvolanie metódy iného objektu –

inej stránky, <<create>> - vytvorenie ďalšej inštancie, napríklad aktívnej stránky

servera.

Page 83: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 83 -

7. Scenáre takto zapísané nad nemennou objektovou štruktúrou, kde sa mení v reze

len postupnosť interakcií, nie je vždy prehľadná pre zložitosť a veľkosť modelu.

Ak by sa nezotrvávalo na nemennej štruktúre objektového podkladu

komunikačného diagramu, potom by scenár pokrýval priemerne 50% pôvodnej

plochy, avšak pri strate pevných pozícií jednotlivý tried a tým možnosti

komparácie scenárov dynamického modelu a objektového modelu v trojrozmernej

schéme. Na obrazovke počítača pri 13xA4 je to nemožné. Vhodnejšie a

opodstatnené je toto trojrozmerné vrstvenie pri jednoduchších diagramoch na

jeden list najmä v analýze. Zo skúseností však vyplýva, že na záver je nutné

vytvoriť aj takéto komplexné a veľkorozmerné modely. Ďalšou možnosťou je

požiadať CASE systém nielen o zhodnotenie jednotlivých scenárov (využitie tried,

hľadanie vágnych a redundantných štruktúr a podobne), ktoré nie je možné

interaktívne na obrazovke vykonať, ale aj o vygenerovanie tela metód podľa

volania ďalších metód v správach, ako aj vytvorenie sekvenčných diagramov ako

iného pohľadu na ten istý obsah a štruktúru pre lepšiu čitateľnosť v niektorých

prípadoch. Ďalšou možnosťou je vytvoriť katalóg dôležitých rozdelení toku

interakcií pri vetvení a paralelizme. Incidenčné matice a rozhodovacie tabuľky sa

pre tento prípad nezdajú ako najvhodnejší doplnok.

3D Diagram

Najprv teda vytvoríme jednotlivé scenáre, v ktorých vytvárame len také triedy, ktoré

potrebujeme a nakoniec samotný objektový model len z využívaných tried. Takáto je

zjednodušená filozofická koncepcia prístup. V skutočnosti sme na tvorbu použili MS Visio

2000, v ktorom je možné vytvárať takéto rezy nad objektovým diagramom. Každú potrebnú

triedu sme najprv zapísali do bázickej vrstvy a až potom sme ju využívali v ďalších rezoch, v

ktorých sme určovali, ktoré triedy z bázickej vrstvy sa môžu zobraziť.

Page 84: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 84 -

Obr. 4 Schéma 3D modelu z ilustračného príkladu reálneho projektu

Page 85: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 85 -

Optimalizácia návrhu

Optimalizácia bola vykonaná v návrhu DB vrstvy, v návrhu logickej vrstvy a pri

tvorbe viacvrstvového modelu, počas všetkých troch iterácií podľa pravidiel konzistencie,

eliminácie nevhodných tried a revidovanej normalizácie štruktúry tried.

Poznámka

V tejto dokumentácii boli použité skutočné vybraté diagramy z analýzy a návrhu. Prvotné V/V obrazovky sa

však nedochovali pre neustálu aktualizáciu originálneho dokumentu v jednotlivých iteráciách vývoja systému

(dokonca aj v tejto kapitole boli použité dialógy z dvoch rôznych iterácií). Návrh bol implementovaný v

intra/internet prostredí technológiou ASP (Active Server Pages) v jazykoch Java a Visual Basic Script nad

SRBD MS SQL Server.

Dobrá postupnosť by mala odstrániť komunikačnú priepasť medzi používateľom a

analytikom, návrhárom a implementátorom ako aj medzi analýzou, návrhom a

implementáciou. Mala by byť natoľko konzistentná a stmeľujúca, aby nedochádzalo k

zbytočnej strate informácií a ich neželanej zmene. Mala by ponúknuť analytikovi, návrhárovi

aj implementátorovi možnosť využiť ju a zachovať tok informácií v priestore medzi nimi aj v

čase pri vývoji produktu.

Predkladaná alternatívna postupnosť pre UML bola navrhnutá práve tak, aby vytvárala

predpoklady pre konzistentný vývoj, kde každý nasledujúci krok obsahuje všetky prvky IS z

predošlého kroku a aby sa výsledný produkt neodklonil od vyjadrených požiadaviek

používateľa.

Zachovanie prvkov IS je podporované vo všetkých krokoch a prechodoch medzi nimi:

1. Konceptualizácia –> analýza: v konceptualizácii vytvárame konceptuálny diagram na

základe zozbieraných zoznamov požiadaviek, inicializačných udalostí a používateľov

systému. V analýze vytvárame jednotlivé scenáre podľa inicializačných udalostí. Udalosti

vstupujú do jednotlivých služieb, ktoré prekrývajú požiadavky používateľa a keďže

služby obsahujú najmenej jednu inicializačnú udalosť, nie je možné aby službu ďalej

nezastupoval spoň jeden poddiagram. Tu sú teda informácie zachované a rozvíjané ďalej.

2. Analýza –> návrh výstupov, db vrstvy a vstupov. Každá požiadavka, zastúpená službou a

rozpísaná poddiagramom, komunikuje a preto potrebuje určité vstupno-výstupné

Page 86: Objektovo-orientovaný prístup a jeho vlastnostipolasek/courses/ooans-sk/files/OOANS01Postupnost2.pdf · výpočtový čas a pamäťový priestor, ktorý je však pri dnešných

- 86 -

rozhranie. Vo výstupnom rozhraní sa objavia všetky potrebné prvky, tak ako aj v

navrhovanej db vrstve, kde je nevyhnutné všetky perzistentné informácie uchovať.

Vstupné rozhranie zabezpečuje možnosť naplniť všetky potrebné prvky a vyhovieť tak

fungovaniu služby. Tento postup preto nevedie ku strate prvkov, ale k jeho zachovaniu.

3. Návrh V/V a DB –> návrh logickej vrstvy, doplnenie DB. Tu je model IS dopĺňaný o

ďalšie triedy a vzťahy, ktoré zabezpečujú prepojenie výstupného rozhrania, db vrstvy a

vstupného rozhrania a preto nemôžu tieto kroky viesť k divergencii, ani k úbytku prvkov,

ale práve naopak, k ich doplneniu.

4. Viacvrstvový model, model komponentov a rozmiestnenia: tento krok sa taktiež vracia k

modelu z predošlých krokov a zobrazuje inak jeho štruktúru, prípadne ju optimalizuje. Tu

zanikajú doménové objekty, čo ale nespôsobuje stratu prvkov IS, pretože štruktúra

doménových objektov sa odzrkadlila v aplikačných a mikroprocesných, ktoré si ju

pamätajú, zachovávajú a rozširujú.

5. Implementácia, testovanie a ladenie už len zachovávajú navrhnutú štruktúru, aj vďaka

overovaniu funkčnosti priamo používateľom a testom, popísaným pri tvorbe prototypu IS

v používateľskej príručke.

Zachovanie vyjadrených požiadaviek používateľa je podporené v štyroch krokoch:

1. prvý raz sú vyjadrené a zapísané v konceptualizácií,

2. overené a dopĺňané v analýze pri tvorbe všetkých modelov služieb (najmä scenárov v

dynamickom modeli) v spolupráci s používateľom,

3. v kroku Vytvorenie používateľskej príručky sú konfrontované výsledky z etapy návrhu

aplikačnej vrstvy a správania sa systému, tu je prípadná divergencia výsledkov od

očakávania špecifikovaná a návrh sa opakuje pokiaľ nie je predstava používateľ splnená,

4. nakoniec sú výsledky návrhu mikroprocesnej vrstvy (dátová a logická vrstva) testované a

ladené po implementácii.

99