Tomsovi

  • Zvětšit velikost písma
  • Výchozí velikost písma
  • Zmenšit velikost písma
Domů Honza Škola 5. ročník Diplomová práce - Automatizované modelování - 12 Generování kódu z modelu

Diplomová práce - Automatizované modelování - 12 Generování kódu z modelu

Email Tisk PDF
seznam článků
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
Všechny strany

12 Generování kódu z modelu

Veškeré implementační třídy modelovaných entit se vygenerují jedním příkazem ve
Workspace:
(DMEntityBuilder new
    initFromFileNamed: 'c:\temp\DecisionMaker.xml';
    transformEntityClassesWithPrefixPlain: 'DM')
        do:
            [:umlClass |
                (UMLClassCompiler new: umlClass)
                    createInSmalltalk.
            ].
viz též obrázek 27.
Výsledné vygenerované třídy jsou zobrazeny v System Browseru na obrázku 28

Obrázek 27: Spuštění transformace modelu na implementační třídy v prostředí Pharo
Obrázek 27: Spuštění transformace modelu na implementační třídy v prostředí
Pharo.
Prvotní zakomponování vygenerovaného kódu do aplikace se provede doplněním
zdrojového kódu medody renderSidebarOn: třídy DMMain, která slouží pro zobrazení
menu aplikace.
Úprava viz níže:

renderSidebarOn: canvas
    canvas div
        id: 'sidebar';
        class: 'section';
        with: [
            canvas heading
                level2;
                with: DMTexts MENU.
            canvas anchor
                callback: [ mainArea := DMHome new ];
                with: DMTexts HOME.
            canvas break .
            canvas anchor
                callback: [ mainArea := DMModelCRUD new ];
                with: (DMModelTexts labelFor: #Models).
            "========= call GENERATED classes ========"
            canvas break .
            canvas anchor
                callback: [ mainArea := DXEquationCRUD new ];
                with: (DXEquationTexts labelFor: #Instances).
            canvas break .
            canvas anchor
                callback: [ mainArea := DXVariableCRUD new ];
                with: (DXVariableTexts labelFor: #Instances).
            canvas break .
            canvas anchor
                callback: [ mainArea := DXParamGroupCRUD new ];
                with: (DXParamGroupTexts labelFor: #Instances).
            canvas break .
            canvas anchor
                callback: [ mainArea := DXParameterCRUD new ];
                with: (DXParameterTexts labelFor: #Instances).
            "======== /call GENERATED classes ========"
        ];
yourself.


Obrázek 28: Zobrazení vygenerovaných implementačních tříd v System Browseru
Obrázek 28: Zobrazení vygenerovaných implementačních tříd v System Browseru.

Výsledná aplikace po doplnění generovaných částí je zobrazena na obrázku 29.
Takto vytvořená aplikace bude pochopitelně dále upravována v rámci dalších
vývojových iterací. Pokud to bude vyhodnoceno jako efektivní, může být opět
použito generování - zejména pokud by se významně změnil výchozí doménový
model a zároveň objem ručně provedených zásahů do generovaných tříd by byl minimální.


Obrázek 29: Vzhled aplikace po doplnění generovaných částí
Obrázek 29: Vzhled aplikace po doplnění generovaných částí.

V každém případě je však potřeba tento postup pokaždé zvažovat s ohledem
na očekávané přínosy v porovnání s vynaloženou prací.