|
Doporučené Postupy při nalézání tříd v návrhu IS
autor: RNDr. Ilja Kraval, prosinec 2011
část 1.
Object Consulting s.r.o.
Server objektových technologií
Úvod
V minulém článku bylo pojednáno o časté chybě při pojmenování tříd podstatným jménem v množném čísle (například Osoby, Faktury apod.).
Uvedená chyba spočívá v tom, že třída se má chápat jako předpis, tj. pravidlo pro instance. Použití tvaru množného čísla v návrhu IS by mělo být vyhrazeno pro jiné prvky v systému než pro třídy, a to pro seznamy instancí z těchto tříd.
Například pokud se zamyslíme nad částí scénáře případu užití v tomto tvaru: „Obsluze se zobrazí seznam osob…“, tak je zřejmé, že se tímto přesně vymezuje pojem seznam osob jako prvek z prostoru instancí a nikoliv tříd, tj. jinak řečeno, že se jedná o „několik instancí“ a nikoliv o třídu.
Oproti tomu věta „předpis pro instance pro osoby zavádí novou budoucí vlastnost osob jako rodné číslo, takže každá instance osoby bude mít rodné číslo“ je evidentně platná v prostoru tříd, kde se tato vlastnost zavádí jako předpis pro budoucí instance.
Tento článek předkládá čtenáři některé rady pro správné a efektivní vyhledávání tříd při návrhu IS pomocí UML.
Proč vlastně vzniká problém s vyhledáváním tříd?
Na školeních pobytových resp. internetových anebo ve firmách při konzultacích nad návrhem IS se velmi často pokládají dotazy týkající se existence nějakého systematického postupu, jak vyhledávat třídy v IS. Je to vcelku pochopitelná otázka, protože s vyhledáváním tříd jsou spojena určitá dost vážná úskalí.
Základní problém při vyhledávání tříd spočívá v následující paradoxní situaci, která se týká vztahu instancí a tříd u již nasazeného a funkčního systému:
Pokud je informační systém již nasazen a uživatelem používán, tak třídy jako takové jsou pro uživatele skryty a viditelné jsou pouze projevy IS v instancích z těchto tříd. Třídy uživatel nevidí, vidí pouze instance.
Jak známo, třídy jsou pravidlem tedy meta-vzorcem (pozn: pojem meta je vztah od instancí ke třídám, viz např. kniha AM), ze kterého pocházejí instance. Jinak řečeno třídy v UML jsou „předobrazem“ pro uživatele neviditelného statického zdrojového kódu. A problém je v tom, že systém se navrhuje a programuje v prostoru tříd a nikoliv v prostoru instancí. Vzniká proto tak trochu paradoxní situace: Systém je třeba navrhnout (a naprogramovat) v prostoru tříd jako meta-vzorce pro instance, ale uživatel si systém umí představit pouze v instancích, které budou pro něj viditelné.
Vyhledávání tříd tak skutečně vypadá jako nalézání vzorce (přesněji meta-vzorce) pomocí postupu zobecnění z několika příkladů evidence instancí do tříd. Jedná se o stejné zobecnění z prostoru instancí do modelu tříd, jako je tomu u vyhledávání vzorce například v matematice nebo fyzice.
Poznámka: Přirovnání k hledání vzorce je zde opravdu výstižné a vyplývají z něj některé zásady postupu při vyhledávání tříd. Vezměme si například takový klasický vzorec ve tvaru Pythagorovy věty: „a2 + b2 = c2“. Na tento vzorec nepřišel Pythagoras tak, že by seděl a najednou „na to přišel a vyslovil jej“. Takovému jevu se v historii říká vnuknutí a má spíše mysteriózní povahu. Vsadil bych se, že Pythagoras pomaloval pravoúhlými trojúhelníky hodně písečných pláží a že Archimédes se často rád koupal ve vaně J.
Poznámka 2: Úplně, skutečně úplně mimochodem, vyhledávání vzorce ve tvaru modelu tříd IS a realizace tohoto modelu v programování mi připomíná v reálném světě jednu oblast z filosofie, které se říká metafyzika. Pokud se rozhlédnete kolem sebe, zřetelně vidíte projevy našeho světa (tj. našeho Matrixu J). Existuje již tisíce let stará filosofická otázka, zda tyto projevy našeho světa pocházejí z obecnějšího vzorce (metavzorce metafyziky alias z „vyšších zákonů“) anebo ne. Jedná se tedy o paralelu s návrhem tříd v IS: Uživatel vidí a sleduje instance, ale nevidí model tříd, tj. nevidí vzorce alias „vyšší zákony“, kterými se tyto instance řídí.
Při vyhledávání tříd musíme velmi přesně chápat vzor dichotomie třída instance v tom smyslu, že vyhledávání tříd je postupem vyhledávání obecnějšího vzorce pro několik příkladů představy o instancích. Z toho automaticky plyne, že vyhledávání tříd je spojeno s nutností zavést několik příkladů evidence v instancích (což mnohdy stačí v duchu), je možné si instance také namalovat (postačuje rukou na papíře nebo na tabuli). Dalším krokem je snaha pomocí těchto instancí najít obecnější vzorec ve třídách, a to se děje jedině metodou „pokus omyl“.
Můžeme tedy napsat první dva body zásad vyhledávání tříd v IS. Hledání tříd je postup zobecňování do meta-vzorce, z čehož plyne:
1. Musíme si vytvořit (byť jen v duchu) představu několika příkladů instancí a jejich vztahů (tzv. linky v UML).
2. Metodou „pokus omyl“ se snažíme z těchto příkladů nalézt obecnější meta-vzorec v modelu tříd, který bude platný jak pro naše instance, tak i pro libovolné další instance v budoucnu se narodivší.
V další části článku tuto myšlenku rozvineme do dalších praktických kroků.
Pokračování příště
|
|
|
|