Basic GME - Vanderbilt University

Download Report

Transcript Basic GME - Vanderbilt University

Institute for Software Integrated Systems
Vanderbilt University
GME Basics
Janos Mathe
Zoltán Molnár
Help-desk: gme-users list at http://list.isis.vanderbilt.edu
Copyright © Vanderbilt University/ISIS 2007
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, MS, MC>
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, MS, MC>
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
Directory structure

GME.exe


ModelMigrate.exe



BON folder

BonImpl.h useful when writing BON Interpreters (high-level)

creates new interpreter skeletons
CreateNewComponent.exe
Paradigms folder



Mga.idl useful when writing COM Interpreters (low-level)
Gme.idl useful when creating scripts
SDK folder


XSLT (XML) based external model upgrader & transformer
Interfaces folder



Main application
MetaGME folder (metamodel and paradigm for metamodeling)
SF folder (sample Signalflow metamodel/paradigm)
Doc folder

Tutorials folder
July 17, 2015
7
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
July 17, 2015
8
Defining a DSML
L = < C, A, S, MS, MC>
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
Basic terms 2.
 Things to Register
 GME Paradigms
 GME Components/Interpreters
 into 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
July 17, 2015
<?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“ […]
10
MetaInterpretation
MetaGME
interpreter
Rootfolder
Metamodel
(model in MetaGME
paradigm)
July 17, 2015
11
MetaInterpretation
Project/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>
User initiated
translation
Paradigm (SF.xmp)
<?xml version="1.0"?>
<!DOCTYPE paradigm SYSTEM "edf.dtd">
<paradigm name="SF“ […]
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.”
July 17, 2015
12
Registering paradigms 1.
July 17, 2015
13
Registering paradigms 2.
Currently registered
Add new paradigm
Systemwide = for all users
July 17, 2015
14
Upgrading
 To 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 files might be accepted
 Export XML and Import XML might work
 ModelMigrate tool (XSLT based transformations)
 GReAT recommended for complex model transformations
 To a new GME version
 Binary model files 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
July 17, 2015
15
Graphical User
Interface
July 17, 2015
16
Starting from empty project
Right click
for Context
menu
Top-level
elements
that can be
inserted
July 17, 2015
17
Exploring models
Double clicked
‘MyCompound’
model opened
July 17, 2015
18
Exploring models
Double click a
Model to see its
internals
July 17, 2015
19
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
July 17, 2015
20
Add new parts
by Drag&Drop from palette
July 17, 2015
21
Add new parts
through Context menu
July 17, 2015
22
Result
July 17, 2015
23
Context aware UI elements
Selected
element
Context
sensitive
pallette
July 17, 2015
Attributes
of selected
element
24
Selected
element
Attributes of ‘Primitive’ defined in the
metamodel
July 17, 2015
Attributes of selected
element
25
Properties of the currently
opened model
Currently opened model
Legal Parts allowed
in currently opened
model (Compound)
July 17, 2015
26
Properties of the currently
opened model
Currently opened model
Legal Parts allowed
in currently opened
model (Compound)
Metamodel portion
where parts of
‘Compound’ are defined
July 17, 2015
27
Currently opened model
Name
Kind
Aspect
Selected and currently
opened model
Properties of the currently
opened model
Properties of selected
element
July 17, 2015
28
Operational modes
Edit (^1)
Connect (^2)
Disconnect (^3)
Non-sticky Disconnect (^8)
Non-sticky Connect (^7)
Set Mode (^4)
Zoom (^5)
Presentation (^6)
July 17, 2015
29
Connecting
in Connection Mode
Select Connection Mode


Step 1
Step 2
July 17, 2015
Select source while mouse pointer is
black
Select destination while mouse pointer
is white
Done
30
Connect through Context Menu
Step 1: select Source
July 17, 2015
31
Connect through Context Menu
Step 2: select Destination
July 17, 2015
32
Connect through Context Menu
Done
July 17, 2015
33
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
July 17, 2015
34
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
July 17, 2015
35
Type Inheritance (dependency chain)
T
T
Car
Engine
T Type
ST SubType
I
Instance
Aggregation
Dependency
Secondary Dep.
ST
Cool Car
I
T
V6
ABS
I
ST
V6
ABSX
I
I
A Car
My Car
I
V6
July 17, 2015
I
ABSi
I
V6
I
ABSXj
36
Type Inheritance (dependency chain) 2.
T
T
Car
ABS
Cool Car
ABSi
ABSX
T
I
July 17, 2015
I
V6
My Car
I
V6
A Car
I
Engine
ABSXj
InstanceOf
SubTypeOf
I
ST
I
ST
I
V6
I
V6
37
Keyboard shortcuts






Ctrl + 1..8 : switch between modes
Ctrl + Z, Ctrl + U : Undo/Redo
Ctrl + F : Search
TreeBrowser

Enter : show fco

Shift + Enter: show fco in parent


TAB: jump to search combo box
Ctrl + TAB: cycling

F2: rename active element








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)

CTRL + D: restore default value of an attribute
View

for Models it shows a model’s internals

shows every fco (models too) in its parent

cycle through Aggregate, Inheritance, Meta Pages
Object Inspector (Attribute Panel)
July 17, 2015
38
Drag & Drop
 Drag & drop for FCOs
 within Treebrowser
 from Treebrowser to models and vice versa
 among models
 Drag & drop modifiers:





None
Ctrl
Ctrl + Shift
Alt
Alt + Shift
move
copy
create a reference
instance
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
July 17, 2015
39
Defining a DSML
L = < C, A, S, MS, MC>
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
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




July 17, 2015
On the current model
On the whole project
Only selected constraints
Only on selected objects
47
Constraints 2.




July 17, 2015
Priority
Context
Detailed error reporting
Automatic syntax check
48
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
July 17, 2015
49
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