Návrh informačních systémů pomocí UML, OOP a vzorů

Transkript

Návrh informačních systémů pomocí UML, OOP a vzorů
Návrh informačních
systémů pomocí UML,
OOP a vzorů
© RNDr. Ilja Kraval mailto:[email protected],
OBJECT CONSULTING s.r.o.
http://www.objects.cz
Obsah (postupně se rozšiřuje):
Návrh informačních systémů pomocí UML, OOP a vzorů ...........................................1
1. Proč UML, OOP a vzory?..................................................................................1
2. Pád do pasti BYROKRATICKÉ METODY .........................................................6
3. Čtyři základní pilíře návrhu IS ...........................................................................9
4. Trojice základních vzorů návrhu IS .................................................................12
4.1 Vzor Pattern for interaction .....................................................................12
1. Proč UML, OOP a vzory?
Na tuto otázku existuje jednoduchá odpověď: Protože existuje způsob tvorby
informačních systémů, který se příznačně nazývá TUNEL. Jedná se spíše o „antimetodu“, tj. o postup tvorby informačního systému, který není v žádném případě
doporučován.
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
Jeho podstata je následující (viz následující obrázek):
TUDY NE
ÚSPĚCH
TUDY NE
obrázek 1 Metoda tvorby IS zvaná TUNEL
Na počátku projektu se vstupuje do černého tunelu (viz zelená šipka), kterým se
prochází poslepu od stěny ke stěně. Cestou se díky nárazům do stěn tunelu zjišťuje,
kudy cesta nevede (viz červené šipky s nápisy „TUDY NE“), tj. co se nemá dělat
resp. nemělo udělat. Operativními zásahy se vedoucí projektu snaží projekt uřídit a
najít světýlko na konci tunelu (žluté světélko s nápisem ÚSPĚCH).
Mnohdy se projekt „s odřenýma ušima“ dokončí a „jakýs takýs“ informační systém se
zákazníkovi nakonec odevzdá. Bohužel velmi často nastane případ, kdy se nadějné
světélko na konci tunelu promění ve světla protijedoucího vlaku a celý projekt skončí
katastrofickým scénářem.
Použití metody TUNEL vede z hlediska softwarové firmy ke třem hlavním a
podstatným negativním důsledkům:
•
Zvýšené náklady
strana 2
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
•
Pozdní dodávka systému
•
Absolutní nesoulad mezi naprogramovanými funkcionalitami IS a původními
požadavky zákazníka
To jsou nejzávažnější důsledky použití metody TUNEL, většinou také uváděné
v literatuře, avšak existují i další nepříjemné důsledky, které jsou neméně důležité.
Při použití metody TUNEL nastávají zákonitě tyto nepříznivé jevy:
•
Chybí jakákoliv koncepce vývoje a není možná opakovatelnost výsledků.
V metodě TUNEL nejsou použity žádné opakovatelné postupy a projekt se řídí
pouze momentální intuicí a zkušenostmi vedoucího projektu. Každý projekt a
jeho výstupy vypadají jinak, a to dokonce i v případě, že projekty řídí jeden a
tentýž vedoucí. Výsledky z různých projektů jsou různé, jsou nesourodé,
navzájem si odporují, apod.
•
Není možná jakákoliv predikce v projektu. Ani na začátku, ani v průběhu
projektu, a to dokonce ani v jeho závěrečných fázích nelze odhadovat další
pracnost, tj. jaké všechny práce bude třeba ještě udělat. Účastníci projektu
nevědí, co je čeká na jejich cestě „za příštím rohem“. Každý projekt se tak
stává sázkou do loterie a připomíná spíše dobrodružnou výpravu za pokladem
pirátů než výrobu softwaru.
•
Platí obecná neznalost kdy má co kdo dělat. Vše je pouze v kompetenci
vedoucího projektu, který řídí projekt spíše ze zkušeností a pouze pomocí
vlastní intuice. Vedoucí nemá žádnou příručku, ani žádné rady a pokyny, jak
v dané chvíli postupovat, co vyžadovat. Proto volí své vlastní ať už lepší nebo
horší řešení přímo v dané chvíli a na daném místě. Řízení se pro něj stává
velmi náročnou prací plnou lokálních operativních zásahů bez možnosti
jakékoliv kontroly správnosti rozhodnutí, přičemž z hlediska metod řízení chybí
jakékoliv kvalitativní porovnání čehokoliv s čímkoliv.
•
Každá porada v projektu začíná „jobovými zvěstmi“, co vše nechodí, co chybí,
co je třeba ještě udělat. Vedoucí projektu, který používá metodu TUNEL,
většinou mívá žaludeční vředy.
•
Ve výstupech z projektů, které se průběžně tvoří metodou TUNEL, neexistuje
požadavek na opětovnou použitelnost neboli re-use, anebo přesněji řečeno,
při metodě TUNEL se tento požadavek nedá efektivně zavést. Některé části
agend se vyvíjejí několikrát, což vede k dalším nečekaným problémům díky
existenci několikanásobných řešení. Nejenže se bez zavedení opětovné
použitelnosti jedná při opakování vývoje o zbytečnou práci, ale software
začíná vykazovat velmi silnou nepřehlednost. Jednotlivé prvky softwaru
v projektech se díky své násobnosti velmi těžko identifikují. Neví se, kde
strana 3
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
všude se opakující chyba resp. požadavek na změnu vlastně vyskytuje. To se
projevuje jako závažný nedostatek zejména při opravách a případných
změnách. Opravdu velmi obtížně (někdy dokonce až za hranicí možného) se
vyhledávají všechna místa, kde se všude chyba nebo požadavek na změnu
nachází. V některých případech se při opravě chyby u hodně složitých a
rozsáhlých systémů dokonce ani nenajdou všechna místa, kde se chyba
vyskytuje, protože se o všech místech prostě neví. Systém vykazuje velmi
nízkou transparenci, jeví se jako zbytečně složitý, vypadá jako slepenec plný
těžko identifikovatelných a tedy těžko opravitelných chyb. Navíc informační
systém nevykazuje žádné nosné analytické myšlenky a jeho architektura je
zbytečně složitá a nepřehledná. Odhalení chyb (například v testování) ještě
není zárukou, že se tato chyba skutečně odstraní ve všech místech svého
výskytu.
•
V některých případech se předchozí bod pojednávající o velmi nízké opětovné
použitelnosti v TUNELU rozvine do nejhrůznější podoby: Nejenom, že se
začnou opakovat funkcionality v jednotlivých agendách, ale díky opakovaným
pracím začne docházet k redundanci samotných evidovaných informací.
Například v metodě TUNEL se běžně stane, že některé osoby jsou v systému
evidovány několikrát, v každé agendě znovu. Vzniká tak další nečekaný
problém: Musí se zadat k řešení úplně „nová agenda“, jakýsi „program pro
program“ - zbytečná integrace, která má za úkol dávat dohromady opakující
se evidované informace, které se vůbec opakovat nemusely.
•
Při metodě TUNEL je každý i malý a jednoduchý analytický požadavek na
změnu v konečném důsledku raději odmítán i za cenu obchodních ztrát.
Systém vykazuje vysokou „synergetickou nestabilitu“: I malé změny v systému
vedou k jeho nečekaným kolapsům paradoxně v odlehlých částech systému.
Díky nízké transparenci, nestabilitě a chybovosti systém vykazuje vysokou
pracnost i v případě jednoduché údržby, a to i po drobném zásahu. Po malé
změně v systému se vyžaduje obrovský díl práce na opětovném bezchybném
stabilním zprovoznění systému (nestabilita jako malá změna vyvolává
obrovské nepříjemné důsledky).
•
V softwaru se objevují příliš časté chyby i po odevzdávce odběrateli, systém
jako produkt vykazuje velmi nízkou kvalitu. Díky chaotickému vývoji a
neustálému řešení dalších nových a nečekaných problémů vznikají zákonitě
softwarové slepence plné chyb. Důsledkem chybovosti je velmi nízká kvalita
produktů. Enormně vzrůstá nutnost neustálých oprav i po implementaci
systému. Co je však nejhorší, u zákazníka se začne projevovat nespokojenost
s kvalitou dodávky, zejména pokud zjišťuje fatální chyby ve funkcionalitách
systému („…ten systém dělá neuvěřitelné hlouposti, takhle jsme to tedy ale
vůbec nechtěli…“)
•
Chaotický vývoj vede i k zvláštní atmosféře ve firmě, která je charakterizována
vysokou hektičností prací, shonem a všeobecnou nervozitou. Vyrobený
strana 4
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
software se neustále předělává a to stále dokola „jako za trest“. Provádí se
zbytečná a tedy úmorně nepříjemná práce. Výsledkem jsou extrémně náročné
vztahy na pracovišti. Firma si v konečném důsledku díky neustálým úpravám
a opravám uzurpuje velmi vysoké nároky na volný čas pracovníků. Problém
nespočívá ani tak v tom, že by se pracovníci bránili příliš vysokému vypjetí sil
a přesčasům (pokud mají slušný výdělek), ale jako vysoce inteligentním
pracovníkům a expertům jim velmi vadí zbytečnost vykonané práce. Nakonec
to mohou pociťovat i jako určitou křivdu, že díky neuvěřitelnému chaosu ve
vývoji musejí zůstat přesčas a dané chyby stále dokola opravovat s
povzdechem: „Po kolikáté už v této agendě, to už opravdu nikdo neřekne, jak
to má být správně?!“ Ve firmě, která pracuje metodou TUNEL, je úplnou
samozřejmostí pracovat hodně přesčas, dokonce až tak, že se to považuje za
obvyklý standard chování. Někdy se tím vedoucí pracovníci u zákazníků
chlubí: „Sledujte, jak usilovně pracujeme, žádné dovolené, zůstáváme tu až do
večera, někdy do rána, samé pracovní soboty a dokonce i neděle!“. Ve
skutečnosti však firma paradoxně staví na odiv svůj neefektivní způsob práce,
který je pro metodu TUNEL příznačný. Správnější než tyto chlubné věty by
byla formulace: „Pracujeme sice hodně, ale neefektivně.“ Navíc metoda
TUNEL v žádném případě neprospívá dobrým vztahům na pracovišti.
•
Souhrnem všech negativních projevů jsou, jak bylo již zdůrazněno, zvýšené
náklady a následně finanční ztráty.
Proto se způsob tvorby informačních systémů TUNEL zásadně nedoporučuje, i když
mohu z dlouholeté praxe konzultanta potvrdit, že bývá ve velmi mnoha firmách až
příliš často používán.
strana 5
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
2. Pád do pasti BYROKRATICKÉ
METODY
V předešlé kapitole byla popsána „anti-metoda“ TUNEL. Existuje však ještě další
dokonce ještě více nebezpečná „anti-metoda“ - BYROKRATICKÁ METODA. Tato
opět nedoporučovaná metoda následuje většinou jako další krok po metodě TUNEL.
Pád softwarové firmy do pasti BYROKRATICKÉ METODY mívá většinou stejný
scénář:
Ve firmě neexistují žádné postupy prací, firma vyrábí software chaoticky, tj. tak., jak
bylo popsáno v předešlé kapitole. Vedení SW firmy se tato situace přestane
zamlouvat, tj. důsledky intenzivně působící metody TUNEL. Rozhodne se tedy
s tímto postupem ve firmě rázně skoncovat. Vedení firmy vcelku správně pochopí, že
základním nedostatkem metody TUNEL jsou chybějící postupy prací, tj. metodiky, a
že je proto žádoucí nějaké metodiky ve firmě zavést. Zadá se proto „jakýsi úkol“, aby
se vytvořily postupy pro tvorbu softwaru, neboli metodiky. Většinou spolu s tímto
krokem se současně založí oddělení kvality. Na první pohled dobře míněná snaha
však může skončit katastrofou.
Pokud pracovníci, kteří zavádějí tyto postupy a metodiky, neznají základní principy
tvorby softwaru, začnou vznikat velmi podivné dokumenty. Podle nich se sice
vyžaduje pracovat, ale pro programátory se tyto dokumenty stávají spíše přítěží než
pomůckou. Vznikají tak předpisy podle hesla: „Hlavně ať jsou předpisy!“, avšak jejich
správnost, efektivita apod. není posuzována. Doslova začnou vznikat „dokumenty
pro dokumenty“, avšak podle nich se nedá pracovat.
Tento „extrémně opačný byrokratický přístup“ je charakterizován následujícími body:
•
Zavádějí se postupy a metodiky bez zkušeností s nimi, nedodržují se základní
pravidla metodik platné pro tvorbu softwaru (o těchto principech bude dále
v této knize pojednáno)
•
Na počátku zavádění metodik se zahajují práce s přehnaným optimismem.
Jsou patrná přílišná očekávání ze zavedených postupů, a to s očekáváním
výsledků ihned a okamžitě. To samozřejmě vede k zavádění neověřených
postupek za každou cenu s následnými krachy.
•
Při tvorbě metodik se dopředu předjímají a vymýšlejí nesmyslné postupy
neověřené praxí. Metodiky se vydávají jako jednou konečné pravdy, o kterých
není již radno diskutovat.
strana 6
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
•
Přílišné očekávání vede ke snaze o revoluční skoky („čínská revoluce“) ve
změnách způsobů práce ve firmě. Zanedbává se ten prostý fakt, že každý
fungující mechanismus má svou setrvačnost. Navíc při zavádění metodik je
třeba vytvořit rychlou zpětnou vazbu. Každý nový postup vyžaduje „přejít
postupně do krve“. Každou postupku je třeba ověřit, odzkoušet, zrevidovat
praxí. Při zanedbání těchto faktů následují při zavádění metodik v SW firmách
krachy. Správně uvažujícímu člověku by měl přeběhnout mráz po zádech,
když někdo přijde s myšlenkou: „Máme tři čtvrtě roku na zavedení postupek a
návodek, času máme dost. Zavedeme je a od 1.1. příštího roku je spustíme,
to bude potom bomba!“ Bomba to bude, ale jinak, než původně autor
zamýšlel. Necelý rok uplyne a vydají se takové postupky, které všichni
zavrhnou jako nesmysly. S příchodem nového roku hora porodí myš.
•
Při zavádění byrokratické mašinérie následuje zpomalení vývoje a poté se
zvyšuje netrpělivost u zákazníka. Zde mohou nastat dva možné scénáře: Buď
pracovníci začnou nesmyslné metodiky ignorovat a tím se dostanou zpět do
metody TUNEL (metodiky se ignorují a každý bojuje jak umí), anebo nastane
horší varianta: V některých případech dokonce pracovníci začnou „švejkovat“
v tom smyslu, že pracují „přesně podle nesmyslných postupek“, což
pochopitelně vede ke katastrofálním výsledkům.
Přístup k tvorbě softwaru pomocí BYROKRATICKÉ metody se také nedoporučuje.
Z vlastní zkušenosti mohu potvrdit, že pád firmy do pasti BYROKRATICKÉ METODY
je mnohem nebezpečnější než použití klasické metody TUNEL. Pokud totiž nastane
scénář striktního dodržování nesmyslných postupů, může to nakonec vést až
k totálnímu kolapsu týmové práce. Zatímco v metodě TUNEL se mnohdy „jakýs
takýs“ informační systém odevzdá, BYROKRATICKÁ METODA může vést ke
katastrofě, kdy se rozpadnou týmy a dokonce se zruší dosud zažité „dobré zvyklosti
vývoje“ vedoucí alespoň k nějakým výsledkům. Uvedený přechod firmy od TUNELU
přes BYROKRATICKOU METODU zpátky do TUNELU ukazuje následující obrázek:
strana 7
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
Zavedení metody TUNEL
Ignorace předpisů
(jedeme podle svého)
Zavedení BYROKRATICKÉ
METODY
Dodržování nesmyslů
BYROKRATICKÉ METODY
KRACH
obrázek 2 : Metoda TUNEL a návrat do ní po neúspěšném zavedení metodik
Paradoxně jsem se setkal s firmami, ve kterých byla zavedena BYROKRATICKÁ
METODA, naštěstí byla ignorována (viz šipka zpět na předešlém obrázku), firma tedy
„jela vesele TUNELEM“ a honosila se certifikáty ISO. Formálně totiž vše vypadalo
tak, jako by firma předpisy pro postupy prací měla, ale stejně se v realitě pracovalo
pouze „ad hoc“, jak je v metodě TUNEL zvykem.
strana 8
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
3. Čtyři základní pilíře návrhu IS
V předešlých kapitolách byly popsány dvě často používané „anti-metody“ : TUNEL a
druhá ještě více nebezpečná „anti-metoda“ - BYROKRATICKÁ METODA.
Samozřejmě naskýtá se otázka, jak má vypadat správná metodika. Ukazuje se, že
efektivnost metodiky návrhu a tvorby IS je postavena základních čtyřech pilířích.
Pokud je jeden z těchto pilířů narušen, metodu TUNEL nelze korektně opustit. Tyto
čtyři pilíře zobrazuje následující obrázek:
4 PILÍŘE VÝVOJE IS
OBJEKTOVÝ
PŘÍSTUP
ÚROVNĚ
ABSTRAKCE
™
™
™
™
™
™
™
™
Analýza
Design
Kód
atd...
POUŽITÍ VZORŮ
MODELOVÁNÍ V
JAZYCE UML
™
™
™
™
Třídy
Instance
Zapouzdření
atd...
™
™
™
™
™
Modely, Diagramy
Elementy, Interakce
MDA
atd...
Design Patterns
Analysis Patterns
Enterprise Patterns
Integration Patterns
atd.
obrázek 3: 4 pilíře vývoje IS
strana 9
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
Následuje stručná charakteristika těchto bodů, v dalších kapitolách je probereme
samozřejmě detailně a také prakticky:
1. Pilíř: Úrovně abstrakce ve zkratce znamená, že na informační systém je
třeba nahlížet z různých úrovní abstrakce, přičemž každá úroveň je
charakterizována mírou detailu implementace. Tomuto principu musí
odpovídat rozvržení dokumentace projektu. Rozeznávají se (minimálně) tři
úrovně abstrakce informačního systému
a. analytické modelování (ve zkratce také analýza)
b. design
c. kód.
Na nejnižší úrovni abstrakce (tj. kód) se dokumenty vyznačují nejvyšší mírou
detailu implementace a to až na úrovni samotného kódu, na nejvyšší úrovni
abstrakce, tj. na úrovni analytického modelování, je systém popsán pouze
pomocí analytických entit (evidované pojmy a jejich struktura) a chování
výskytů z nich (algoritmy, scénáře, dynamika). Tímto principem se povinně řídí
tvorba dokumentů ve vývoji. Zohlednění tohoto bodu vede ke správnému
fázování vývoje a k přehledné a úplné dokumentaci informačního systému.
Nezohlednění tohoto bodu vede k cestě TUNELEM už díky neznalosti „který
dokument je třeba kdy udělat“, což není nic jiného, než zanedbání fázování
vývoje. Důsledkem této chyby je také následná velmi chabá dokumentace
projektu. Většinou se projekt dokumentuje pouze na jedné úrovni abstrakce a
to kódování, protože se u SW jedná o „povinnou“ část dokumentace (ono totiž
logicky bez napsání kódu nelze „chodící“ systém odevzdat). Ostatní
dokumenty, tj. analytické modely a modely designu, zůstávají v hlavách tvůrců
a šíří se pouze ústním podáním.
2. Pilíř: Objektově orientovaný přístup (ve zkratce OOAP - Object Oriented
Approach) zavádí při návrhu IS velmi důležitou filosofii náhledu na to, co jsou
to vlastně prvky IS. Zavádí pojem „obecný objekt“ (tj. „general object“) ve
smyslu prvku IS a definuje jeho vlastnosti. Tyto prvky jsou základními
stavebními kameny vývoje systému na všech úrovních abstrakce (analýza,
design, kód). Bez tohoto principu není vývojář schopen správně a logicky
sestavit IS, protože mu chybí „základní stavební kameny“ - obecné objekty.
Problematika OOAP bude dále vysvětlena podrobně a rozvedena v dalších
kapitolách, nyní uveďme pouze to, že jeden ze základních důsledků OOAP
spočívá v rozdělení informačního systému na dvě prakticky oddělené části: IS
je oddělen nikoliv pouze pomyslně, ale „fyzicky“ (tj. až do kódu) na část „uvnitř
prvku“ (tj. to, co patří do prvku, implementace) a část „vně prvku“ (okolí prvku,
klient). Neznalost tohoto přístupu OOAP vede k fatálním chybám v návrhu,
k nesprávnému použití prvků modelu, k nesmyslným návrhům jak v analýze,
strana 10
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
tak v designu, tj. k hrubým chybám v modelování. Musíme zdůraznit, že
porušením tohoto principu hrozí zejména zavlečení jedné z nejvážnějších
chyb, kterých se může tvůrce IS dopustit, a tou je chyba uvedená v anti-vzoru
„SPLITTING OF OBJECT“. Tato chyba spočívá v tom, že se evidované
informace v IS umísťují do nesprávných pozic, tj. tam, kam nepatří. Tím
dochází k tříštění objektů neboli evidovaných informací (o tomto „anti-vzoru“
viz dále v knize). Musíme ještě upozornit na to, že pojem „general object“
zavedený pomocí OOAP je obecnějším pojmem než objekt zavedený v OOP.
Jedná se o jeho zobecnění pro všechny úrovně abstrakce, nejenom pro kód.
3. Pilíř: Modelování v jazyce UML – (Unified Modeling Language) umožňuje
vývojáři vyjádřit svoje myšlenky (a tedy celý návrh) ve velmi sofistikovaném
jazyce. Tento jazyk navíc velmi dobře zohledňuje předešlý bod, tj. přístup
pomocí OOAP. Jinak řečeno UML je „jazykem určeným pro objektově
orientovaná prostředí“. Tvůrci UML poskytují vývojářům unifikovaný,
standardní a velmi „chytře promyšlený“ jazyk pro vyjádření návrhu na úrovních
abstrakce analytického modelování a designu.
4. Pilíř: Použití vzorů při návrhu IS (návrhové vzory, analytické vzory, vzory
integrace aj.) umožňuje vývojáři při návrhu IS použít princip vzorů jako
„opakovaných řešení“. Pro firmu to znamená, že může takto zavádět velmi
efektivně opakované postupy pro vývoj. Význam použití vzorů se dá vyjádřit
trefně pomocí slovní hříčky: Zavádění opakovaných postupů a řešení (vzory)
je nejlepším postupem, jak zavést opakované postupy ve firmě. Jinak řečeno,
jedná se o nejefektivnější způsob zavádění metodik, navíc je tento postup na
rozdíl od byrokratických metod pracovníky vítán a není jimi odmítán (vzory
jsou odborné „know-how“, které si vývojáři rádi přečtou na rozdíl od
byrokratických příkazů).
Je třeba hned úvodem poznamenat, že tyto čtyři oblasti se navzájem prolínají a
kombinují. Například pro vyjádření struktury a fungování vzoru se použijí diagramy
v jazyce UML (kombinace bodu 3 a 4), nebo například různé modely IS spadají do
různých úrovní abstrakce (kombinace bodu 1 a 3), nebo například přechod od
dokumentů jedné úrovně abstrakce k druhé je popsán pomocí vzorů modelem
v jazyce UML a také pomocí vzoru, což vede k moderní technologii MDA – Model
Driven Architecture atd.
V dalších kapitolách tohoto seriálu se budeme podrobně zabývat těmito čtyřmi pilíři
návrhu IS.
strana 11
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
4. Trojice základních vzorů návrhu
IS
Při návrhu IS jsou patrné vzory, které jsou velmi důležité, protože se velmi často
používají. Na druhou stranu vidíme jiné vzory, které jsou speciálnější a používají se
méně často.
Praxe ukazuje, že existuje trojice vzorů, které mají výsadní postavení. Tyto tři vzory
se chovají podobně jako axiomy (tj. nejzákladnější tvrzení) v matematice. Jsou to
vzory natolik zásadní, že na jejich konstrukci jsou postaveny všechny další vzory pro
návrh IS. Proto je dobré si tuto trojici vzorů uvést hned na úvod a řádně vysvětlit.
Zde je však jeden drobný háček - tato trojice vzorů je spolu provázána tak, že
vysvětlení jednoho vzoru není možné bez druhého a jejich pochopení je možné až
jako celé trojice, tedy celku. Vysvětlení však musí proběhnout postupně, což nyní
uděláme, a na konec shrneme působnost těchto tří vzorů jako jeden celek.
4.1 Vzor Pattern for interaction
Jedná se o první základní vzor z trojice „axiomatických vzorů“. Vzor ukazuje, jak
vlastně funguje tzv. opětovná použitelnost (dále také re-use) a také ukazuje, jak
funguje interakce mezi prvky. Mohl by se však také jmenovat „Vzor pro objektový
přístup“, protože i tato vlastnost je v něm také skryta, jak si ukážeme dále. Jedná se
o jednoduchý základní axiom, jehož důsledky se linou teorií tvorby SW a tedy i
návrhem IS.
Představme si, že existuje nějaký prvek A a existuje nějaký prvek B, přičemž
zjistíme, že v prvku A se vyskytuje určitá část „něčeho“, co se opakuje také v prvku
B, označme tuto opakující se část klikyhákem:
strana 12
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
A
B
obrázek 4 Situace 1 ve vzoru pro re-use
Příklady takovýchto situací: Opakující se kód ve funkci, opakující se struktury ve
analytických třídách, opakující se sloupce v tabulkách aj.
Vzor zavádí kromě této situace také situaci 2, která nastane tak, že se zavede
interakce použití mezi prvky, daný opakující se klikyhák se „vytkne“ do prvku C a
vznikne tak situace 2:
A
B
interakce 2
interakce 1
C
obrázek 5 Situace 2 ve vzoru pro re-use (po „vytknutí“)
Situaci 1 budeme dále také nazývat „situace před vytknutím“ a situaci 2 „situací po
vytknutí“.
Přechod ze situace 1 před vytknutím do situace 2 po vytknutí. tj. samo vytknutí prvku
C“, budeme chápat jako zavedení opětovné použitelnosti a budeme to nazývat také
jako zavedení interakce mezi prvky.
Existuje i opačný postup, kdy se ze situace 2 po vytknutí přejde úmyslně do situace 1
před vytknutím, tj., opačným směrem. Takovýto postup budeme nazývat
optimalizace. Většinou se tak děje za účelem získání nějaké technologické výhody,
strana 13
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
například rychlosti apod. Klasickým příkladem je postup tzv. „de-normalizace“ (3.
stupně) v relační databázi, kdy se „rozpouštějí tabulky“. Každá optimalizace vede
v konečném důsledku k porušení opětovné použitelnosti, což je třeba mít vždy na
paměti. Problému optimalizace se budeme ještě blíže věnovat v kapitolách přechodu
od analýzy do designu ve vzorech optimalizace.
Všimněme si blíže vlastností situací před vytknutím a situaci po vytknutí tj. obrázek 4
Situace 1 ve vzoru pro re-use a obrázek 5 Situace 2 ve vzoru pro re-use (po
„vytknutí“).
Interakce použití v situaci po vytknutí je směrová, což je velmi důležitý poznatek.
Toho, kdo používá (v našem případě prvky A a B), budeme nazývat klientem a toho,
kdo je použit, budeme nazývat prvkem, nebo také „obecným objektem“. Je zřejmé,
že pokud A používá C, tak to v žádném případě neznamená, že z toho plyne, že C
používá A.
Obecný objekt tj. prvek, který je použit, musí být v systému nějak přesně
identifikován oproti jiným prvkům, jinak bychom nemohli docílit toho, aby si dvě
interakce na předešlém obrázku „ukázaly“ svými konci šipek na tentýž prvek C.
Stejně tak jsou identifikovány prvky A, B, ale také C pro kohokoliv do budoucna, kdo
se stane jejich klientem. Pro tuto situaci konkrétní identifikace, kdy klient používá
konkrétní identifikovaný prvek, budeme také používat terminologii, že „klient si drží
ukazatel na používaný prvek“, přičemž pod ukazatelem nemáme na mysli pouze
„paměťový“ ukazatel v OOP (kde tato věta platí samozřejmě také), ale máme tím na
mysli obecně jakýkoliv ukazatel (třeba i datový, například cizí klíč apod.).
Pokud tedy namaluje obrázek odpovídající situaci „po vytknutí“ (tj. obrázek 5 Situace
2 ve vzoru pro re-use (po „vytknutí“)), současně tím máme na mysli to, že vnitřní
struktura klienta A resp. B se obsahuje obecný ukazatel na prvek C (obsahují ve své
struktuře „kolečka“ jako začátek interakce na obrázku situace po vytknutí). Tento
ukazatel je v dané technologii nějak realizován (například funkce nějak identifikuje
druhou funkci při volání, cizí klíč v datech, anebo ukazatel na interface objektu, třída
nějak identifikuje druhou třídu při dědičnosti, tj. má v sobě nějak jednoznačně
zapsaného předka atd.)
Další důležitou vlastnost tohoto vzoru si uvědomíme, pokud si představíme nový
prvek (dosud neexistoval!), který se stane klientem prvku A, označme tento nový
prvek jako X. Tomuto prvku X neboli klientovi prvku A „je jedno“, zda je použita
situace 1 bez vytknutí anebo 2 po vytknutí, tj. zda došlo k aplikaci opětovné
použitelnosti anebo nikoliv. V obou případech bude systém fungovat (nebýt této
pravdy, nemohli bychom zavádět optimalizaci).
Otázkou je, proč tomu tak je? Důvod je prostý, pokud si uvědomíme princip přechodu
od situace „před vytknutím“ k situaci „po vytknutí“: Prvek C byl vytknut a následně
použit. Není tedy úplně přesné hovořit o „interakci mezi prvky“ (to příliš zavání
symetrií), ale raději o tom, že jeden prvek používá druhý prvek. Každý prvek nabízí
v systému své použití, jinak řečeno nabízí nějakou službu použití. Pod službou
strana 14
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
použití máme na mysli nabízenou možnost být použit v interakci ve směru od klienta
k prvku, a takovou službu nabízí každý prvek. V našem příkladu tedy prvek A jako
klient prvku C používá nabízenou službu použití prvku C (stejně tak prvek B používá
službu C), navíc prvek X používá nabízenou službu prvku A atd., viz následující
obrázek:
služby použití X
X
služby použití B
služby použití A
A
B
služby použití C
C
obrázek 6 Princip použití prvků prvky
Důležitý závěr:
Každý klient prvku si tedy drží obecný ukazatel na používaný prvek a má
přitom zpřístupněnu možnost použití služeb tohoto prvku.
strana 15
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
Díky těmto dvěma okolnostem (identifikaci prvku a nabízené službě použití prvku)
nakonec prvek použije. Všimněme si, že pohled klienta je omezen pouze na tuto
službu použití a nikoliv na vnitřní strukturu prvku. Proto je možné zavést vnitřní
restrukturalizaci prvku vytknutím („refactoring“). Nyní je jasné, proč je prvku X jako
klientovi prvku A na předešlém obrázku úplně, ale úplně „jedno“, zda je prvek C z A
„vytknut“ anebo nikoliv. X používá služby A a tím jeho pohled na prvek A končí.
Tomuto jevu, kdy klient prvku používá služby tohoto prvku a vnitřek neboli
implementace používaného prvku je pro klienta přitom skryt, budeme říkat obecně
zapouzdření (encapsulation).
Vidíme, že náš vzor o re-use má v sobě uschovány také základní principy
objektového přístupu, čemuž bude věnována jedna z dalších důležitých kapitol.
Tento princip „objektovosti“ je mnohem obecnější než pouze pro OOP a co je hlavní,
line se celým návrhem IS.
K vysvětlení důležitosti tohoto faktu se vraťme k obrázku obrázek 6 Princip použití
prvků prvky a představme si, že v prvku C je nějaká informace. Umí prvek A tuto
informaci nebo ne? Odpověď ano, ale zprostředkovaně. Znamená to, že prvku X jako
klientovi A je „jedno“, zda je ta informace v A nebo v C. Musíme upozornit (a dále si
to ukážeme konkrétně na příkladech), že právě tady je schována nejčastější chyba
při modelování a návrhu IS, která se nazývá tříštění objektů. Chyba se vytvoří tak, že
určitý prvek se roztříští a jeho části se počnou objevovat rozprsknuté po systému.
Jako příklad si představme., že máme v systému evidované jednak čtenáře
knihovny, dále zaměstnance knihovny, studenty a jiné osoby. „Umějí“ tyto evidované
výskyty rodné číslo? Odpověď ano, protože to po nich budeme vyžadovat. To však
neznamená, že rodná čísla budou přímo „v nich“ jako jejich atributy. To, že z těchto
evidovaných prvků tento údaj „nějak dostaneme“, tak to může (a v tomto případě to
také znamená), že rodné číslo je v konkrétním prvku osoba a ten je použit těmito
prvky nějak takto:
strana 16
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
služby použití
zaměstnance
služby použití
čtenáře
čtenář
zaměstnanec
služby použití
osoby
osoba
- rodné číslo
obrázek 7 Má čtenář a zaměstnanec rodné číslo?
Bylo by dobré pochopit, že veškeré modelování IS je v UML postaveno na
takovýchto obrázcích, které jsou v podstatě úplně stejné, jako je tento předešlý a
jediné, co se na nich mění, je jejich grafická podoba pro různé typy diagramů, pro
různé typy prvků a pro různé typy interakcí. Různé typy diagramů zobrazují různé
případy „o co se v použití jedná a o jak typy prvků se jedná“. Každý vztah použití
v různých typech diagramů vyjadřuje pouze něco jiného, například
•
dědičnost je použití třídy třídou,
•
asociace je použití instance třídy instancí třídy,
•
vztah <<include>> je použití instance případu užití druhou instancí případu
užití
•
atd.
Je to však stále dokola o tomtéž vztahu použití prvku prvkem. Proto je tento vzor tak
silný, dovoluje nám totiž pochopit, jak funguje modelování, jak funguje interakce, jak
funguje objektový přístup obecně. Jeho nezohlednění vede k fatálním chybám
v návrhu IS.
V další kapitole se budeme zabývat druhým základním vzorem, který ukazuje, jak
vlastně fungují vzory a jakou mají strukturu.
strana 17
Návrh informačních systémů pomocí UML, OOP a vzorů
© RNDr. Ilja Kraval, 2006, http://www.objects.cz
Konec dokumentu – pokračování následuje
Jakékoliv připomínky k článku pište prosím na adresu autora:
mailto:[email protected]
Slovník
Pattern for interaction and re-use
strana 18

Podobné dokumenty

letní speciál

letní speciál Do sbírky Památníku hledáme kulturně politický měsíčník Červený květ, který vycházel v letech 1956 – 1969 v Ostravě. Zájem máme o ročník 1956 a ročníky

Více

Několik teoreticko-metodologických poznámek k

Několik teoreticko-metodologických poznámek k „Rozdíl mezi touto mluvnicí a předchozími popisy by se tak dal vyjádřit tím, že tato mluvnice se nesnaží popisovat jazyk, jak b y m ě l v y p a d a t, ale jak s k u t e č n ě v y p a d á“ (Cvrček e...

Více

Návrh webového systému řízení malé společnosti

Návrh webového systému řízení malé společnosti evidujících konkrétní druh provozních údajů. Povede k němu cesta přes analýzu potřeb uživatelů a jejich zkušeností s dosud paralelně provozovanými programy s podobným účelem, ale zejména přes návrh...

Více

ČÍ JE MŮJ KŮŇ?

ČÍ JE MŮJ KŮŇ? koně. Na něm je kromě základních informací o koni (životní číslo, datum narození, plemeno, barva, výžeh na l. stehně, chovatel) opět uveden rodokmen, podle svazu tří- nebo čtyřgenerační, a potvrzen...

Více

Riichi Mahjong

Riichi Mahjong Hráč, který zahraje Riichi, tím protihráče informuje o tom, že už je jen jeden tah od uzavření a dává v sázku na svou výhru tisíc bodů. Hráč může (a nemusí) zahrát Riichi právě tehdy, když: • Je je...

Více

Definice pravděpodobnosti, základní vlastnosti

Definice pravděpodobnosti, základní vlastnosti Určete pravděpodobnost, že bude vězni udělena milost a také pravděpodobnost, že bude popraven. Řešení: a) Variace. Představme si, že koule v osudí budou očíslovány a že například koule s čísly 1, 2...

Více

Čech, R. - Radek Čech

Čech, R. - Radek Čech poznání přinést a kde jsou naopak její meze? Přiznám se, že nerozumím, proč jsou dávány do protikladu experimentální poznatky a formalismy (resp. formální systémy). Já si nedokáži představit experi...

Více