Tomsovi

  • Increase font size
  • Default font size
  • Decrease font size
Domů Honza School 5. ročník Diplomová práce - Automatizované modelování - 3 Metodika

Diplomová práce - Automatizované modelování - 3 Metodika

E-mail Print PDF
Article Index
Diplomová práce - Automatizované modelování
Obsah
1 Úvod
1.2 Typografické konvence
Tabulka 1: Slovník zkratek
2 Cíl práce
3 Metodika
4 Přehled vlastností modelovacích nástrojů
4.1 Úloha modelování v běžném životě
4.1 Úloha modelování v běžném životě - pokračování
4.1.1 Vhodnost použití objektových nástrojů pro modelování a transformace
4.2 Architektura řízená modelem - Model Driven Architecture
4.2.1 The Object Management Group
4.2.2 Základní cíle a přístupy MDA
4.2.3 Platforma
4.2.4 Hierarchie modelů dle MDA
4.2.5 Model nezávislý na počítačovém zpracování
4.2.6 Model nezávislý na platformě
4.2.7 Mapování a značkování
4.2.8 Model specifický ke konkrétní platformě
4.2.9 Zdrojový kód aplikace
4.3 MDA a Oracle Designer
4.4 Vlastní zkušenost
4.5 Vlastnosti modelovacích nástrojů
4.6 Craft.CASE
4.7 Eclipse Modeling Framework
4.8 Omondo EclipseUML2
4.9 Enterprise Architect
5 Transformační modelovací jazyky
5.2 Eclipse Modelling Framework
5.4 XSLT
Část II - Projekt
6 Vlastní projekt
7 Požadavky na informační systém
8 Analýza
8.1 Model případů užití
8.2 Doménový objektový model
9 Design informačního systému
10 Aplikace Architektury řízené modelem (MDA)
11 Vývoj generátoru
12 Generování kódu z modelu
13 Závěr
Literatura
Přílohy
A Případy užití
A.1 Hlavní případy užití
A.2 Správa skupin parametrů
A.3 Správa parametrů
A.4 Správa modelů
B Sada šablon EA pro generování kódu v jazyku Smalltalk
C Vygenerované zdrojové kódy FSM v jazyku Smalltalk
D UML profil systému DecisionMaker
E Podpůrné třídy metamodelu UML
F Generátor entit aplikace DecisionMaker
G Zdrojový kód aplikace DecisionMaker
All Pages

3 Metodika

Jak už jsem zmínil v úvodu, při psaní této práce jsem vycházel z uvedené literatury
a ze zkušeností v roli vedoucího vývoje ve společnosti NESS Czech s.r.o. Dále
jsem vycházel ze znalostí získaných na školení k certifikaci IBM Certified Solution
Designer - Object Oriented Analysis and Design, vUML 2.
Tomu odpovídá zvolená metodika vývoje (viz kapitola Vlastní projekt) i použité
nástroje, jako je Enterprise Architect použitý pro objektovou analýzu a design.
Při psaní diplovové práce jsem postupoval takto:
Našel jsem si modelový příklad potřeby modelování v běžném, např. zemědělském
podniku. Zde mi byl inspirací mj. studovaný předmět Systémová analýza a modelov
ání a SW aplikace operačního výzkumu.
Poměrně dosti práce mi pak dalo vymyšlení koncepce, jak problematiku zají-
mavě uchopit a přitom postihnout všechny aspekty, které mne na problému zajímají.
V době, kdy jsem uvažoval o vzorové implementaci v prostředí Squeak (open
source implementaci Smalltalku), nasměroval mne vedoucí diplomové práce mne
na projekt Pharo, což je větev Squeaku určená pro profesionální vývoj - zejména -
webových aplikací.
Z Internetu jsem si proto stáhl vývojářský "obraz" (image) a Pharo Virtual
Machine. Obraz určený pro vývojáře má některé vlastnosti, které značně usnadňují
vývoj: zvýraznění syntaxe kódu, automatické doplňování, klávesové zkratky apod.
V tomto prostředí jsem naprogramoval řešení úlohy standardního lineárního programov
ání pomocí simplexové metody.
V CASE nástroji Enterprise Architect jsem pak namodeloval požadaky (případy
užití) a doménový model základní verze informačního systému, který by funkčnost
výše uvedeného řešení úlohy standardního lineárního programování pomocí simplexové
metody zpřístupnil běžnému uživateli.
Při studiu vývoje webových aplikací za pomoci frameworku Seaside jsem narazil
na demonstrační příklad Los Boquitas s názornými video ukázkami vytvořený
společností GemStone Systems, Inc. na adrese
http://seaside.gemstone.com/tutorial.html,
podle kterého jsem si v "obrazu" Seaside One-Click Experience příklad prošel.
V rámci tohoto návodu jsem se blíže seznámil s balíčkovacím a instalačním nástrojem
Monticello, který jsem pak použil k exportu vytvořené Seaside aplikace a do
lokálního úložiště. Do stejného úložiště jsem vyexportoval i balík tříd týkající se
simplexové metody.
Následně jsem si stáhl nejaktuálnější verzi vývojářského obrazu Pharo a do něj
nainstaloval nejnovější verzi Seaside 3.0. Do té jsem pak naimportoval i zmíněné
dva balíčky z lokálního úložiště.
Ze vzorového příkladu Los Boquitas jsem extrahoval návrhový vzor evidenční
webové aplikace v prostředí Seaside a aplikoval jsem jej na jednu entitu (Model) z
doménového modelu zamýšleného systému.
Abych mohl automatizovat aplikaci tohoto návrhového vzoru na všechny ostatní
entity, musel jsem vyřešit, jakým způsobem jejich model transformovat.
V rámci podrobnějšího zkoumání vlastností CASE nástrojů jsem vyřešil i
jednoduché generování Smalltalk kódu v tzv. "chunk" formátu z Enterprise Architect
(viz kapitola Enterprise Architect). Pro výše uvedený účel jsem však potřeboval
nejen generování, ale zejména poměrně netriviální transformaci jedné třídy na čtyři
jiné třídy. Ačkoli Enterprise Architect podle dokumentace umožňuje i to, připadalo
mi, že se kvůli tomu budu muset naučit další specifický skriptovací jazyk a pak se
ještě potýkat s jeho případnými omezeními. Zvolil jsem proto možná pracnější, avšak
univerzálnější řešení v podobě importu modelu do prostředí Pharo a naprogramování
transformace ve Smalltalku.
Nejprve jsem do prostředí musel doinstalovat podporu XML, což díky propracovaným
konfiguračním nástrojům byla záležitost asi pěti minut. Dále jsem vyexportoval
model z CASE do formátu XMI a podrobněji nastudoval jeho strukturu.
Namodeloval jsem metamodel UML (v EA) a v prostředí Pharo jsem jej implementoval.
Dále jsem naprogramoval import ze struktur XMI do metamodelu UML a transformaci
modelů (entita -> čtyři implementační třídy).
Následně jsem nastudoval problematiku dynamické deklarace tříd v prostředí
Pharo (platí zřejmě obecně pro Smalltalk) a na základě této znalosti jsem pak
dokončil transformaci z UML do tříd přímo v prostředí Pharo.
Takto vytvořené třídy jsem pak odladil (pochopitelně spolu s opravami chyb ve
všech krocích transformace) a následně napojil do existující aplikace, jejíž výsledný
kód uvádím v příloze.