© 2010 Ing. Roman Fischer
Metamodelování je známé přibližně od konce 80 let 20. století, ale s příchodem Internetu a integrací jednotlivých business odvětví je datová integrace jasně prvotním zájmem. Metamodely jsou základem pro datovou integraci, i když nejsou vždy stejně nazývány.
První metamodelové softwarové produkty byly samozřejmě CASE nástroje (jakožto modelovací nástroje) s rozšiřitelným nebo plně konfigurovatelným metamodelem, z nichž se pak v dalších obdobích postupně stávaly Meta-CASE nástroje. To samozřejmě s sebou přineslo možnosti samostatného přizpůsobování metod softwarového vývoje či standardů. Nyní můžeme meta-modelové softwary nalézt jsou součást mnoha balíků, jako jsou například e-business integrační řešení.
Nejznámější příkladem je v tomto ohledu Unified Modeling Language (UML), který je z větší části definován jako metamodel. Před UML však ještě nacházíme CDIF (CASE nástroj založený na Integrovaném Meta-modelu), PCTE a IRDS (oba standardizované), STEP (pro výměnu průmyslových informací) a další.
Metamodely jsou velmi dobré v abstrahování od nízkoúrovňových detailů integrace a interoperability, pomáhají s rozdělováním problémů do sub-problémů, pomáhají při optimalizaci fyzických dat a v mnoha dalších oblastech konceptuálních příprav modelů.
Metamodelování nachází své uplatnění především při popisu a tvorbě nových metodologií, při implementaci metodologií v CASE nástrojích, při integraci systémů, při generování programů z modelů a v neposlední řadě i při kontrole samotných modelů.
Nástroje Meta-CASE jsou vyvíjeny v zásadě ze dvou hlavních důvodů. Jednak jako produkt pro cílového zákazníka a jednak jako interní vývojářská verze vlastního CASE nástroje.
První důvod vývoje a existence Meta-CASE nástroje není příliš obvyklý a na trhu se s takovým softwarem příliš nesetkáváme, protože cílová skupina schopná vytvářet nové metodologie a upravovat staré metodologie je poměrně malá. I přesto je možné takovou aplikaci získat. K nejznámějším z nich nejspíš patří již zmiňovaný nástroj MetaEdit+.
Druhý důvod je mnohem častější. Vývojáři CASE nástrojů často vyvíjí Meta-CASE nástroj, ale těsně před vydáním z něj vytvoří obvyklý CASE nástroj. „Tím si zajistí lehnou rozšiřitelnost CASE nástroje a zvyšují tak prodejnost nových verzí. Inovace je tím pádem pro ně mnohem jednodušší a prováděné změny nemusí být zasazovány přímo do zdrojovém kódu. Stačí pouze změnit meta-model a nová verze je připravena k prodeji. Společné prvky, které obsahuje každý z CASE nástrojů, mění (přidávají) jednotně. Tím dosahují vyšší produktivity a zároveň snižují počet chyb.“ [1]
Vzhledem k výše zmíněnému bychom mohli definovat hlavní výhody metamodelování následovně. [2]
Obecně lze doporučit použití následujících kritérií:
Určení rozsahu metamodelu je zpravidla komplikovaná záležitost. Jednou možností je vzít testovací data a aplikovat na ně popis samotného metamodelu. Existuje nám v metamodelu každý potřebný popis? Lze data přesně popsat? Nebo je potřeba data změnit, aby bylo možné metamodel aplikovat. A stejně tak obráceně. Je možné odvodit zpětně meta-model, aniž bychom ztratili jakékoliv informace? Toto lze snadno předvést na příkladu [3].
„Například potřebujeme metamodel, který nám dovolí promítnout třídy do objektové analýzy a designu. Náš koncept metamodelu bude vypadat nejspíš následovně: třída, atribut, metoda a dědičnost. Pokud se podíváme na požadavky, je zřejmé, že určitě se budou vyskytovat třídy, které budou mít atributy a metody. Je však dědičnost meta-třídou? Spíše se jedná o něco jako meta-vztah. A v tom právě tkví kvalita rozsahu meta-modelu. Pokud náš meta-model dokáže promítnout i ty požadavky, které se vyskytují řidčeji, případně jen občas, jedná se o model s dostatečným rozsahem.“
Jiným příkladem může být vytvoření metamodelu, následné vytvoření modelu reality podle tohoto modelu a následné předání celého projektu někomu úplně jinému, kdo nezná náš způsob myšlení. Pokud tento člověk dokáže správně interpretovat naše data, čili sémantiku ukrytou za modelem, vytvořili jsme prvotřídní meta-model.
Testování je základ úspěchu. I v případě metamodelu. Špatný vliv metamodelu je mnohem horší než špatný vliv samotného modelu. Kupříkladu v datovém modelování je mnohem horší špatná sémantika samotná, než špatná struktura dat či patné databázové schéma. Pokud je špatná sémantika, nelze již vytvořit nic lepšího. Ani nejlepší analytik nemůže v rámci daného metamodelu nic zlepšovat. Zlepšovat se pak dá jen metamodel samotný. Je zřejmé, že tento požadavek vlastně doplňuje požadavek na dostatečný rozsah metamodelu..
Na rozšiřitelnost bychom měli dbát především ze dvou důvodů.
Rozšiřitelnost je však sama o sobě velmi komplikovanou otázkou. Jakým způsobem rozšiřovat metamodel? Vytvářet nové koncepty a popisy? Rozdělovat koncepty a popis do dílčích částí? Spojovat je? Ať už se k rozšiřitelnosti postavíme jakýmkoliv způsobem, měl by metamodel zaručovat možnost vkládání nových myšlenek a konceptů tak jak se mění oblast, kterou má popisovat.
Stejně jako u většiny softwarových produktů, neexistuje pro metamodely žádná unifikovaná implementace. To, co u metamodelu vidíme, je to, co dostaneme. A proto musí s každým metamodelem jít ruku v ruce jeho přesná dokumentace, ať již ve formě popisu nebo formálního vyjádření. V opačném případě jsme odkázáni na metodu pokus – omyl.
Jádro myšlenky vývoje založeného na modelování (MDD – Model Driven Development) je zvýšit úroveň abstrakce a tím dosáhnout zvýšení produktivity. Tomuto trendu odpovídá i posutp OMG (Object Management Group), jež spravuje specifikaci UML (Unified Modelling Language) a také MDA (Model Driven Architecture). Oba tyto standardy stále více prostupují vývoj založený na modelování.
Jedním z trendů posledních let Domain Specific Language (DSL). Tento trend se také vztahuje k vývoji založeném na modelování. Jedná se o specifický modelovací jazyk, který je určen pro popis specifického problému určité domény (oblasti). Podle definice OMG toho lze dosáhnout buď rozšířením UML nebo definováním zvláštních UML profilů. Lze též vytvořit zcela vlastní metamodel. Tak k tomuto problému přistupuje například Microsoft vytvářením tzv. „Model Factories.“, specifických matamodelových vzorů, jež slouží k vytváření modelů v různých doménách (oblastech). [4]
Vývoj založený na modelování se zasazuje na rapidním nárůstu vývoje DSL (Domain Specific Language). Modely jsou důležité, ale právě popisné jazyky vytváří základ jejich hodnoty.
Do metamodelování bychom mohli zařadit celou škálu dalších oblastí, kde se snažíme vytvořit schéma k popisu situací a problémů. Například sémantický web je též z velké části o metamodelování. Schéma pro popis modelů bychom objevili i v umělé inteligenci a dalších oblastech.
A nemusí se jednat jen oblasti IT/ICT. Do budoucna lze předvídat, že metamodelování bude nacházet další a další uplatnění a bude docházet k mohutnějšímu rozšíření do dalších oblastí, kde model bude základem pro úspěšný vývoj.
1. Jareš, Pavel Bc., Meta-CASE nástroj, http://metacase.ree-systems.cz/data/dp.doc
2. Tománek, Petr, Hradecká Petra, Metamodelování a problematika jeho nasazení a použití ve firemní praxi, zimní semestr 2007/2008, [online] http://panrepa.org/CASE/zima2007/meta_case_zima2007.pdf
3. How do I tell a good metamodel from a bad one?, http://www.metamodel.com/staticpages/index.php?page=20021010225607569
4. Nytun, J.P., Modelling, Monday, August 27, 2007, http://fag.grm.hia.no/ikt502/year2007/lecturePresentations/jan/H07-1-Semantic-triangle.pdf