3-Basic-GME-2 - Institute for Software Integrated Systems

hurriedtinkleAI and Robotics

Nov 15, 2013 (3 years and 6 months ago)

45 views

Institute for Software Integrated Systems

Vanderbilt University

Copyright © Vanderbilt University/ISIS 2007

GME Basics

Janos Mathe

Zolt
án Molnár


Help
-
desk: gme
-
users list at
http://list.isis.vanderbilt.edu

Recap


UML concepts


Classes


Associations


Aggregation/Composition


Generalization/Inheritance



Additional concepts


Constraints

Recap


UML concepts


Classes


Associations


Aggregation/Composition


Generalization/Inheritance



Additional concepts


Constraints

Defining a DSML

L = < C, A, S, M
S
, M
C
>

Language component

Sign

Explanation

Concrete Syntax

C

Notation for representing models

Using the elements of

MetaGME
:
UML

extended with
stereotypes and OCL

Abstract Syntax

A

Ontology

The (important) concepts of a domain and their relations

Parsing

Mc

Mapping the concepts of A to the concepts of C

Creating the concepts in

A by using the concepts available in
MetaGME

Semantic Domain

S

Semantics describes meaning of the models

There can be multiple valid semantics

Semantic Mapping

Ms

Mapping the concepts of A to

S

Usually means writing an interpreter using GME’s BON/MON
interfaces to traverse the models

Defining a DSML

L = < C, A, S, M
S
, M
C
>

Language component

Sign

Explanation

Concrete Syntax

C

Notation for representing models

Using the elements of

MetaGME
:
UML

extended with
stereotypes and OCL

Abstract Syntax

A

Ontology

The (important) concepts of a domain and their relations

Parsing

Mc

Mapping the concepts of A to the concepts of C

Creating the concepts in

A by using the concepts available in
MetaGME

Semantic Domain

S

Semantics describes meaning of the models

There can be multiple valid semantics

Semantic Mapping

Ms

Mapping the concepts of A to

S

Usually means writing an interpreter using GME’s BON/MON
interfaces to traverse the models

Concrete Syntax for DSMLs in
GME

November 15, 2013

7

Directory structure


GME.exe


Main application



ModelMigrate.exe


XSLT (XML) based external model upgrader & transformer



Interfaces folder


Mga.idl useful when writing COM Interpreters (low
-
level)


Gme.idl useful when creating scripts



SDK folder


BON folder


BonImpl.h useful when writing BON Interpreters (high
-
level)


CreateNewComponent.exe


creates new interpreter skeletons



Paradigms folder


MetaGME folder (metamodel and paradigm for metamodeling)


SF folder (sample Signalflow metamodel/paradigm)



Doc folder


Tutorials folder



November 15, 2013

8

Basic terms 1.


Folders (container)



First Class Objects (FCO):


Atom (atomic object)


Model (container)


Set (aggregation)


Connection (association)


Reference (pointer, proxy)



Attributes


User
-
defined properties of FCOs



Aspects


User
-
defined views of models



Annotations


Textboxes inside models, provide visual aid

Defining a DSML

L = < C, A, S, M
S
, M
C
>

Language component

Sign

Explanation

Concrete Syntax

C

Notation for representing models

Using the elements of

MetaGME
:
UML

extended with
stereotypes and OCL

Abstract Syntax

A

Ontology

The (important) concepts of a domain and their relations

Parsing

Mc

Mapping the concepts of A to the concepts of C

Creating the concepts in

A by using the concepts available in
MetaGME

Semantic Domain

S

Semantics describes meaning of the models

There can be multiple valid semantics

Semantic Mapping

Ms

Mapping the concepts of A to

S

Usually means writing an interpreter using GME’s BON/MON
interfaces to traverse the models

November 15, 2013

10


Things to
Register


GME
Paradigms


GME
Components/Interpreters


in
to

Windows registry

(system or user)



Object Registry in GME


Information stored inside GME objects

(FCOs)


Object preferences


Object position



File types

(extensions)


Binary project
/model

file: .mga


XML project
/model

file: .xme


Binary paradigm file: .mta


XML paradigm file: .xmp

Basic terms 2.

<?xml version="1.0" encoding="UTF
-
8"?>

<!DOCTYPE project SYSTEM
"mga.dtd
">

<project […] metaname=“SF“>

<?xml version="1.0"?>

<!DOCTYPE paradigm SYSTEM "
edf.dtd
">

<paradigm name="SF“ […]

November 15, 2013

11

MetaInterpretation

MetaGME
interpreter

Metamodel

(model in MetaGME
paradigm)

Rootfolder

November 15, 2013

12

Meta
I
nterpretation

P
roject
/model

created

in MetaGME (aka. Metamodel)

paradigm (SF.mga)

<?xml version="1.0" encoding="UTF
-
8"?>

<!DOCTYPE project SYSTEM
"mga.dtd
">

<project […] metaname=“
MetaGME
“>

<name>
SF
</name>

<?xml version="1.0"?>

<!DOCTYPE paradigm SYSTEM "
edf.dtd
">

<paradigm name="
SF
“ […]

Paradigm (SF.xmp)


User initiated

translation


Sample sentence with the words
metamodel

and
paradigm
:


Q: “I interpreted my metamodel with MetaGME interpreter and I got
the error message that my paradigm can’t be registered.”


A: “Please check the Console Window for details about errors during
interpretation.”

November 15, 2013

13

Registering paradigms 1.

November 15, 2013

14

Registering paradigms 2.

Currently registered

Systemwide = for all users

Add new paradigm

November 15, 2013

15

Upgrading


T
o a
new metamodel
/paradigm

version



Reason: Users can change their language definition as they
wish, GME has no chance of being able to sort out obsolete
elements, doing replacements, …


Binary
model
file
s

might

be accepted


Export XML and Import XML
might

work


ModelMigrate tool (XSLT based transformations)


GReAT recommended for complex model transformations



T
o a
new GME

version


Binary
model
file
s

might

be accepted (definitely not in case
of major modifications to the internal datamodel)


Export XML and Import XML

must

work


Total Recompilation

of
user
-
written
components
(interpreters)

needed

November 15, 2013

16

Graphical User
Interface

November 15, 2013

17

Starting from empty project

Right click

for Context
menu

Top
-
level
elements
that can be
inserted

November 15, 2013

18

Exploring models

Double clicked

‘MyCompound’
model opened

November 15, 2013

19

Exploring models

Double click a
Model to see its
internals

November 15, 2013

20

Navigation

Back

Forward

Home (model opened first)

Cycle Aspects for current/all model(s)

Close model(s): current/all/all but current

Show next window

November 15, 2013

21

Add new parts

by Drag&Drop from palette

November 15, 2013

22

Add new parts

through Context menu

November 15, 2013

23

Result

November 15, 2013

24

Context aware UI elements

Selected
element

Context
sensitive
pallette

Attributes
of selected
element

November 15, 2013

25

Selected
element

Attributes of selected
element

Attributes of ‘Primitive’ defined in the
metamodel

November 15, 2013

26

Legal Parts allowed
in currently opened
model (Compound)

Currently opened model

Properties of the currently
opened model

November 15, 2013

27

Legal Parts allowed
in currently opened
model (Compound)

Currently opened model

Properties of the currently
opened model

Metamodel portion
where parts of
‘Compound’ are defined

November 15, 2013

28

Selected and currently
opened model

Properties of selected
element

Currently opened model

Properties of the currently
opened model

Kind

Name

Aspect

November 15, 2013

29

Operational modes

Edit (^1)

Connect (^2)

Disconnect (^3)

Set Mode (^4)

Zoom (^5)

Presentation (^6)

Non
-
sticky Connect (^7)

Non
-
sticky Disconnect (^8)

November 15, 2013

30

Connecting

in Connection Mode



Select source while mouse pointer is
black


Select destination while mouse pointer
is white



Step 1

Step 2

Done

Select Connection Mode

November 15, 2013

31

Connect through Context Menu

Step 1: select Source

November 15, 2013

32

Connect through Context Menu

Step 2: select Destination

November 15, 2013

33

Connect through Context Menu

Done

November 15, 2013

34

Connection removal


In Disconnect mode


Point & click on a connection


In Edit mode


Select ‘Delete’ from a connection’s context menu


Select ‘Disconnect all’ in a source/destination object’s
context menu (deletes all connections!)


In TreeBrowser


Select connection and delete it


Note: Connections are shown in TreeBrowser only if the
‘Display Connections’ option is turned on in ‘Tree Browser
Options’ dialog, accessible from the TreeBrowser’s context
menu




November 15, 2013

35

Type inheritance


Type, Subtype, Instance


A model created from scratch is a type


Explicit and implicit derivation/instantiation


A deep copy preserving the linkage


In subtypes:


New objects can be added


Attributes can be modified


Objects cannot be deleted


In instances:


Attributes can be modified


Only root models can be explicitly derived or instantiated to
avoid multiple dependency chains


Similar to prototype/clone technique


Enables model reuse, maintainability


Utilized in libraries

November 15, 2013

36

Engine

T

ABS

T

V6

I

Car

T

ABSX

ST

V6

I

Cool Car

ST

ABSXj

I

V6

I

My Car

I

ABSi

I

V6

I

A Car

I


T Type

ST SubType


I Instance


Aggregation


Dependency


Secondary Dep.

Type Inheritance (dependency chain)

November 15, 2013

37

InstanceOf

SubTypeOf

Car

T

Cool Car

ST

My Car

I

A Car

I

Engine

T

V6

I

V6

I

V6

I

V6

I

ABS

T

ABSX

ST

ABSXj

I

ABSi

I

Type Inheritance (dependency chain) 2.

November 15, 2013

38

Keyboard shortcuts


Ctrl + 1..8 : switch between modes


Ctrl + Z, Ctrl + U : Undo/Redo


Ctrl + F : Search


TreeBrowser


Enter : show fco


for Models it shows a model’s internals


Shift + Enter: show fco in parent


shows every fco (models too) in its parent


TAB: jump to search combo box


Ctrl + TAB: cycling


cycle through Aggregate, Inheritance, Meta Pages


F2: rename active element


View


Enter: show model (down in hier.) or follow reference


Backspace: show parent model (up in hier.)


A: cycle through Attribute/Preferences/Property pages for selected element


Numpad +/
-
: zoom in / out by 5%


TAB: cycle through aspects for active model


Z/X: back / forward


Ctrl + B : jump to browser (as Locate command does)


Ctrl + I : jump to Object Inspector (attribute panel)


Object Inspector (Attribute Panel)


CTRL + D: restore default value of an attribute


November 15, 2013

39

Drag & Drop


Drag & drop for FCOs


within Treebrowser


from Treebrowser to models and vice versa


among models


Drag & drop modifiers:


None


move


Ctrl


copy


Ctrl + Shift

create a reference


Alt


instance


Alt + Shift


subtype


Drag & Drop for Files


Paradigm file (.mta, .xmp) gets registered (only if no project is
open)


.mga project file is opened


.xme project file is imported


Defining a DSML

L = < C, A, S, M
S
, M
C
>

Language component

Sign

Explanation

Concrete Syntax

C

Notation for representing models

Using the elements of

MetaGME
:
UML

extended with
stereotypes and OCL

Abstract Syntax

A

Ontology

The (important) concepts of a domain and their relations

Parsing

Mc

Mapping the concepts of A to the concepts of C

Creating the concepts in

A by using the concepts available in
MetaGME

Semantic Domain

S

Semantics describes meaning of the models

There can be multiple valid semantics

Semantic Mapping

Ms

Mapping the concepts of A to

S

Usually means writing an interpreter using GME’s BON/MON
interfaces to traverse the models

Recap


UML concepts


Classes


Associations


Aggregation/Composition


Generalization/Inheritance



Additional concepts


Constraints

Example
-

Binary Tree

November 15, 2013

47

Constraints

Paradigm
-
, project
-

and model
-
specific constraints


Expressed in Object Constraint Language (OCL) v1.4
part of UML



Evaluate Constraints


On events


OnCloseModel


OnConnected etc.


On user request


On the current model


On the whole project


Only selected constraints


Only on selected objects


November 15, 2013

48

Constraints 2.


Priority


Context


Detailed error reporting


Automatic syntax check

November 15, 2013

49

Miscellaneous features


Search Tool


Regular expression based


Useful to find all references to an object also


Aspect Synchronization


Object position synchronization


External Editor


attribute editing


Table Editor


Model Libraries


Console window scripting


Python/Perl/JavaScript/VBScript


3 predefined variables:


gme

implements IGMEOLEApp (gme.idl)


it

implements IGMEOLEIt (gme.idl)


project

implements IMgaProject (mga.idl)


SDK/CreateNewComponent.exe


Creates empty interpreter/add
-
on skeletons

Tricks


Connecting nodes time efficiently


Pasting


Icons

Quiz


What's GME?


What is it good for?


What does metamodeling mean?


What are models good for?


What is an interpreter good for?

Quiz
-

Answers


What does metamodeling mean?


Capturing the core concepts and the rules of a domain on the right
level of abstractions in metamodels


Using these metamodels to enforce the creation of valid domain
models


What's GME?


Metaprogrammable graphical model builder


What is it good for?


Create visual Domain
-
Specific Modeling Languages (DSMLs)


Create a customized modeling environment that allows domain experts
to build models of the domain


What are models good for?


They provide a centralized view


What is an interpreter good for?


They allow the information to be extracted from models so that code,
documentation, etc. can be generated