Vysoká škola ekonomická v Praze. Nástroje meta-case



Podobné dokumenty
TÉMATICKÝ OKRUH Softwarové inženýrství

Obsah. Zpracoval:

Modelování procesů s využitím MS Visio.

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Analýza a modelování dat. Helena Palovská

UML. Unified Modeling Language. Součásti UML

Vysoká škola ekonomická v Praze. Fakulta informatiky a statistiky. Katedra informačních technologií. Nástroje meta-case

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

7 Jazyk UML (Unified Modeling Language)

1. Dědičnost a polymorfismus

ÚVOD DO SOFTWAROVÉHO INŽENÝRSTVÍ

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Využití SysML pro tvorbu modelů v systémovém inženýrství

CASE. Jaroslav Žáček

7 Jazyk UML (Unified Modeling Language)

PŘÍLOHA C Požadavky na Dokumentaci

Vysoká Škola Ekonomická - Fakulta informatiky a statistiky. 4IT450 CASE Computer aided systems engineering

Unifikovaný modelovací jazyk UML

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Testování aplikace Facebook Messenger pro Windows Phone 8.1

UML - opakování I N G. M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Principy UML. Clear View Training 2005 v2.2 1

7.3 Diagramy tříd - základy

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Studie webů automobilek

Informační média a služby

CASE nástroje. Jaroslav Žáček

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Analýza a Návrh. Analýza

6 Objektově-orientovaný vývoj programového vybavení

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

UML a jeho použití v procesu vývoje. Jaroslav Žáček jaroslav.zacek@osu.cz

Metodika analýzy. Příloha č. 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

StatSoft Jak vyzrát na datum

MBI - technologická realizace modelu

4 ARCHITEKTURA PODNIKOVÝCH PROCESŮ S ARISEM

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Seznámení s prostředím dot.net Framework

10 Metody a metodologie strukturované analýzy

Vývoj informačních systémů. Obecně o IS

7.5 Diagram tříd pokročilé techniky

Objekty, třídy, vazby 2006 UOMO 30

10 Balíčky, grafické znázornění tříd, základy zapozdření

DBS Konceptuální modelování

Testování webového rozhraní obchodu Czech Computer Semestrální práce z předmětu Testování uživatelského rozhraní (A7B39TUR)

7.3 Diagramy tříd - základy

Vývoj informačních systémů. Přehled témat a úkolů

Řízení reálných projektů, agilní metodiky

Communist Party of Nepal (Unified Marxist-Leninist) Unified Modeling Language University of Massachusetts Lowell User-mode Linux.

Vývoj informačních systémů. Přehled témat a úkolů

EXTRAKT z mezinárodní normy

3 druhy UML diagramů

RUP - Disciplíny. Jaroslav Žáček jaroslav.zacek@osu.cz

7.5 Diagram tříd pokročilé techniky

Business Process Modeling Notation

Předmluva 11. Poděkování 11 O autorech 12 Úvodem 12 Komu je tato kniha určena 13 Jak byste měli tuto knihu číst 13 Web 14

Nejvhodnější rozhodovací styl v daném kontextu

Kdy se narodil... Vypracovali: Mrkývka Vojtěch, Mrázek Ondřej, Novotná Marie. Předmět: PLIN08 Projekty II. Semestr: Jaro 2015

Vysoká škola ekonomická v Praze. Fakulta informatiky a statistiky. Katedra informačních technologií. Nástroje meta-case

PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI

Úvod do programovacího jazyka Python

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY

Úvod do programovacího jazyka Python

1. Programování proti rozhraní

Metodická pomůcka pro specifikaci dočasných opatření. doc. Ing. Pavel Šenovský, Ph.D. Ing. Pavlína Ježková

Informační systémy 2008/2009. Radim Farana. Obsah. UML - charakteristika

Dobré UX jako nejlepší marketingový nástroj mobilních aplikací. Vladimír Korbel

Správa obsahu webové platformy

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Systém elektronického rádce v životních situacích portálu

PRODUKTY. Tovek Tools

Přístupnost webů knihoven příklady dobré a špatné praxe. Radek PAVLÍČEK, TyfloCentrum Brno, o. p. s., projekt Blind Friendly Web

Diagramy tříd - základy

Objektová tvorba SW, Analýza požadavků 2006 UOMO 53

Mobilní zpravodajská aplikace idnes. A7B39PDA - Principy tvorby mobilních aplikací

Modelem řízený vývoj. SWI 1 Jan Kryštof

Ruční návrh Připravíme si odpovědi na základní otázky Co chceme řešit (projektovat) a proč Komu to bude sloužit Jaký užitek z toho bude mít uživatel I

Plug-in pro správu požadavků a sledování postupu vývoje

SOFTWAROVÉ INŽENÝRSTVÍ 1

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

TÉMATICKÝ OKRUH Softwarové inženýrství

2. Začlenění HCI do životního cyklu software

1 Strukturované programování

Využití tabulkového procesoru MS Excel

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

PROBLÉMY A SPECIFIKA VÝVOJE SOFTWARE

PRODUKTY. Tovek Tools

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

SOFTWAROVÁ PODPORA TVORBY PROJEKTŮ

PV167 Projekt z obj. návrhu IS. 26. března 2008

CATIA V5 vs CATIA V4 Martina Staňková

Vyřešené teoretické otázky do OOP ( )

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Transkript:

Vysoká škola ekonomická v Praze Fakulta Informatiky a statistiky Katedra informačních technologií Nástroje meta-case Semestrální práce z předmětu 4it450 - CASE (Computer Aided System Engineering) Přednášející: doc. Ing Václav Řepa, Csc. Vypracovali: Filip Balcar František Odehnal Václav Pospíšil Josef Zdvihal Pavel Zelený Zimní semestr 2009/2010

Obsah 1 Cíl práce...4 2 Metamodelování...4 2.1 CASE vs. metacase...4 2.2 metacase...5 2.2.1 Způsoby použití metacase nástrojů...5 2.3 Metamodelovací prostředky...6 2.3.1 GOPRR...6 2.3.2 MOF...7 3 Worst practices při tvorbě jazyka DSM...9 3.1 Úvodní předsudky...9 3.1.1 Vytvořit Case nástroj může kdokoli...9 3.1.2 Jsem dost chytrý a nepotřebuju pomoc... 10 3.1.3 Nedostatek oborových znalostí... 10 3.1.4 Teoretická dokonalost jazyka... 10 3.2 Určení zdroje pro koncepci jazyka... 11 3.2.1 Rozšíření obecného jazyka... 11 3.2.2 Grafický programovací jazyk... 11 3.2.3 Nástroj... 11 3.3 Výsledná podoba DSM jazyka... 14 3.3.1 Obecné vs. Specifické koncepty... 14 3.3.2 Přílišná orientace na některé specifické prvky v oboru... 14 3.3.3 Neochota měnit první verzi jazyka... 14 3.4 Jazyková notace... 15 3.4.1 Výběr vhodné jazykové notace... 15 3.4.2 Jednoduché značení... 15 3.5 Použitelnost jazyka... 16 3.5.1 Špatný odhad skutečného použití jazyka v praxi (42 %)... 16 2

3.5.2 Nedostatek manuálů (21 %)... 17 3.5.3 Stagnace jazyka (37 %)... 17 4 MOFLON praktická část... 18 4.1.1 Pořízení a instalace... 18 4.1.2 Logická struktura programu... 19 4.1.3 Základní objekty... 20 4.1.4 Vztahy... 20 4.1.5 Operace... 21 4.1.6 Vytvoření grafického rozhraní... 23 4.1.7 OCL... 25 4.1.8 Závěr a zhodnocení práce s MOFLONem... 25 5 Závěr... 26 6 Zdroje... 27 3

1 Cíl práce Cílem této semestrální práce je především seznámit čtenáře s oborem metamodelování/metamodelů a vybranými metamodelovacími prostředky. Tento cíl naplňují postupně tři tematicky odlišné oddíly. První část dokumentu se věnuje obecnému představení oboru metamodelování a konkrétnější specifikaci metamodelovacích přístupů GOPRR a MOF. Druhá část práce je založena na studii Worst Practices for Domain-Specific Modeling, kterou v druhé polovině roku 2009 sestavili Steven Kelly a Risto Pohjonen. Tato část semestrální práce se, podobně jako její předobraz, zabývá těmi nejčastějšími chybami při tvorbě jazyka DSM 1 z pohledu profesionálů, dlouhodobě se touto činností zabývajících. Závěrečná část práce si klade za cíl seznámit čtenáře s open-source modelovacím nástrojem Moflon a možnostmi jeho použití. Za účelem představení nástroje Moflon byla použita z oficiálních stránek volně dostupná instalace. Hlavním důvodem pro výběr právě této aplikace byla právě její snadná dostupnost kterémukoli zájemci. 2 Metamodelování Aby bylo naprosto zřejmé, co metamodelování znamená, je potřeba vysvětlit, co je to modelování respektive, co je to model. Lze říci, že model je zjednodušená reprezentace nějakého objektu nebo systému z určitého úhlu pohledu. Někdy se také uvádí, že je to popis skutečnosti v reálném světě. (1) Předpona meta znázorňuje přidání další vrstvy abstrakce. Jestliže je tedy modelování zjednodušený popis skutečnosti, pak metamodel je popisem tohoto modelu. Metamodelování může být realizováno v několika vrstvách, přičemž platí, že model n-té vrstvy je metamodelem vrstvy n+1. 2.1 CASE vs. metacase Na rozdíl od klasického CASE nástroje, který je pevně svázán s určitým typem modelování a notací, metacase nástroje obsahují další vrstvy abstrakce (kterých je z pravidla v rozmezí mezi 2-4), rozdíl ilustruje Obr. 1. 1 DSM (Domain Specific Modeling) DSM je metoda softwarového inženýrství sloužící k vývoji a designu systémů, například počítačového softwaru. Zahrnuje systematické využívání grafického DSL (Domain Specific Language), který je využíván k reprezentaci jednotlivých částí a prvků systému a jejich vztahů. (13) DSM typicky obsahuje možnost automatického generování funkčního zdrojového kódu na základě obecně a abstraktně(ovšem pro danou organizaci vhodně) namodelované reality a velmi tak usnadnit další práci (při programování softwaru (nebo právě tvorbě konkrétních modelů reality)), případně také zabránit chybám, které mohou při manuální tvorbě vzniknout. (14) Podobné tendence se už v oboru CASE a UML nástrojů objevovaly dříve, vždy se však jednalo o velmi obecnou platformu. Hlavní výhodou DSM je v tomto směru právě fakt, že má každá organizace možnost vyvinout si modelovací jazyk přímo na míru svým potřebám. (13) 4

Obr. 1 CASE vs. metacase (2) Tyto vrstvy by měly přispět k tomu, aby byl metacase nástroj co možná nejflexibilnější a nezávislý na použité notaci. Platí zde pravidlo, že níže položená vrstva je v podstatě jakýmsi metamodelem vrstvy položené výše. Tím je docíleno toho, že v případě nějaké potřebné změny není třeba upravovat zdrojové kódy, nýbrž stačí udělat úpravu v některém z metamodelů. 2.2 metacase 2.2.1 Způsoby použití metacase nástrojů V zásadě lze metacase nástroje použít ke dvěma základním účelům. (2) 2.2.1.1 MetaCASE nástroj jako koncový produkt První způsob použití je metacase nástroj jako produkt pro koncového zákazníka. V praxi to funguje tak, že si organizace pořídí nějaký z metacase nástrojů a na jeho základě si vytvoří, respektive popíše, jak má vypadat a jak se má chovat jejich v podstatě na míru šitý CASE nástroj. Tento způsob však není příliš běžný. Málokterá organizace má natolik velké ambice, aby si vytvářela vlastní metodiku společně s jejími nástroji. Tento vývoj obvykle stojí velké úsilí a ve většině případů není ani opodstatněný, protože na trhu CASE nástrojů existuje celá řada produktů s různým zaměřením. 5

2.2.1.2 Interní verze vytvářeného CASE nástroje V tomto případě slouží metacase nástroj jako podpůrný prostředek pro vytváření nějakého konkrétního CASE nástroje. Tím, že je konečný CASE nástroj složen z nějaké meta vrstvy, je budoucí inovace tohoto nástroje daleko jednodušší. Stačí pouze pomocí meta vrstvy změnit popis nástroje a nemusí se měnit zdrojový kód. Konkrétním příkladem využití metacase nástroje jako koncového produktu může být metaedit+ Tento způsob použití má ještě další ne malou výhodu. Mnoho společností vytváří více CASE nástrojů, které jsou si podobné. Za použití metacase mohou mít tyto nástroje společné meta vrstvy a konečný definovaný nástroj se pak liší v tom nejlepším případě pouze jednou nejvyšší vrstvou. Tento přístup nejen, že šetří prostředky, které by byly nutné vynaložit na vytvoření báze pro vytváření CASE nástroje, navíc jsou vývojáři seznámeni prakticky se všemi nástroji, protože obsahují společné prvky meta vrstvy. 2.3 Metamodelovací prostředky Metamodelovací metody definují rámec pro metamodelování, který obvykle obsahuje definici metametamodelu a metamodelovacího jazyku, pomocí kterého je definován metamodel. Pro potřeby metamodelování v informačním a softwarovém inženýrství bylo vyvinuto mnoho přístupů pro tvorbu metamodelu. (3) V této práci se blíže seznámíme se dvěma z nich GOPRR a MOF. Ve starších pracích velmi často zmiňovaný přístup COMMA zde rozebírat nebudeme, protože již v dnešní době není vyvíjen a ani neexistuje žádné napojení na CASE nástroje, které by z toho metamodelovacího prostředku udělalo také praktickou záležitost. Máte-li zájem o detailnější popis COMMA, nahlédněte do starších prací našich kolegů nebo do (3). Dále by se slušelo říct, že většina dnešních metamodelovacích jazyků má svůj základ v Entity- Relationship modelu, dnes spíš známé jako ER model. Jak napovídá samotný anglický název, jedná se o vyobrazení entit a jejich vzájemných vztahů. (4) 2.3.1 GOPRR Název GOPRR je zkratkou Graph-Object-Property-Relationship-Role, což jsou základní stavební kameny této modelovací techniky (viz dále). GOPRR vznikl jako součást disertační práce Stevena Kellyho (5). Jelikož se jedná spíš o evoluci původního ORPP popíšeme si rovnou GORPP. Blíže k základním prvkům GOPRR: Objects objekty, které se skládají z nezávislých a identifikovatelných návrhů objektů. Tyto se obvykle zobrazují jako obrazce v diagramech, a mohou mít vlastnosti, jako jsou např. 6

názvy. Příklady takových objektů jsou entity v ER diagramu nebo procesy v diagramu datových toků (DFD - Data Flow Diagram). Properties vlastnosti (atributy) objektů, které mohou být zpřístupněny jako části objektů nebo vztahů. Vlastnosti se v diagramech obvykle zobrazují jako textové popisky. Příklad vlastnosti (atributu) je počet procesů v DFD. Relationships vztahy mezi objekty, které mohou mít vlastnosti. Vztahy se obvykle zobrazují jako čáry mezi obrazci v diagramech. Stejně tak to ale mohou být i slovesa v textech. Příkladem vztahu je datový tok v DFD. Roles role definují způsoby, jimiž se objekty podílejí na specifických vztazích. V diagramech rolí se obvykle zobrazují jako koncové body vztahů (např. šipky). Role také mohou mít vlastnosti. Příkladem role je rovná šipka, která ukazuje, od kterého objektu k druhému putuje datový tok. To hlavní, čím GORPP obohacuje svého předchůdce je prvek Graph, který umožňuje různé zobrazení objektů. Na stejnou věc tak lze nahlížet z různých úhlů. Stejně tak lze nahlížet na stejnou věc v jiném grafickém podání. Takže je potom možné na vše pohlížet také jako na tabulku, hypertext, matici a samozřejmě také klasické obrázkové pojetí. (5) Na GOPRR je mimo jiné postaven známý metacase nástroj MetaEdit+. 2.3.2 MOF MOF (MetaObject Facility) je rozšiřitelný, platformně nezávislý framework pro definování, manipulaci a integraci metadat a dat. MOF je vyvíjen standardizační skupinou OMG, která stojí také za vývojem UML a XMI. Tyto další dva standardy jsou zde zmíněny záměrně úzce totiž s MOF souvisí. Nejdřív si je ale vysvětlíme: UML (Unified Modeling Language) je souhrnem především grafických notací k vyjádření analytických a návrhových modelů. UML podporuje objektově orientovaný přístup k analýze, návrhu a popisu programových systémů. UML neobsahuje způsob, jak se má používat, ani neobsahuje metodiku(y) jak analyzovat, specifikovat či navrhovat programové systémy. (6) XMI (XML Metadata Interchange) standard pro výměnu metadat skrze XML. Hlavní využití je pro výměnu metadat, která mohou být vyjádřena pomocí MOF. (7) Vztah je takový, že UML je ve své podstatě abstraktní jazyk pro popis metadat. UML je tedy metamodelem. MOF, jako abstraktní jazyk pro popis metamodelů, je tak meta-metamodelem. UML tedy lze chápat jako vrstvu pod MOF. Nelze to ovšem říct takto striktně. MOF a UML si jsou 7

strukturálně velmi podobné a v mnoha případech si prvky v MOF a UML odpovídají. XMI potom mezi těmito vrstvami zajišťuje, jak již bylo zmíněno, výměnu dat. 2.3.2.1 Čtyřvrstvá architektura MOF staví na čtyřvrstvé architektuře, kdy vrstva vyšší je metavrstvou té nižší. Lépe než tisíc slov tuto problematiku popíše Obr. 2. Na vrchol si dosaďme namísto nápisu Meta-metamodel právě MOF (obrázek je však univerzální a stejně dobře si tam můžeme dosadit jiný metamodelovací prostředek). Obr. 2 Čtyřvrstvá architektura MOF (3) 8

3 Worst practices při tvorbě jazyka DSM Na přelomu července a srpna roku 2009 vydali Steven Kelly a Risto Pohjonen 2 studii zabývající se Worst practices souvisejících s tvorbou DSM jazyka. K této studii byli dle jejich názoru podníceni malým množstvím kvalitní literatury, díky čemuž mnoho čtenářů po přečtení nemělo problematiku zcela ujasněnou a často opakovali základní chyby. Chtěli proto připojit k radám, jak vytvářet vlastní DSM nástroje, i rady co nedělat, aby začátečník byl schopen zavčasu rozeznat, že se ubírá špatným směrem. Svoji studii mají podloženou analýzou 76 projektů zaměřených na tvorbu DSM. Tyto projekty byly uskutečněny v průběhu 15 let, na 4 kontinentech a lišily se svým rozsahem. Zahrnovaly oblasti z automobilové sféry, letectví, telekomunikací, zdravotnictví, IT a další. Největší zastoupení mají evropské projekty a nejčastěji byla používána aplikace MetaEdit+. Autoři seřadili jednotlivé problémy podle toho, jak se s nimi můžeme setkat v průběhu životního cyklu projektu. První vážné chyby mohou nastat již před započetím projektu, pokud k němu zaujmeme špatný postoj. Nejčastější prohřešky jsou uvedeny dále v tematických podkapitolách. 3.1 Úvodní předsudky 3.1.1 Vytvořit Case nástroj může kdokoli Kvalitní teoretické základy o metacase i dlouholeté praktické zkušenosti s jejich tvorbou, stejně tak se softwarovými systémy a tvorbou obecných modelovacích jazyků mohou být velmi užitečné, když vytváříme obecně zaměřený modelovací jazyk. Nicméně to příliš neplatí, pokud vytváříme DSM jazyk. V tom případě se totiž střetáváme s trochu jiným problémem. Tyto jazyky jsou jednodušší na tvorbu z pohledu programátora, ale na druhou stranu požadují hluboké porozumění a zkušenosti z oboru, kterým se zabýváme. (8) Metacase nástroj, který bude v podstatě teprve v budoucnu sloužit jako stavební kámen či prostředek k další práci, musí totiž v sobě zahrnovat veškerou funkcionalitu a možnosti, které by mohly být v budoucnu potřebné a právě k tomu je třeba hluboká znalost problematiky, zkušenost z předešlých projektů a prozíravost do budoucna. Expert v oboru totiž na rozdíl od začátečníka typicky vytvoří 3 hlavní části budoucího DSM, obvykle v tomto pořadí (ačkoli velké množství činností probíhá paralelně a je postupem času aktualizováno) 2 Steven Kelly je šéf technologického oddělení ve firmě MetaCase s více než patnáctiletou zkušeností s tvorbou a vývojem DSM jazyků. Risto Pohjonen je vývojářem a konzultantem v MetaCase. 9

knihovnu komponent DSM systému (která, ačkoli není klíčová, práci a orientaci velmi usnadní), vlastní modelovací jazyk spolu s editorem a především generátor kódu. (9) 3.1.2 Jsem dost chytrý a nepotřebuju pomoc Rozhodně je potřeba se vyhnout přehnanému sebevědomí a neignorovat pomoc ostatních, když nám radí, jak vytvořit dobrý jazyk. Přestože je pro firmu příjemné vidět vlastní lidi jako klíčovou součást při tvorbě vlastního DSM jazyka, není dobré být příliš lhostejný k ostatním názorům, protože se to nakonec téměř vždy ukáže kontraproduktivní. Platí zde krutá pravda: Kýmkoliv první vytvořený jazyk není mistrovským dílem. (8) V tomto případě bude samozřejmě rozhodující, jak rychle firma potřebuje vytvořit DSM jazyk a jak je to pro ni kritická záležitost. Pokud by měla dostatek času na testování a úpravy a nepotřebovala by vytvářet příliš složitý DSM jazyk, tak nemusí utrácet za externí konzultantské služby a může se spolehnout na svůj tým. Vytvořila by si také vlastní metodiku a znalostní bázi pro budoucí změny. 3.1.3 Nedostatek oborových znalostí Vytváření DSM jazyků vyžaduje opravdu dobré oborové znalosti. Občas společnosti podcení situaci a přesouvají veškerou zodpovědnost na letní brigádníky nebo dočasné externisty, přičemž si vůbec neuvědomují potřebu důkladné znalosti oborové problematiky. Jazyk musí mít nastavené přiměřené hranice, aby aplikace, které se pomocí něho budou programovat, mohly být případně rozšířeny. (8) Tomuto problému se zřejmě podařilo vyhnout společnosti Nokia, která si podle jejich zveřejněné Case study na pořízení DSM nástroje, vytyčila čtyři strategické cíle. Jedním z nich je právě shrnutí znalostní oborové báze, v které jsou zahrnuty jen relevantní části softwaru pro mobilní telefony. Tato báze pak pomáhá vývojářům, aby byli zaměřeni jen na charakteristické potřebné funkcionality. Celkově také pomáhá k rychlejšímu procesu vývoje a snazšímu zaučení nových zaměstnanců. (10) Další možné problémy se mohou projevit, když jsou převáděny oborové koncepty do DSM jazyka. Projevují se nedostatkem abstraktního myšlení nebo nedostatkem zkušeností s tvorbou netriviálních systémů. Takovéto zkušenosti může člověk získat jinou cestou než programováním, nicméně programování je zřejmě nejlepším učitelem. Nabízí totiž základní poučky, jako neopakuj se nebo duplicitní kód nebo data, a principy jako je modularizace, která pomáhá těsné soudržnosti a malé závislosti mezi jednotlivými systémy. Tyto principy jsou stejně důležité, ať vytváříme programovací jazyk nebo aplikaci. (8) 3.1.4 Teoretická dokonalost jazyka Hnacím motorem pro tento druh chyby je především strach. Pro většinu lidí je racionální být opatrný, když vstupují do neznámého prostředí, což je v našem případě první tvorba DSM jazyka. Problém zde 10

nastává, když chceme řešit každou malou nesrovnalost a naše motto je: Nástroj není použitelný, dokud ho nemůžeš použít na všechno. DSM jazyk není o dosažení perfektního stavu, ale o vytvoření něčeho co funguje v praxi. Vždy bude nějaký případ, s kterým si jazyk nebude umět poradit! Důležitou otázkou je, jak často se budou tyto případy objevovat v praxi a jakým jiným způsobem se s nimi půjde vypořádat. Abychom se vyhnuli těmto chybám, je potřeba se soustředit na hlavní náležitosti a vytvářet prototyp jazyka pro ně. (8) 3.2 Určení zdroje pro koncepci jazyka Prvním krokem při budování DSM jazyka je identifikování jeho koncepce. Námi zkoumaný obor je ideálním zdrojem a přílišné spoléhání na další zdroje je cestou do záhuby. 3.2.1 Rozšíření obecného jazyka Je velmi lákavé začít budovat na již dříve vytvořených jazycích, ale takové jazyky jsou obvykle příliš obecné nebo nevyhovující pro konkrétní obor. Oddělení některých částí jazyka a přidání nových je často více práce nežli začít od nuly. Avšak říká se, že je obvykle dobré převzít základní myšlenky a koncepty fungujícího jazyka, jako jsou stavy, toky dat, omezení a dědictví. Teoreticky může nastat i opačná situace, kdy je existující jazyk příliš jednoduchý. V tom případě je jednodušší ho rozšířit, ale to v praxi není moc běžné. (8) Rozšiřování cizího DSM také odporuje jedné z hlavních deviz DSM jazyků jejich přizpůsobitelnost na míru dané organizaci. 3.2.2 Grafický programovací jazyk Ačkoliv programovací jazykové prvky, jako jsou možnosti výběru nebo cykly, mohou být v DSM jazycích užitečné, neměly by být hlavní oblastí zájmu na úkor koncepce problémového oboru. V tomto případě je riziko, že skončíme u programování obecného grafického jazyka místo u DSM a vytvoříme tak jazyk s nízkou hladinou abstrakce. Grafické programovací jazyky tohoto typu mají často méně výrazových možností a obtížněji se s nimi pracuje, v porovnání s manuálním kódem. (8) 3.2.3 Nástroj Důležitým aspektem pro vývoj software je podpora dobrým vývojovým nástrojem. Musíme si dát pozor, aby nás daný nástroj nezačal omezovat svými možnostmi. Jednotlivé DSM nástroje kladou odlišný důraz na různé části DSM a ne všechny nástroje podporují všechny oblasti. Používání slabého nebo málo vyhovujícího nástroje by mohlo vést k rozhodnutí raději použít to, co nástroj podporuje, nežli to co je potřebné a užitečné pro zkoumaný obor nebo budoucího tvůrce modelů. Na Obr. 3a vidíme, jak může nevhodný nástroj způsobit nepřehlednost modelu. Na Obr. 3b je tentýž model vytvořený s vhodnějším nástrojem na první pohled je tento model přehlednější. (8) 11

Pokud budeme často vydávat nové verze softwaru, je také důležitá možnost generování dokumentace spolu s generováním kódu, což zaručuje její stálou aktuálnost. Kvalita, přehlednost a srozumitelnost dokumentace pro uživatele se také zlepší, pokud její podobu upravíme podle firemních standardů, na které jsou již zaměstnanci zvyklí. (11) 12

Obr. 3 Přehlednost modelu 13

3.3 Výsledná podoba DSM jazyka 3.3.1 Obecné vs. Specifické koncepty Hledání rovnováhy mezi obecností a specifičností modelu je klíčový faktor při vývoji DSM a je to také jedna z oblastí, ve které se nejvíce chybuje. Vývojáři často vytvoří jazyk, který je pro konkrétní oblast příliš konkrétní nebo naopak příliš obecný. Dobrým porovnáním je v tomto případě vyzkoušet vlastní jazyk i pro modelování v jiné oblasti nežli v námi zamýšlené. Pokud to lze, je náš jazyk příliš obecný. Opačným extrémním případem je, když má jazyk příliš mnoho konceptů, které jsou sémanticky velmi jednoduché nebo se překrývají. V tom případě se vyskytují problémy při zavádění a užívání jazyka. Přehnaně komplexní jazyky jsou těžko naučitelné, zvládnutelné a udržovatelné. (8) 3.3.2 Přílišná orientace na některé specifické prvky v oboru Podle definice by měl být DSM jazyk výrazně koncepčně zaměřen na daný obor. Naneštěstí vývojáři DSM jazyka občas toto pravidlo přehánějí a zaměřují se příliš na některé prvky nebo koncept na úkor ostatních. Obzvláště nastává problém, pokud takovýto koncept má jen malý nebo žádný význam v konečném řešení. Takováto situace obvykle nastává, pokud se dovolí ovlivňovat vývoj jazyka velkému množství lidí. Je dobré poslechnout si rozdílné názory, aby vývojář poznal daný obor a budoucí využití jazyka, ale měl by si stále ponechat vlastní jasnou vizi a cíle jazyka. Vývojáři také někdy bývají tlačeni, aby do jazyka zabudovali každou maličkost vyskytující se v daném oboru, a nedostanou prostor rozhodnout, co je a co není důležité do jazyka zahrnout. Spousta DSM nástrojů jsou základní softwarové produkty a jejich jazyky by měly modelovat různé varianty. (8) 3.3.3 Neochota měnit první verzi jazyka Tato poměrně běžná chyba se objevuje z několika důvodů. Většina lidí nemá ráda radikální změnu hned prvního návrhu nebo dokonce jeho zrušení. Lidé si také většinou představují vývoj jazyka jako nějaký stereotypní proces a přehlížejí přirozené a jedinečné potřeby vývoje. Tato chyba může být také způsobena příliš vzdálenými vývojovými milníky v projektu. V tomto případě vývojáři často investují příliš úsilí a času do samotného vývoje bez toho, že by jazyk řádně otestovali v reálném prostředí, ale když pak něco nefunguje, je velmi nákladné se vrátit o krok zpět. Proto je potřeba vytvářet flexibilní DSM nástroje, které nám ušetří spoustu práce s předělávání modelů, při případné změně jazyka. Vývoj jazyka je nevyhnutelný a jeho modifikace je samozřejmě jednodušší pokud ho zná pouze pár lidí a pokud existuje jen několik modelů. Na druhou stranu je v takovém případě málo prověřen praxí a bude zřejmě obsahovat více chyb. (8) 14

3.4 Jazyková notace 3.4.1 Výběr vhodné jazykové notace Je všeobecně zažité paradigma, že v oblasti DSM jsou reprezentovány systémy pomocí textu nebo grafických diagramů. Ačkoli 75 % lidí z celé společnosti preferuje visuální znázornění před textovým popisem, vysoké procento vývojářů a programátorů je náchylné právě k výběru textu vzhledem k tradičnímu rozšíření v oblasti programování. Ovšem výběr čistě na základě tradice je špatnou volbou, stejně tak jako ignorace dalších možností jako jsou matice, tabulky, formuláře nebo stromy. Volba notace by měla záviset na typu budoucích uživatelů, datové struktuře a na způsobu práce uživatelů s daty. Tato chyba nebývá občas tolik zdůrazňována, protože se nijak netýká různých nástrojů (např. MetaEdit+ obsahuje širokou škálu zobrazovacích možností, jak reprezentovat konkrétní situaci nebo model), ale týká se spíše lidského faktoru. (8) 3.4.2 Jednoduché značení Jednu z nejrozšířenějších chyb je možné nalézt přímo v zápisu jazyka, konkrétně v jeho symbolech nebo ikonách. Na rozdíl od více abstraktních nebo všeobecných jazyků, jazyky DSM se zdají být přátelské a intuitivní pro konkrétní řešenou oblast. Avšak příliš často se v jazyku objevují symboly zobrazované jako jednoduché boxy s popisy. Špatným popisem se potom celý model může zhroutit, navíc není na první pohled chyba viditelná. 15

Obr. 4 Ukazuje, jak lze i jednoduchý model znepřehlednit užitím pouze jednoho tvaru objektu a jeho proměnné barvy. Je známo, že nejvhodnějšími symboly jsou piktogramy. Symboly mají taktéž estetickou roli, ale jen skutečně kvalitní programátor má dostatek zkušeností s abstraktním náhledem na modelování a design a navíc je dostatečně graficky zručný, že dokáže vytvořit přehledné a jasné symboly. (8) 3.5 Použitelnost jazyka Tvůrci jazyka často zapomínají, že jazyk je vyvíjen, aby byl používán a aby sloužil uživatelům. Procenta u jednotlivých problémů vycházejí z jazyků, které již byly používány významným počtem lidí, když nepočítáme používání jejich tvůrci. 3.5.1 Špatný odhad skutečného použití jazyka v praxi (42 %) Je nesmírně těžké předpovědět, jak budou lidé používat nový systém nebo jak na sebe budou vzájemně reagovat jednotlivé problémy, pokud se objeví současně. Tvůrci jazyka často opomíjejí tato rizika. Aby měl jazyk nějakou hodnotu, tak musí uživatelům sloužit jak jeho komponenty, tak i jeho proces. To zahrnuje pět oblastí, na které je třeba se zaměřit. Zaprvé je potřeba se věnovat otázce mnohonásobného a opakovaného používání stejných informací. Aby uživatel nemusel několikrát kopírovat stejné informace, je dobré předem plánovat opětovné 16

použití a odkazy mezi modely. Mohla by pak nastat situace, kdy uživatel potřebuje jen lehce odlišný model, od toho který už má vytvořený, ale musí celý model překreslit od začátku. Navíc musíme dát pozor, aby modely, které jsou spolu propojené, měli mezi sebou co nejmenší závislost. Zadruhé, poloautomatické transformace modelů pomáhají uživatelům vytvářet více kódu rychle, ale se slabými dlouhodobými výsledky. Na rozdíl od plně automatizovaných nástrojů, uživatelé musí spravovat extra data tím, že editují zdrojové kódy nebo výsledky transformace modelu, jako v MDA (model-driven architecture). Cokoliv, co transformace mohou vytvořit automaticky, může být vytvořeno během fáze generování, to zaručí vyhnutí se tlakům při fázi správy a dovoluje transformacím kdykoliv se volně změnit. Třetím důležitým bodem je to, že vývojáři se často snaží ochránit tvůrce modelů tím, že vytvoří spoustu silně omezujících pravidel. Ty jsou, ale většinou silně otravné a tvůrcům modelů nedovolují ani dočasně porušit pravidla při jejich práci. Čtvrtým problémem je to, že uživatelé DSM často nekriticky použijí procesy, které byly sestaveny pro podporu vývoje pomocí zdrojového kódu. Často však slouží právě jen pro nápravu základních chyb dělaných při skupinové práci v jedno-uživatelském prostředí. Víceuživatelské prostředí založené na repository podporuje práci s modely mnohem lépe, nežli jasná modularizace a rozdělení práce. Odladění DSM modelů ve zdrojovém kódu je špatným nápadem, pokud se struktura modelů a zdrojového kódu razantně liší. Když není mapování mezi modelem a kódem jasné, je těžké najít breakpointy (instrukce k zastavení programu) nebo chyby v programu. V tom případě je lepší se vrátit do modelovacího nástroje a nechal modeláře nastavit breakpoint tam. (8) 3.5.2 Nedostatek manuálů (21 %) Ne každý uživatel může porozumět jazyku stejně jako jeho tvůrce. Ačkoliv použití známých oborových konceptů dělá DSM jazyk snadněji pochopitelným, neznamená to, že s ním budou uživatelé hned umět pracovat. Tvorba jazyka nekončí když vše funguje, ale je potřeba vytvořit kvalitní dokumentaci a tréninkové materiály, které je dobré prodiskutovat s uživateli. DSM průzkumy ukazují, že nedostatky tohoto typu vedou k problémům a dlouhodobému odporu i potom co se podmínky zlepší. Proto je užitečné zapojit uživatele do vývoje, abychom dostali zavčasu zpětnou vazbu a dosáhli hladšího přijetí našeho nástroje. (8) 3.5.3 Stagnace jazyka (37 %) Úspěšné nasazení DSM jazyka ovlivňuje spoustu modelů i modelářů, a platí, že čím více jich je, tím těžší je rozhodnutí měnit jazyk. Ačkoliv nejnovější nástroje umějí automaticky po změně jazyka změnit i modely, tak nemohou umět změnit mozek vývojářů. Naštěstí zkušenosti ukazují, že změny v 17

oboru, které je potřeba také upravit do jazyka, jsou většinou relativně dobře přijímané. Právě proto by měly být změny prováděny nejlépe okamžitě. Správa jazyka by také neměla být přenechávána někomu, kdo danému oboru nerozumí. Zásadně měnit jazyk po několika letech nemusí fungovat a určitě bude přinášet komplikace při upgradu modelů a zaškolování uživatelů. Při masivní změně jazyka by také stálo za to zvážit, zda nevytvořit rovnou nový jazyk. (8) 4 MOFLON praktická část V této části práci se pokusíme nastínit, jakým způsobem lze pracovat s nástrojem MOFLON. Nejedná se však o kompletní výčet funkcionality, nýbrž krátké seznámení se základními vlastnostmi tohoto programu. Open source modelovací nástroj Moflon byl poprvé veřejnosti představen na konferenci ECMDA v roce 2006. Jeho první verze Moflon 1.0 vyšla v prosinci 2006. Moflon umožňuje uživatelům namodelovat domain-specific metamodely odpovídajícího softwaru nebo systému. Navíc může být chování takovéhoto systému vizuálně modelováno rule-based způsobem. V neposlední řadě je umožněno vizuálně specifikovat a kontrolovat konzistenci jednotlivých modelů stejně jako integrovat a propojovat jednotlivé modely mezi sebou. Ze všeho, co uživatel namodeluje, umí program vygenerovat Java kód, se kterým je možno pracovat dále pomocí Java Metadata Interface. Co se týče podporovaných standardů, Moflon umožnuje uživateli navrhovat a upravovat vlastní DML pomocí MOF 2.0 standardu. Dalším důležitým standardem je OCL 2.0, který doplňuje vizuální zobrazení modelu pomocí MOF 2.0 textem a poskytuje tak dodatečné informace, které nelze vyjádřit vizuálně. V neposlední řadě je to již zmiňovaný standard JMI 1.0, který usnadňuje uživateli namapovat MOF specifikace přes Java kód do Java rozhraní. (12) 4.1.1 Pořízení a instalace Program lze stáhnout z oficiálních stránek 3. Instalace probíhá jako u každého jiného softwaru. Rozdíl je pouze v tom, že je nutné zvolit editor, který bude použit pro popis vytvořených metamodelů. Dále pak generátor kódu MOMoC, který vygeneruje JAVA kód. MOFLON lze spustit ve více uživatelských módech. Pro tuto ukázku jsme zvolili začátečnické nastavení (begginer settings). 3 Dostupné z http://www.moflon.org/. 18

Před zahájením samotné práce je potřeba nadefinovat základní nastavení programu. Jedná se především o složku, do které se budou ukládat vygenerované soubory a o použité konvence názvosloví generovaných objektů. 4.1.2 Logická struktura programu Práce v MOFLONu je filozoficky navržena velice podobně ostatním aplikacím. Největším celkem je tzv. projekt (Project), který může obsahovat balíčky (packages). Ty obsahují dílčí objekty, jako jsou např. třídy (classes), vztahy (relationships), další balíčky apod (Obr. 5). Obr. 5 - Stromová struktura projektu Trochu nezvyklým způsobem je ale řešena viditelnost jednotlivých objektů v rámci různých balíčků. Objekty lze vzájemně provázat na základě jakéhosi kontraktu (importu). Vzniká tak další objekt, který nese informaci o tomto propojení (Obr. 6). Obr. 6 - Propojení balíčků na základě tzv. importů 19

4.1.3 Základní objekty MOFLON obsahuje tyto základní objekty: - Třída (class) - Primitivní typ (primitive type) - Datový typ (data type) - Výčet (enumeration) Všechny tyto základní objekty v podstatě odpovídají typům objektů v programovacím jazyce Java. Třídy, které jsou definovány v programu MOFLON, jsou následně vygenerovány jako třídy v Javě. V případě použití některého z atributů s datovým typem v některé z tříd, je vygenerován náležitý kód atp. Díky této provázanosti s jazykem Java se i zde projevuje silně objektově orientovaný přístup. Prakticky cokoli, co uživatel vytvoří je graficky znázorněno jako objekt. 4.1.4 Vztahy Podobně jako je tomu ve všech CASE nástrojích, i zde hrají velmi důležitou roli vztahy. MOFLON rozlišuje tyto druhy vztahů: Asociace, reference a generalizace. Asi nejčastěji používaným vztahem je asociace (Obr. 7). Pojetí tohoto vztahu se v zásadě nijak neliší od klasických CASE nástrojů. Některé modelovací nástroje však tento typ vztahu dekomponují na více typů. Obr. 7 - Asociace, kde oba prvky mají referenci na objekt druhé strany Asociace znázorňuje určitý vztah dvou objektů, kde je kvantitativní závislost určena na základě tzv. kardinalit. Důležité je také zvolit, zda bude objekt jedné strany asociace obsahovat odkaz na objekt strany druhé (klauzule set navigable). Lze také nastavit, zda se jedná o kompozici či asociaci. 20

Dalším vztahem je reference (Obr. 8). Na rozdíl od asociace je to vztah pouze jednostranný. Obr. 8 - Ukázka vztahu typu reference Posledním typem vztahů je generalizace. Program opět nepřekvapí ničím neobvyklým. Specializované objekty dědí vlastnosti a metody po svých předcích. Je tady však jedna drobnost. Ačkoli je program velmi úzce svázán s jazykem Java, který podporuje pouze dědičnost jednoho objektu, umožňuje MOFLON vícenásobnou dědičnost (Obr. 9). Obr. 9 - Ukázka vícenásobné dědičnosti třídy "InnerState" 4.1.5 Operace Zatímco pojetí objektů a vztahů je prakticky totožné jako u objektově orientovaného programování, definice operací je trochu odlišná. V tomto případě zachází MOFLON dál než na pouhé deklarování proměnných. Lze pomocí něj i navrhnout samotnou realizaci. Operace je z pravidla vázána na určitý vztah a akci, kdy se má vykonat. V momentě, kdy chce uživatel MOFLONu editovat operaci (add/edit operation body), přepne se editor do jiného módu, kde jsou použity naprosto jiné prvky. Notace i samotná myšlenka je velice podobná state chart diagramům. Pomocí ní lze v podstatě nadefinovat životní cyklus objektu. 21

Obr. 10 - Příklad definice operace. Konkrétně se jedná o operaci v rámci vztahu objektů "Diagram" - "Edge" Klasickým příkladem, kdy je potřeba tuto definici operace použít, je nastavení chování při zániku objektu. Např. při smazání diagramu je vhodné, aby byly smazány všechny objekty, které jsou jeho součástí tzn. s ním propojené (Obr. 11). 22

Obr. 11 - Ukázka diagramu, pomocí kterého se definují operace. Definuje, že v případě zániku diagramu mají zaniknout i všechny typu "Edge" a "Node" 4.1.6 Vytvoření grafického rozhraní Grafické rozhraní pro projekty lze tvořit za pomocí Eclipse pluginu GEF 4, který je volně dostupný na internetu. Pomocí tohoto pluginu a vygenerovaných zdrojových Java kódu z projektu v MOFLONu lze vytvořit vlastní Eclipse plugin, který bude připraven pro použití. 4 Dostupný z http://www.eclipse.org/gef/. 23

Obr. 12 - Výsledný program jako plugin v programu Eclipse Nejprve je potřeba vygenerovat zdrojové Java kódy. Kód je strukturován do složek podle vytvořených balíčků a obsahuje základní definici objektů, kde každý objekt má svůj soubor. Objekty používají kromě základních balíčků Javy (java.util.*), také balíčky pro tzv. reflexní programování (javax.jmi.reflect.*) a interní balíčky MOFLONu (org.moflon). Obr. 13 - Ukázka vygenerovaného kódu Dalším krokem je vytvoření vlastního pluginu v nástroji Eclipse, který jako zdrojové kódy použije právě MOFLONem vygenerované soubory. 24

Poslední krok je samotné vytvoření pluginu. 4.1.7 OCL MOFLON umožňuje definovat tzv. OCL omezení. Jedná se o standardizovaný jazyk pro komplementaci vizuálních MOF specifikací s textově vyjádřenými omezeními, které nemohou být rozumně vyjádřeny v grafické podobě. (12) Vzhledem k povaze OCL je jeho používání skutečným programováním. MOFLON pouze zajišťuje uživatelské rozhraní pro psaní samotného kódu a následné vygenerování souborů. Obr. 14 - Ukázka vytvoření OCL omezení 4.1.8 Závěr a zhodnocení práce s MOFLONem Program MOFLON je rozhodně program pro odborníky a programátory. Idea, že je možné, aby neprogramátor vytvořil v MOFLONu case nástroj je naprosto mylná. To ovšem asi ani nebylo jeho záměrem. MOFLON je aplikace napsaná v Javě, což je cítit při práci s kteroukoli její součástí. Jako vzhled uživatelského rozhraní je použit klasický Java look and feel, který se v dnešní době nedá považovat za uživatelsky přívětivý. V případě, že je projekt rozsáhlejší a obsahuje mnoho objektů respektive vztahů, vzrostou nároky na využitou paměť do neúměrně velkých rozměrů. I v případě použití počítače s procesorem 2 GHz a 4 GB RAM se práce s programem v některých případech nedala považovat za únosnou. Samotná ergonomie programu je také poněkud zastaralá. Objekty se nenanášejí na plátno kliknutím nebo přetažením, nýbrž vznikají již v momentu výběru typu objektu a následně se objeví na pravděpodobně náhodném místě. 25

Během práce s programem lze narazit na pár chyb, které znamenají tvorbu celého projektu od začátku. Vždy za to může funkce o krok zpět. Na programu MOFLON je potřeba ještě trochu zapracovat. Některé výtky (jako např. uživatelský vzhled či ergonomie) lze však v podstatě přehlédnout. Nejedná se totiž o program prodávaných ve velkém množství a jeho uživatelé ocení spíše věcnou stránku věci. 5 Závěr Metamodelování se v současné době používá pro stále větší počet úloh. Mezi jeho nejdůležitější úkoly patří zajištění interoperability metod, integrace dat a systémů a samozřejmě i generování zdrojových kódů z modelů. V neposlední řadě je to samozřejmě i vytváření nových metodologií ME neboli Method Engineering. Vzhledem k rychlému vývoji a změnám v oblasti modelování informačních systému (především co se týče velkých konzultantských společností) je vhodné používat místo tradičních CASE nástrojů právě nástroje MetaCASE. Díky možnosti modelování vlastních metod např. doplňování symbolů a vazeb a vůbec vlastní definování grafické prezentace modelu se tyto nástroje stávají velkým pomocníkem při modelování složitých systémů. Budoucnost modelování je možné najít právě v MetaCASE nástrojích, které nám umožňují snadno upravovat a měnit používané metody dokonce i v průběhu projektu a to všechno bez nutnosti měnit celý vyvíjený softwarový produkt. Cílem této práce bylo postupně ve třech tematicky zaměřených částech seznámit čtenáře s tímto rozvíjejícím se odvětvím, upozornit na časté chyby, neporozumění nebo nedostatky modelů, ale zároveň představit výhody tohoto typu modelování. První část představila metamodelování obecně a dva z přístupů k němu. Druhá část, poměrně specifická, objasnila především na základě profesionální studie ty největší chyby (a z nich plynoucí ponaučení a přednosti), kterých se dopouští organizace vyvíjející vlastní DSM jazyky. Ve třetí části byla na základě testování popsána základní funkcionalita open sourcového produktu Moflon. Výstupem z této práce je tedy přehled o několika oblastech metamodelování, které mohou obohatit jak začátečníka v oboru, tak čtenáře, který se o tuto oblast již nějakou dobu zajímá. 26

6 Zdroje 1. Wikipedia. Model (abstrakce). Wikipedie, otevřená encyklopedie. [Online] http://cs.wikipedia.org/wiki/model_(abstrakce). 2. Jareš, Pavel. Meta-CASE nástroj. [Online] květen 2008. http://metacase.reesystems.cz/data/dp.pdf. 3. Pícka, Marek. METAMODELOVÁNÍ V PRAXI. [Online] http://www.agris.cz/etc/textforwarder.php?itype=2&iid=137547&phpsessid=bb. 4. Tolvanen, Juha-Pekka. Incremental Method Engineering with Modeling Tools. Jyväskylä : University Library of Jyväskylä, 1998. 951-39-0303-6. 5. Kelly, Steven. GOPRR Description. [Online] 1997. http://metaphor.it.jyu.fi/a1goprr.html. 6. Wikipedia. Unified Modeling Language. Wikipedie, otervřená encyklopedie. [Online] http://cs.wikipedia.org/wiki/unified_modeling_language. 7.. XML Metadata Interchange. Wikipedia, the free encyclopedia. [Online] http://en.wikipedia.org/wiki/xml_metadata_interchange. 8. Kelly, Steven a Pohjonen, Risto. Worst Practices for Domain-Specific Modeling. [Online] červenec/srpen 2009. http://www.metacase.com/papers/worstpracticesfordomain- SpecificModeling.pdf. 9. DSM Forum. How to get started with DSM. DSM Forum. [Online] http://www.dsmforum.org/how.html. 10. MetaCase. Nokia Case Study. [Online] 2007. http://www.metacase.com/papers/metaedit_in_nokia.pdf. 11.. EADS Case Study. [Online] 2007. http://www.metacase.com/papers/metaedit_in_eads.pdf. 12. MOFLON. Adopted standards. MOFLON. [Online] http://www.moflon.org/background/adoptedstandards/. 13. Wikipedia. Domain-specific modeling. Wikipedie, otevřená encyklopedie. [Online] http://en.wikipedia.org/wiki/domain-specific_modeling. 14. DSM Forum. What is DSM. DSM Forum. [Online] http://www.dsmforum.org/. 27