Date post: | 06-May-2015 |
Category: |
Education |
Upload: | tonny-madsen |
View: | 1,142 times |
Download: | 2 times |
PR0029 - 2010-05-31
Redistribution and other use of this material requires written permission from The RCP Company.
Eclipse Modeling Tools - 2010-10-26
Eclipse is probably best known as a first class Java IDE, but it is so much more than that.In this talk, I will present the different tools that makes up the Eclipse Modeling Project from the simple (EMF) to the very complex (QVT/O). The emphasis will be on the immediately useful techniques with plenty of demonstrations.
PR0029 - 2010-05-31
2
Agenda
Eclipse is… what exactly? The Eclipse Architecture
The Eclipse Modeling Project and sub-projects EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
The Eclipse Modeling Tools EMF OCL CDO XText GMF Jet Xpand QVT/O
PR0029 - 2010-05-31
3
Eclipse is… what exactly?
PR0029 - 2010-05-31
4
Eclipse – The Sweets
PR0029 - 2010-05-31
5
ECLIPSE – The Mitsubishi Car
PR0029 - 2010-05-31
6
Eclipse – The Java IDE
PR0029 - 2010-05-31
7
Eclipse – The Tools Platform
PR0029 - 2010-05-31
8
Eclipse – The Application Platform
PR0029 - 2010-05-31
9
Eclipse – The Application Platform
PR0029 - 2010-05-31
10
IBM Lotus NotesVersion 8
PR0029 - 2010-05-31
11
The Eclipse Modeling Projectand sub-projects
PR0029 - 2010-05-31
12
Eclipse Modeling Project
“The Eclipse Modeling Project focuses on the evolution and promotion of model-based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations.”
PR0029 - 2010-05-31
13
Relevant Modeling Sub-Projects
Administrative Projects EMF, EMFT, GMP, GMT, MDT, M2M, M2T, and TMF
Some Relevant Technical Projects EMF – Eclipse Modeling Framework – is the base technology used to represent
models OCL – Object Constraint Language – allows you to specify advanced constraints
and invariants CDO – Connected Data Objects – is a distributed shared model framework for
EMF models and meta models XText – is a text based editor framework for EMF models based on EBNF
grammars GMF – Graphical Modeling Framwork – is a graphics based editor framework for
EMF models JET – Java Emitter Templates – is a JSP like language for generating Java code
from a model Xpand – is a high-level template language used to translate models to text QVT/O – Operational QVT (Query/View/Transformation) – is a very, very high-
level language for model to model transformations Teneo – is a database persistency solution for EMF using Hibernate or EclipseLink
PR0029 - 2010-05-31
14
EMF
Eclipse Modeling Framework – is the base technology used to represent models
Logical models based on ER diagrams
L0087 - 2010-09-19
15
Logical Model for NBS – Noware Bike Shop
~
Item
HandlebarsFrame
Bike
0..*
Wheel Gear Saddle
L0087 - 2010-09-19
16
Logical Model for EMF
~ Named Element
Model Element
0..1
Typed ElementClassifier
Structural Feature
Attribute
Reference
Class
Data Type
0..*
0..*
0..*
type
opposite
superTypes
0..*
PR0029 - 2010-05-31
17
OCL
Object Constraint Language – allows you to specify advanced constraints and invariants
E.g. Item price is positive:
Context Item: inv self.price > 0
It has exactly one Saddle: Context Bike: inv self.items->select(i : Item | i.oclIsKindOf(Saddle))->size()
== 1
Can be tested using the interactive console
Can be embedded directly in Ecore
PR0029 - 2010-05-31
18
CDO
Connected Data Objects – is a distributed shared model framework for EMF models and meta models
PR0029 - 2010-05-31
19
XText
XText – is a text based editor framework for EMF models based on EBNF grammars
events doorClosed D1CL drawOpened D2OP …end resetEvents doorOpenedend commands unlockPanel PNUL lockPanel PNLK …end state idle actions {unlockDoor lockPanel} doorClosed => activeend state active drawOpened => waitingForLight lightOn => waitingForDrawend …
grammar my.pack.SecretCompartments with org.eclipse.xtext.common.Terminals
generate secretcompartment "http://www.eclipse.org/secretcompartment" Statemachine : 'events' (events+=Event)+ 'end' ('resetEvents' (resetEvents+=[Event])+ 'end')? 'commands' (commands+=Command)+ 'end' (states+=State)+; Event : name=ID code=ID; Command : name=ID code=ID; State : 'state' name=ID ('actions' '{' (actions+=[Command])+ '}')? (transitions+=Transition)* 'end'; Transition : event=[Event] '=>' state=[State];
PR0029 - 2010-05-31
20
GMF
Graphical Modeling Framwork – is a graphics based editor framework for EMF models
In itself also a number of models that describe how objects and graphical items and tools maps
PR0029 - 2010-05-31
21
JET
Java Emitter Templates – is a JSP like language for generating Java code from a model
public <%if (isEnum) {%>enum<%} else {%>final class<%}%> <%=genEnum.getName()%> <%if (isEnum) {%>implements<%} else {%>extends<%}%> <%=genModel.isSuppressEMFMetaData() && !genModel.isSuppressInterfaces() ? "Internal" + genEnum.getName() : genModel.getImportedName(isEnum ? "org.eclipse.emf.common.util.Enumerator" : "org.eclipse.emf.common.util.AbstractEnumerator")%>{<%if (isEnum) {%> <%if (genEnum.getGenEnumLiterals().isEmpty()) {%>
;
<%}else {%> <%for (Iterator<GenEnumLiteral> l = genEnum.getGenEnumLiterals().iterator(); l.hasNext(); ) { GenEnumLiteral genEnumLiteral = l.next(); %>
/** * The '<em><b><%=genEnumLiteral.getFormattedName()%></b></em>' literal object. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #<%=genEnumLiteral.getEnumLiteralValueConstantName()%> * @generated * @ordered */<%=genEnumLiteral.getEnumLiteralInstanceConstantName()%>(<%=genEnumLiteral.getValue()%>, "<
%=genEnumLiteral.getName()%>", <%=Literals.toStringLiteral(genEnumLiteral.getLiteral(), genModel)%>)<%if (l.hasNext()) {%>,<%} else {%>;<%}%><%=genModel.getNonNLS()%><%=genModel.getNonNLS(2)%>
<%}%> <%}%><%}%>
PR0029 - 2010-05-31
22
Xpand
Xpand – is a high-level template language used to translate models to text
Expandable and type-safe Has an aspect-based extension system to allow users to extend current templates
«DEFINE Root FOR data::DataModel» «EXPAND Entity FOREACH entity»«ENDDEFINE»
«DEFINE Entity FOR data::Entity» «FILE name + ".java"» public class «name» { «FOREACH attribute AS a» // bad practice private «a.type» «a.name»; «ENDFOREACH» } «ENDFILE»«ENDDEFINE»
PR0029 - 2010-05-31
23
Eclipse.dk – The Danish Eclipse Society
Eclipse.dk was created in Marts 2007 as a meeting place for everyone interested in the Eclipse (www.eclipse.org) platform.
The purpose of Eclipse.dk is as follows: To promote the knowledge of Eclipse in Denmark. To create networks amongst danish Eclipse-users and developers. To build knowledge on Eclipse in Denmark, especially
In danish institutes of higher education. Between danish companies developing applications based on Eclipse.
Create and maintain a web site on Eclipse for danish users – eclipse.dk.
Strengthen the relations between danish and international Eclipse-users and organizations.
The eclipse.dk society has members representing not only vendors of Eclipse-based products and services, but also users of the platform and representatives from institutions of higher education.
PR0029 - 2010-05-31
24
Q & A
PR0029 - 2010-05-31
25
About Me
Tonny Madsen, Founder and Owner of The RCP Company
20 years of experience in system development in major companies 9 years experience as the Systems Architect of an 20+ MLoC project 8 years of experience with Eclipse and Eclipse RCP
Solutions Member of the Eclipse Foundation Chairman of Eclipse.dk Extern Lecturer at IT-University on Model Driven Development and
Domain Specific Languages Regular speaker at EclipseCon, Eclipse Summit, etc
PR0029 - 2010-05-31
26
If You Want to Know More about Eclipse
The Foundation: http://eclipse.org
The Danish User Group: http://eclipse.dk
The training: http://www.eclipse.org/community/training/classes.php
Resources on Eclipse: http://www.eclipse.org/resources/
Consolidated Blog: http://planeteclipse.org/
PR0029 - 2010-05-31
27
If You Want to Know More about Modeling
The Project: http://eclipse.org/modeling/
Downloading Eclipse for Modeling: http://www.eclipse.org/downloads/packages/eclipse-modeling-tools-includes-incu
bating-components/heliossr1
The training: Not yet, but coming after the Summer ITU have a 14 weeks class on “Model Driven Development” - https://
mit.itu.dk/ucs/cb_www/course.sml?course_id=913525&semester_id=912846
Tutorials on modeling