Download presentation
Presentation is loading. Please wait.
Published byKerrie Skinner Modified over 9 years ago
1
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
2
Recap UML concepts Classes Associations Aggregation/Composition Generalization/Inheritance Additional concepts Constraints
3
Recap UML concepts Classes Associations Aggregation/Composition Generalization/Inheritance Additional concepts Constraints
4
Defining a DSML L = Language component Sig n Explanation Concrete SyntaxCNotation for representing models Using the elements of MetaGME: UML extended with stereotypes and OCL Abstract SyntaxAOntology The (important) concepts of a domain and their relations ParsingMcMapping the concepts of A to the concepts of C Creating the concepts in A by using the concepts available in MetaGME Semantic DomainSSemantics describes meaning of the models There can be multiple valid semantics Semantic MappingMsMapping the concepts of A to S Usually means writing an interpreter using GME’s BON/MON interfaces to traverse the models
5
Defining a DSML L = Language component Sig n Explanation Concrete SyntaxCNotation for representing models Using the elements of MetaGME: UML extended with stereotypes and OCL Abstract SyntaxAOntology The (important) concepts of a domain and their relations ParsingMcMapping the concepts of A to the concepts of C Creating the concepts in A by using the concepts available in MetaGME Semantic DomainSSemantics describes meaning of the models There can be multiple valid semantics Semantic MappingMsMapping the concepts of A to S Usually means writing an interpreter using GME’s BON/MON interfaces to traverse the models
6
Concrete Syntax for DSMLs in GME
7
October 23, 2015 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
8
October 23, 2015 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
9
Defining a DSML L = Language component Sig n Explanation Concrete SyntaxCNotation for representing models Using the elements of MetaGME: UML extended with stereotypes and OCL Abstract SyntaxAOntology The (important) concepts of a domain and their relations ParsingMcMapping the concepts of A to the concepts of C Creating the concepts in A by using the concepts available in MetaGME Semantic DomainSSemantics describes meaning of the models There can be multiple valid semantics Semantic MappingMsMapping the concepts of A to S Usually means writing an interpreter using GME’s BON/MON interfaces to traverse the models
10
October 23, 2015 10 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 Basic terms 2. <paradigm name="SF“ […]
11
October 23, 2015 11 MetaInterpretation MetaGME interpreter Metamodel (model in MetaGME paradigm) Rootfolder
12
October 23, 2015 12 MetaInterpretation Project/model created in MetaGME (aka. Metamodel) paradigm (SF.mga) SF <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.”
13
October 23, 2015 13 Registering paradigms 1.
14
October 23, 2015 14 Registering paradigms 2. Currently registered Systemwide = for all users Add new paradigm
15
October 23, 2015 15 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
16
October 23, 2015 16 Graphical User Interface
17
October 23, 2015 17 Starting from empty project Right click for Context menu Top-level elements that can be inserted
18
October 23, 2015 18 Exploring models Double clicked ‘MyCompound’ model opened
19
October 23, 2015 19 Exploring models Double click a Model to see its internals
20
October 23, 2015 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
21
October 23, 2015 21 Add new parts by Drag&Drop from palette
22
October 23, 2015 22 Add new parts through Context menu
23
October 23, 2015 23 Result
24
October 23, 2015 24 Context aware UI elements Selected element Context sensitive pallette Attributes of selected element
25
October 23, 2015 25 Selected element Attributes of selected element Attributes of ‘Primitive’ defined in the metamodel
26
October 23, 2015 26 Legal Parts allowed in currently opened model (Compound) Currently opened model Properties of the currently opened model
27
October 23, 2015 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
28
October 23, 2015 28 Selected and currently opened model Properties of selected element Currently opened model Properties of the currently opened model Kind Name Aspect
29
October 23, 2015 29 Operational modes Edit (^1) Connect (^2) Disconnect (^3) Set Mode (^4) Zoom (^5) Presentation (^6) Non-sticky Connect (^7) Non-sticky Disconnect (^8)
30
October 23, 2015 30 Connecting in Connection Mode Select source while mouse pointer is black Select destination while mouse pointer is white Step 1 Step 2Done Select Connection Mode
31
October 23, 2015 31 Connect through Context Menu Step 1: select Source
32
October 23, 2015 32 Connect through Context Menu Step 2: select Destination
33
October 23, 2015 33 Connect through Context Menu Done
34
October 23, 2015 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
35
October 23, 2015 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
36
October 23, 2015 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)
37
October 23, 2015 37 InstanceOf SubTypeOf Car T Cool Car ST My Car I A Car I Engine T V6 I I I I ABS T ABSX ST ABSXj I ABSi I Type Inheritance (dependency chain) 2.
38
October 23, 2015 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
39
October 23, 2015 39 Drag & Drop Drag & drop for FCOs within Treebrowser from Treebrowser to models and vice versa among models Drag & drop modifiers: Nonemove Ctrlcopy Ctrl + Shiftcreate a reference Altinstance Alt + Shiftsubtype 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
40
October 23, 2015 40 Automation interface IGMEOLEIt (defined in gme.idl) HRESULT ShowFCO( [in] BSTR path, [in, defaultvalue(0)] VARIANT_BOOL inParent ); HRESULT ShowFCOPtr( [in] IMgaFCO* fco, [in, defaultvalue(0)] VARIANT_BOOL inParent ); HRESULT Child( [in] BSTR name, [out,retval] IMgaFCO** child_fco ); HRESULT Create( [in] BSTR part, [in] BSTR name, [out,retval] IMgaFCO** new_fco ); HRESULT CreateInChild( [in] BSTR child_as_parent, [in] BSTR part, [in] BSTR name, [out,retval] IMgaFCO** new_fco ); HRESULT CreateInChildFCO( [in] IMgaFCO* child_as_parent, [in] BSTR part, [in] BSTR name, [out,retval] IMgaFCO** new_fco ); HRESULT Duplicate([in] BSTR existing_fco_name, [in] BSTR new_fco_name, [out,retval] IMgaFCO** new_fco ); HRESULT DuplicateFCO([in] IMgaFCO* existing_fco, [in] BSTR new_fco_name, [out,retval] IMgaFCO** new_fco ); HRESULT Rename( [in] BSTR oldname, [in] BSTR newname); HRESULT SetName( [in] IMgaFCO*, [in] BSTR name); HRESULT Include( [in] BSTR setname, [in] BSTR name); HRESULT Exclude( [in] BSTR setname, [in] BSTR membername); HRESULT IncludeFCO( [in] IMgaSet* p_set, [in] IMgaFCO* fco); HRESULT ExcludeFCO( [in] IMgaSet* p_set, [in] IMgaFCO* fco);
41
October 23, 2015 41 IGMEOLEIt 2. HRESULT Connect( [in] BSTR src_part, [in] BSTR dst_part, [in] BSTR connection_role, [out, retval] IMgaConnection ** conn ); HRESULT Disconnect( [in] BSTR src_part, [in] BSTR dst_part, [in] BSTR connection_name); HRESULT ConnectThruPort( [in] BSTR src_part_1, [in] BSTR src_part_2, [in] BSTR dst_part_1, [in] BSTR dst_part_2, [in] BSTR connection_role, [out, retval] IMgaConnection ** conn ); HRESULT ConnectThruPortFCO( [in] IMgaFCO* src_part_1, [in] IMgaFCO* src_part_2, [in] IMgaFCO* dst_part_1, [in] IMgaFCO* dst_part_2, [in] BSTR connection_role, [out, retval] IMgaConnection ** conn); HRESULT DisconnectThruPort( [in] BSTR src_part_1, [in] BSTR src_part_2, [in] BSTR dst_part_1, [in] BSTR dst_part_2, [in] BSTR connection_name); HRESULT ConnectFCOs( [in] IMgaFCO* src_part, [in] IMgaFCO* dst_part, [in] BSTR connection_role, [out, retval] IMgaConnection ** conn ); HRESULT DisconnectFCOs( [in] IMgaFCO* src_part, [in] IMgaFCO* dst_part, [in] BSTR connection_name); HRESULT Refer( [in] BSTR reference, [in] BSTR referred); HRESULT ClearRef( [in] BSTR reference); HRESULT FollowRef( [in] BSTR reference); HRESULT ReferFCO( [in] IMgaReference* reference, [in] IMgaFCO* referred); HRESULT ClearRefFCO( [in] IMgaReference* reference); HRESULT FollowRefFCO( [in] IMgaReference* reference); HRESULT NullFCO( [out, retval] IMgaFCO** nullobj);
42
October 23, 2015 42 IGMEOLEIt 3. HRESULT SetAttribute( [in] BSTR name, [in] BSTR attr_name, [in] VARIANT value); HRESULT GetAttribute( [in] BSTR name, [in] BSTR attr_name, [out, retval] VARIANT* value); HRESULT SetAttributeFCO( [in] IMgaFCO* fco, [in] BSTR attr_name, [in] VARIANT value); HRESULT GetAttributeFCO( [in] IMgaFCO* fco, [in] BSTR attr_name, [out, retval] VARIANT* value); HRESULT SubType( [in] BSTR base, [in] BSTR name_of_subtype, [out, retval] IMgaFCO** subtype); HRESULT Instantiate( [in] BSTR base, [in] BSTR name_of_instance, [out, retval] IMgaFCO** instance); HRESULT SubTypeFCO( [in] IMgaFCO* base, [in] BSTR name_of_subtype, [out, retval] IMgaFCO** subtype); HRESULT InstantiateFCO( [in] IMgaFCO* base, [in] BSTR name_of_instance, [out, retval] IMgaFCO** instance); HRESULT BeginTransaction(); HRESULT CommitTransaction(); HRESULT IsInTransaction( [out, retval] VARIANT_BOOL* intrans); HRESULT PutInTerritory( [in] IMgaFCO* fco, [out, retval] IMgaFCO** newfco); HRESULT SetSelected( [in] BSTR space_delimited_string ); HRESULT GetSelected( [out, retval] BSTR * space_delimited_string ); HRESULT SetSelectedFCOs([in] IMgaFCOs* fcos_to_select); HRESULT GetSelectedFCOs([out, retval] IMgaFCOs** selected_fcos); HRESULT NextAspect(); HRESULT PrevAspect(); HRESULT Next(); HRESULT Prev(); HRESULT Position( [in] BSTR child, [in] BSTR aspect, [in] long parX, [in] long parY); HRESULT PositionFCO( [in] IMgaFCO* fco, [in] BSTR aspect, [in] long parX, [in] long parY);
43
October 23, 2015 43 Automation ‘gme’ implements IGMEOLEApp: Open&CloseProject, … ‘it’ variable implements IGMEOLEIt Can be used as follows: for i in range( 1, 4): pp = it.create( 'PrimitiveParts', 'p' + str(i)) it.PositionFCO( pp, 'SignalFlowAspect', i*120, i*70) Multiple instructions in one line must be separated by semicolon for i in range(1,4): pp=it.create(‘PrimitiveParts’, ‘p’+str(i));it.positionFCO( pp, ‘SignalFlowAspect’,i*120, i*70) Prebuilt user scripts can be imported: Import myscript myscript.execute( it, gme)
44
Defining a DSML L = Language component Sig n Explanation Concrete SyntaxCNotation for representing models Using the elements of MetaGME: UML extended with stereotypes and OCL Abstract SyntaxAOntology The (important) concepts of a domain and their relations ParsingMcMapping the concepts of A to the concepts of C Creating the concepts in A by using the concepts available in MetaGME Semantic DomainSSemantics describes meaning of the models There can be multiple valid semantics Semantic MappingMsMapping the concepts of A to S Usually means writing an interpreter using GME’s BON/MON interfaces to traverse the models
45
Recap UML concepts Classes Associations Aggregation/Composition Generalization/Inheritance Additional concepts Constraints
46
Example - Binary Tree
47
October 23, 2015 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
48
October 23, 2015 48 Constraints 2. Priority Context Detailed error reporting Automatic syntax check
49
October 23, 2015 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
50
Tricks Connecting nodes time efficiently Pasting Icons
51
Quiz What's GME? What is it good for? What does metamodeling mean? What are models good for? What is an interpreter good for?
52
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.