pátek 29. dubna 2016

Víme jak modelovat struktury pojmů (2)

Druhá část článku Ivana Ryanta o konceptuálním modelování.

Dojde-li dnes nějakým omylem na to, že se učitel pokusí graficky zachytit znalostní strukturu, snad pojmovou strukturu vykládané látky nebo dokonce celého oboru, uchýlí se pravděpodobně k myšlenkové mapě. Je to totiž asi jediný způsob grafického záznamu konceptuálního modelu, jaký se učitelé na svých almis matribus učili, a jak se zdá při pohledu do Metodického portálu RVP, tak ani učitelé učitelů stále ještě nevzali na vědomí, že už nejméně čtyřicet let se vyvíjejí metodiky, specifikační jazyky a diagramy, které umožňují zachytit konceptuální modely jako konceptuální modely a ne jen vágní nákresy toho, co se právě honí člověku hlavou. Tuším, že průkopníkem fundamentálních ontologií byl počátkem devadesátých let Nicola Guarino, nicméně nebyl jediný.


Obr. 3: Sémantická síť skladové evidence
Proč nestačí myšlenkové mapy nebo obecněji sémantické sítě? Na obr. 3 jsem se pokusil ukázat, co je v sémantické síti přípustné, ale do konceptuálního modelu to nepatří. Především musíme rozlišovat mezi výskyty konkrétních objektů (např. „obchodník Štědrý“, „mléko polotučné“ aj.) a obecnými třídami objektů (tj. typy – např. „SkladováKarta“). Obchodník Štědrý má zřejmě malý obchod a stačí na něj sám. To samozřejmě svádí analytika k tomu, aby nerozlišil role, které obchodník Štědrý hraje v systému: prodavač, zásobovač a skladník (a navíc možná i účetní aj. – ale to už jsou role mimo naši problémovou oblast). Naproti tomu různé druhy zboží (máslo, mléko, chléb) se chovají podle stejných pravidel (příp. algoritmů) – proto můžeme všechny druhy zboží ve skladu specifikovat jedním typem „SkladováKarta“.

Každý typ se dá specifikovat podle toho, jak se chová navenek, jaké operace musí umět. To se dá udělat i formálně matematicky jako tzv. abstraktní datový typ (ADT), což je algebra (přesněji: vícedruhová iniciální sigma-algebra). Je to solidní, poměrně pokročilá a současně i názorná matematická formalizace, kterou na příkladech snadno pochopí i sextán nebo septimán (vyzkoušeno), a přitom může posloužit při formálním dokazování správnosti programu, při automatickém generování programu nebo při různých simulacích (viz specifikační jazyky jako OBJ3 nebo systém Maude, ale stačí i obyčejný Prolog). Nevím, co mají didaktici informatiky proti ADT, že je po více než čtyřiceti letech stále ještě nevzali na vědomí? Snad se nebojí, že by pak žáci algoritmy prostě jen generovali, takže bůhvíproč preferovaná algoritmizace by se mohla ukázat zbytečnou? Asi ne – invariant rekurze nebo cyklu se automaticky nevygeneruje, ten musí někoho napadnout.

Ještě bych rád poukázal na jeden rozdíl mezi sémantickou sítí a konceptuálním modelem na obr. 2: typ „Položka“ ze sémantické sítě nikterak nevyplývá, ale při metodicky správném konceptuálním modelování si jej vytvoříme, aby se nám neopakovaly stejné vlastnosti v podtypech „SkladováKarta“ a „PoložkaObjednávky“. Tím dosáhneme robustnosti konceptuálního modelu (aby nebyl citlivý na dodatečné změny a opravy chyb) – to nám myšlenkové mapování nezajistí. Výhodou může být i charakterizace typů pomocí poznámek v «packách» – umožní nám např. odlišit pojmy, které mají ontologickou totožnost (druhy, role, fáze...) od pojmů, které ji nemají (směsi, kvality, módy, relátory...).

Za posledních více než dvacet let vznikla řada metodických postupů, jak konceptuálně modelovat, fundamentálních ontologií (tj. ontologických metamodelů) a grafických notací. Např. pro konceptuální modelování sémantických webů je oblíbená metodika a notace OWL, pro informační systémy např. GFO. Fundamentální ontologie se ovšem dají použít k modelování jakékoli znalostní struktury, neomezují se na informační systémy, sémantické weby nebo jinou aplikační oblast. V rámci předmětu objektové modelování na ČVUT FIT používáme metodiku UFO Giancarla Guizzardiho (viz [UFO]) a příslušnou grafickou notaci OntoUML, kterou v počeštěné a zjednodušené podobě používám i v tomto článku.

Zkušenosti z výuky

Vedle pohřebních ústavů, popelářů, databází milenek a narkomafií bývají mezi studenty nejoblíbenějším tématem hry. Studenti na FIT musí modelovat pečlivě podle UFO a za každý byť i jen formální nedostatek v diagramu jim strháváme body. Nevedeme je však k pečlivé analýze chování – místo toho musí dodatečně otestovat všechny funkční i nefunkční požadavky pomocí jednotkových testů na jednoduché prototypové implementaci. Konceptuální model vytvářejí spíš intuitivně nebo na základě analýzy textu zadání. Příklad takového vysokoškolského modelu vidíte na obr. 4 – proti originálu je ovšem výrazně zjednodušen a pozměněn tak, aby ilustroval notaci OntoUML. S tímto způsobem výuky máme celkem dobré zkušenosti:

  • Studenti se naučí odhalit a opravit takové chyby v zadání, které se projeví porušením pravidel UFO při kreslení konceptuálního modelu (např. žádný objekt nesmí mít dvojí totožnost, každá „Věc“ musí být v každém okamžiku v nějaké fázi, ale ne ve dvou fázích současně – třeba žádná „OdloženáVěc“ nesmí být současně „PoužívanáVěc“ atd.)
  • Dále se studenti naučí, že důkladný konceptuální model jim pomůže správně naprogramovat to, co bylo opravdu požadováno – aby implementovaný systém byl co možná validní.
  • Dodržování ontologických pravidel a strukturních vzorů UFO vede k robustní architektuře výsledného systému.
Obr. 4: Zjednodušený konceptuální model RPG 
(podle semestrální práce Viktora Bocana)

Na gymnáziu se neřídíme vysloveně podle UFO. Jednak není čas to celé vysvětlit, jednak softwarové projekty studentů na gymnáziu jsou tak jednoduché, že většina zásad UFO by se stejně neuplatnila. Obvykle jsem rád, když studenti navrhnou několik málo tříd propojených asociacemi (místo jediného obrovského formuláře, ve kterém by komplikovaně obsluhovali události). Gymnazisty spíš vedu k pečlivému zadání úlohy a k analýze chování, ze které vyplyne konceptuální model.

Ne každý problém čeká, až pro něj vytvoříme konceptuální model příslušné problémové oblasti, ne každý obor čeká, až mu vytvoříme jeho oborovou ontologii. Mnoho oborů je podrobně popsaných v učebnicích, zákonech nebo normách. Např. matematika jako obor je popsaná logickými formulemi. Taková specifikace je formální a díky své formálnosti umožňuje např. formálně dokazovat matematické věty. Matematická logika je fundamentální ontologií pro matematiku.

Jiné oborové ontologie nejsou tak přísně formální a bývají popsány textem – např. normy. Kapitolu samu pro sebe představují zákony: jsou sice obecně srozumitelné i laikovi, ale současně jsou formulovány co nejpřesněji, mají předepsanou formu a do jisté míry se řídí pravidly tradiční aristotelské logiky. V takových případech je samozřejmě potřeba použít obecně uznávanou a mnohdy i závaznou konceptualizaci a textovou podobu konceptuálního modelu překreslit do podoby diagramu. Je to i efektivní, protože si ušetříme velmi pracnou analýzu chování. Analýza textu je způsob, jak převzít zprostředkovanou znalost. Vyjít přitom můžeme z větného rozboru, jak jsem ukázal na příkladu v článku Víme jak vytěžit informaci z textu.
Příklad z výuky objektového modelování: automatizovaný systém pro správu daní, který používají finanční úřady, musí použít konceptualizaci uvedenou v Daňovém řádu. Kdo chce, ať si zkusí nakreslit konceptuální diagram podle §20–§31 Zákona 280/2009 Sb. – daňového řádu, kde jsou specifikovány Osoby zúčastněné na správě daní a zastoupení.

Literatura

[UFO] Guizzardi, Giancarlo. Ontological Foundations for Structural Conceptual Models. Enschede: CTIT Telematica Instituut, 2005.

Žádné komentáře:

Okomentovat