Ákos Horváth Gábor Bergmann Dániel Varró István Ráth Model Driven Software Development Lecture 3

Hasonló dokumentumok
Ákos Horváth Gábor Bergmann Dániel Varró István Ráth Model Driven Software Development Lecture 3

Simulation and transformation of domain-specific languages. Master s Thesis

Domain- specifikus modellezés az Eclipse Modeling Framework használatával

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

Széchenyi István Egyetem

Declarative Specification of Domain Specific Visual Languages. Master s Thesis. Dr. Dániel Varró assistant professor

Using the CW-Net in a user defined IP network

Code Generation. Ákos Horváth Gábor Bergmann Dániel Varró Model Driven Systems Development Lecture 8. Budapesti Műszaki és Gazdaságtudományi Egyetem

Cloud computing. Cloud computing. Dr. Bakonyi Péter.

Performance Modeling of Intelligent Car Parking Systems

Cloud computing Dr. Bakonyi Péter.

EN United in diversity EN A8-0206/419. Amendment

Modell alapú rendszertervezés

KOGGM614 JÁRMŰIPARI KUTATÁS ÉS FEJLESZTÉS FOLYAMATA

Web Services. (webszolgáltatások): egy osztott alkalmazásfejlesztési plattform

Correlation & Linear Regression in SPSS

Introduction. Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration. Dr. Balázs Simon BME, IIT

Genome 373: Hidden Markov Models I. Doug Fowler

Metamodellezés. Simon Balázs BME IIT, 2011.

Több app. Egy kódbázis

Incremental Static Analysis of Large Source Code Repositories

Adatbázis-kezelés ODBC driverrel

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet. Correlation & Linear. Petra Petrovics.

discosnp demo - Peterlongo Pierre 1 DISCOSNP++: Live demo

Modell Alapú Szoftverfejlesztés Eclipse-szel

Java Development Alapképzés

Cluster Analysis. Potyó László

Modellalkotás UML-ben

STUDENT LOGBOOK. 1 week general practice course for the 6 th year medical students SEMMELWEIS EGYETEM. Name of the student:

István Micsinai Csaba Molnár: Analysing Parliamentary Data in Hungarian

ENROLLMENT FORM / BEIRATKOZÁSI ADATLAP

Kinek szól a könyv? Hogyan épül fel a könyv? Megjelenés előtti szoftver A hálózati kézikönyv tartalma A könyv támogatása Kérdések és megjegyzések

Földtani térképek kartografálásának segítése térinformatikai módszerekkel

ios alkalmazásfejlesztés Koltai Róbert

Correlation & Linear Regression in SPSS

A modern e-learning lehetőségei a tűzoltók oktatásának fejlesztésében. Dicse Jenő üzletfejlesztési igazgató

Longman Exams Dictionary egynyelvű angol szótár nyelvvizsgára készülőknek

Professional competence, autonomy and their effects

On The Number Of Slim Semimodular Lattices

Model-Driven Design and Verification of Component-Based Reactive Systems

Felnőttképzés Európában

Utolsó módosítás:

4. Gyakorlat: Csoportházirend beállítások

LAUDATIO TO Professor László Varga

Fejlesztési projektek menedzselése IBM Rational CLM termékekkel. Ker-Soft Kft. Kaszás Orsolya - üzleti tanácsadó

ANGOL NYELV KÖZÉPSZINT SZÓBELI VIZSGA I. VIZSGÁZTATÓI PÉLDÁNY

A nagyméretű és nagy mennyiségű adatok kezelésének adatbázis technológiai következményei Vállalati információrendszerek GIKOF 2013

Ellenőrző lista. 2. Hálózati útvonal beállítások, kapcsolatok, névfeloldások ellenőrzése: WebEC és BKPR URL-k kliensről történő ellenőrzése.

Pénzügy, számvitel. Váradi Mónika

Rezgésdiagnosztika. Diagnosztika

SQL/PSM kurzorok rész

EN United in diversity EN A8-0206/473. Amendment

Osztott Objektumarchitektúrák

Osztott alkalmazások fejlesztési technológiái Áttekintés

EEA, Eionet and Country visits. Bernt Röndell - SES

SOPHOS simple + secure. A dobozba rejtett biztonság UTM 9. Kókai Gábor - Sophos Advanced Engineer Balogh Viktor - Sophos Architect SOPHOS

ANGOL NYELV KÖZÉPSZINT SZÓBELI VIZSGA I. VIZSGÁZTATÓI PÉLDÁNY

KÉPI INFORMÁCIÓK KEZELHETŐSÉGE. Forczek Erzsébet SZTE ÁOK Orvosi Informatikai Intézet. Összefoglaló

Ráth István. A fejlesztés evolúciója

USER MANUAL Guest user

Tájékoztató a évi határon átnyúló pénzügyi fogyasztói jogviták rendezésével összefüggő és egyéb nemzetközi tevékenységről

C#, OOP. Osztályok tervezése C#-ban

± ± ± ƒ ± ± ± ± ± ± ± ƒ. ± ± ƒ ± ± ± ± ƒ. ± ± ± ± ƒ

Intézményi IKI Gazdasági Nyelvi Vizsga

HU ISSN

Könnyen bevezethető ITIL alapú megoldások a Novell ZENworks segítségével. Hargitai Zsolt Sales Support Manager Novell Hungary

Összegzés és hogyan tovább

Create & validate a signature

Év Tájépítésze pályázat Wallner Krisztina. 1. Vízparti sétány kiépítése Balatonfüreden, 3 km hosszon

problémák elvárások megoldások EAI MDA MOF CWM köztes Sw eszközök hatékonyság konklúzió 09:09 problémák elvárások megoldások EAI MDA MOF CWM

Ráth István. DECOS Nemzeti Nap október 15. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

A forrás pontos megnevezésének elmulasztása valamennyi hivatkozásban szerzői jogsértés (plágium).

Az M2M szabványosítási helyzete

Nemzetközi vállalat - a vállalati szoftvermegoldások egyik vezető szállítója

Smaller Pleasures. Apróbb örömök. Keleti lakk tárgyak Répás János Sándor mûhelyébõl Lacquerware from the workshop of Répás János Sándor

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Az üzleti igények átültetése a gyakorlatba eszköz és módszertan: - ARIS és WebSphere megoldások együttes használata a folyamatmendzsmentben -

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

BÍRÁLATOK ÉS KONFERENCIÁK

Construction of a cube given with its centre and a sideline

FOSS4G-CEE Prágra, 2012 május. Márta Gergely Sándor Csaba

Skills Development at the National University of Public Service

Szoftver-technológia II. A RUP szoftverfolyamat. Irodalom

Contact us Toll free (800) fax (800)

ELEKTRONIKAI ALAPISMERETEK ANGOL NYELVEN

Bevezetés a kvantum-informatikába és kommunikációba 2015/2016 tavasz

Szoftver min ség és menedzsment

Informatikai Tesztek Katalógus

KELER KSZF Zrt. bankgarancia-befogadási kondíciói. Hatályos: július 8.

Road traffic-control equipment

Az Open Data jogi háttere. Dr. Telek Eszter

A kreatív iparág és az új média összefonódása

Oracle SQL Developer Data Modeler és a DW adatmodellezés. Gollnhofer Gábor Meta Consulting Kft.

FAMILY STRUCTURES THROUGH THE LIFE CYCLE

Statistical Inference

Zumtobel Lighting - ecocalc. Csizmadia Zoltán

Új funkciók az RBP-ben október 1-től New functions in RBP from 1 October Tatár Balázs

Átírás:

Domain-specific modeling (and the Eclipse Modeling Framework) Ákos Horváth Gábor Bergmann Dániel Varró István Ráth Model Driven Software Development Lecture 3 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

MOTIVATION

Example metamodel

Instance model, abstract syntax

Instance model, concrete syntax

Domain specific modeling languages Business analyst Business process System designer Dependability expert Dependability model Risk model Security expert Software developer Programming language Software model Software architect

Concrete syntax Usage example of DSMs Abstract syntax Well-formedness constraints Behavioural semantics, simulation, refactoring Call graph (view) State machines (different DSM)

Graphical syntax Structure of DSMs Abstract syntax Well-formedness constraints Behavioural semantics, simulation, refactoring Mapping Code generation Textual syntax View Code (documentation, configuration)

DSM aspects Abstract syntax Views, translations, mappings DSM Concrete syntax Behavioural (dynamic) semantics Wellformedness constraints

DOMAIN SPECIFIC MODELING

Designing modeling languages Language design checklist o Abstract syntax (metamodel) Taxonomy and relationships of model elements Well-formedness rules o Semantics (does not strictly belong to a language) Static Behavioural o??? o Concrete syntax Textual notation Visual notation

Revisiting the example Generalization Automaton initial states transitions Association Instantiation Meta (Language) level AccState State from color:{r,g,b} to Metamodel Transition Class Attribute (Instance) Model level Object Link fr t3 ini to s1 st st a1 s3 fr tr st tr to t1 s2 t2 to fr Model in abstract syntax

Revisiting the example Automaton Meta (Language) level initial states transitions AccState State from Transition color:{r,g,b} to Metamodel Model level fr t3 ini to s1 st st a1 s3 fr tr st tr to t1 s2 t2 to fr a1 s1 t3 t1 s3 s2 t2 Abstract syntax Concrete syntax

Example: Concrete Syntax request() { if (state == "idle" && this.load<10) state = "calculating"; } response() { if (state == "calculating") state = "idle" } Graphical notation Textual notation

Textual notation: Textual vs. Visual + Easy to write: Able to capture complex expressions - Difficult to read: Difficult to comprehend and manage after certain complexity (e.g what refers me?) Visual notation: + Easy to read: Able to express (selected / subset of) details in an intuitive, understandable form + Safe to write: Able to construct syntactically correct models - Difficult to write: graphical editing is slower

Abstract Syntax Example: UML model Graphical notation (Class Diagram) Metamodeling and Domain </packagedelement> Specific Modeling <?xml version="1.0" encoding="utf-8"?> <uml:package name="geography" xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/xmi/2.1" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/uml" xmi:id="_7qi_as2ued-vcp9iy9gyhg"> [...] <packagedelement xmi:type="uml:class" name="country" xmi <ownedattribute name="name" aggregation="composite" xm <type xmi:type="uml:primitivetype" href="pathmap://u </ownedattribute> <ownedattribute name="formercapitals" aggregation="com <uppervalue value="*" xmi:type="uml:literalunlimited <lowervalue xmi:type="uml:literalinteger" xmi:id="_y </ownedattribute> <ownedoperation name="coup" xmi:id="_fhicec2ved-vcp9iy <ownedparameter direction="return" xmi:id="_le7b8c2v </ownedoperation> </packagedelement> <packagedelement xmi:type="uml:class" name="city" xmi:id <ownedattribute name="name" aggregation="composite" xm <type xmi:type="uml:primitivetype" href="pathmap://u </ownedattribute> <ownedattribute name="founded" aggregation="composite" <type xmi:type="uml:primitivetype" href="pathmap://u </ownedattribute> </packagedelement> <packagedelement xmi:type="uml:association" xmi:id="_xq_ <ownedend name="cities" type=" KgpUC2vEd-VCP9iY9GYHg" <uppervalue value="*" xmi:type="uml:literalunlimited <lowervalue value="1" xmi:type="uml:literalinteger" </ownedend> Textual notation <ownedend name="country" type="_ggassc2ved-vcp9iy9gyhg <uppervalue xmi:type="uml:literalunlimitednatural" (XMI 2.1) x <lowervalue xmi:type="uml:literalinteger" value="1" </ownedend>

One-to-many Multiplicity of Notations o 1 abstract syntax many textual and visual notations Human-readable-writable textual or visual syntax Textual syntax for exchange or storage (typically XML) In case of UML, each diagram is only a partial view o 1 abstract model many concrete forms in 1 syntax! Whitespace, diagram layout Comments Syntactic sugar o 1 semantic interpretation many abstract models e.g. UML2 Attribute vs. one-way Association

METALEVELS

Exercise Metalevels Nodes o Film, Human, Novel, Psycho (film), Book, Man, Thriller, Work of Art, The Bourne Identity (novel), Genre, Robert Ludlum, Sir Alfred Hitchcock, this book here: Edges Demonstrated by the exercise: Instantiation vs. subtyping Edge subtyping Metalevels Multi-level metamodeling Deep instantiation o written by, directed by, creator, subtype, instance

Metalevels Automaton AccState «instance» initial State states color:{r,g,b} from to transitions Transition Meta relationship between models fr ini t3 to st st s1 a1 s3 tr st tr fr to t1 s2 t2 to fr Clear level separation: o Loses some flexibility o Much easier to understand o Usually enough to keep two levels in mind at once

Metalevels in MOF OMG s MOF (Meta Object Facility) o 4-layer approach M3 level meta-metamodel MOF Model Fixed: MetaClass, MetaAttr, M2 level metamodel UML Metamodel MetaClass ( Class, MetaAttr ( name )) MetaClass ( Attr, MetaAttr ( name )) M1 level model UML Model Class( Car,Attr( licenseplate )) M0 level data Application Data Car( ABC-123 ), Car( DEF-456 ) o Why exactly four levels?

Metalevels in other approaches EMF (Eclipse Modeling Framework) meta-metamodel Ecore Fixed: EClass, EAttr metamodel Ecore Model (EPackage) «instance» EClass( Car,EAttr( licenseplate )) model Multi-level metamodeling o VPM o Ontologies Application Data (Resource) «instance» Car( ABC-123 ), Car( DEF-456 )

SEMANTICS

Semantics Semantics: the meaning of concepts in a language o Static: what does a snapshot of a model mean? o Dynamic: how does the model change/evolve/behave? Static Semantics o Interpretation of metamodel elements o Meaning of concepts in the abstract syntax o Formal: mathematical statements about the interpretation E.g. formally defined semantics of OCL

Dynamic Semantics Operational o Modeling the operational behavior of language concepts o interpreted o e.g. defining how the finite automaton may change state at run-time o Sometimes dynamic features are introduced only for formalizing dynamic sematics Denotational (Translational) o translating concepts in one language to another language (called semantic domain) o compiled o E.g. explaining state machines as Petri-net

Example: Denotational semantics Automaton Meta (Language) level initial states transitions AccState State from Transition color:{r,g,b} to Metamodel Model level t3 fr to ini st st s1 a1 s3 tr st tr fr to a1 s1 t3 s3 t1 s2 t2 to fr t1 s2 t2 Abstract syntax Semantic Domain

Example: Operational semantics Dynamic feature Meta (Language) level current AccState Automaton initial states transitions State from Transition color:{r,g,b} to Metamodel (Instance) Model level At first, current = initial fr ini st st s1 a1 s3 tr st tr fr to t1 s2 t2 to fr t3 to Model in abstract syntax Possible evolution: current is redirected along a transition

Relationship of models scanning and parsing Concrete syntax Abstract syntax layout operational semantics denotational semantics semantic feedback Semantic domain/ Programming language

DOMAIN-SPECIFIC MODELING LANGUAGES IN ENGINEERING PRACTICE

Well known DSLs MATLAB, SQL, Erlang, Shell scripts, AWK, Verilog, YACC, R,S, Mathematica, XSLT, XMI, OCL, Template languages,

Automotive Industry standard DSMLs o AUTOSAR, MATLAB StateFlow, EAST-AADL Aerospace o AADL Railways o UML-MARTE Systems engineering o SysML, UML-FT

Technologies MATLAB Rational Software Architect Eclipse o EMF o Xtext/Xcore/etc. Microsoft o DSL Tools (Visual Studio) MetaCase o MetaEdit+ JetBrains MPS GEMS, GME, ViatraDSM COTS Language engineering (industry) Academia

MetaEdit+

Eclipse GMF

Microsoft DSL Tools

MPS

GME

ViatraDSM

DSM SUMMARY

Metamodeling Summary o Structural, formal definition of domains o Abstract syntax Domain-Specific Modeling o Concrete notations o Syntax known by experts of the field Metalevels o Meta-relationship between models Semantics o Formal dynamic Denotational / Operational

ECLIPSE MODELING FRAMEWORK

What does EMF provide? EMF = Eclipse Modeling Framework o Reflective Metamodeling Core (Ecore MOF 2.0) o Support for Domain Specific Languages o Editing Support (Notification, Undo, Commands) o Basic Editor Support o XMI Serialization, DB Persistence o Eclipse Integration Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF model structure Containment hierarchy ResourceSet EObject Root object (typically single) EObject EObject EObject EObject Resource EObject Containment reference EObject Cross-reference Resource (typically file) Resource Objects with attributes

ECORE METAMODELLING

Core Ecore constructs Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Core Ecore constructs Class with arbitrary num. of superclasses associations attributes Typed Attribute Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Unidirectional (binary) relation (Association) typed optional inverse end multiplicities

Complete Ecore hiearchy Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Complete Ecore hiearchy Abstract Class Aside: EClass deep_instantiates(2) EObject = every EClass instance implicitly subtypes EObject = every instance of every instance of EClass implicitly instantiates EObject Methods connected to the EClasses EMF-based Enums Parameter for the Eoperation Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

DEFINING A DSM THE EMF WAY

The EMF Toolkit Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Metamodel of the Domain / Modeling language Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Mapping of the Ecore model to the impl platform Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Code templates for generating implementation Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Code generation is carried out based upon the generator model code templates Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Core model manipulation and persistence impl. (Java library) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Displaying EMF objects Command based model manipulation (with undo/redo support) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The EMF Toolkit Automatically generated tree view editor Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels UML class diagram Rational Software Architect EclipseUML (Omondo) Borland Together Architect Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels An XML schema is the metamodel of an XML document Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels Simple programming language for defining Ecore models Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels Direct Ecore defining Ecore tree editor Ecore Tools diagram Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Creation of Ecore metamodels Specially annotated Java interfaces, defines the metamodel Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

THE PETRI NET EXAMPLE

Domain Metamodel: Petri Nets Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF model Ecore representation Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF model Ecore representation EPackage Path of containing resource Type of EReference EClass Inheritance Type of EAttribute Root element Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Reference to all model elements

Class Definition in PetriNet.ecore <eclassifiers xsi:type="ecore:eclass" name="place" esupertypes="#//petrinet/pnelement"> <estructuralfeatures xsi:type="ecore:eattribute" name="token" lowerbound="1" etype="ecore:edatatype http://www.eclipse.org/emf/2002/ecore#//eint"/> <estructuralfeatures xsi:type="ecore:ereference" name="outgoingarcs" upperbound="-1" etype="#//petrinet/ptarc" containment="true" eopposite="#//petrinet/ptarc/fromplace"/> <estructuralfeatures xsi:type="ecore:ereference" name="incomingarcs" upperbound="-1" etype="#//petrinet/tparc" eopposite="#//petrinet/tparc/toplace"/> </eclassifiers> Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Class Definition in PetriNet.ecore <eclassifiers xsi:type="ecore:eclass" name="place" esupertypes="#//petrinet/pnelement"> Class <estructuralfeatures xsi:type="ecore:eattribute" name="token" lowerbound="1" etype="ecore:edatatype http://www.eclipse.org/emf/2002/ecore#//eint"/> Attribute <estructuralfeatures xsi:type="ecore:ereference" name="outgoingarcs" upperbound="-1" etype="#//petrinet/ptarc" containment="true" Reference eopposite="#//petrinet/ptarc/fromplace"/> Multiplicity Containment <estructuralfeatures xsi:type="ecore:ereference" name="incomingarcs" upperbound="-1" etype="#//petrinet/tparc" eopposite="#//petrinet/tparc/toplace"/> </eclassifiers> Type Opposite End Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

CODE GENERATION FROM ECORE

Goal: Generator model (.genmodel) o Specify the attributes of the code generation EMF model o Tree Editor o Refers to the ecore model Code generation attributes o Java version (e.g., use Enums in case of Java 5 and higher) o Package/project names o Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Code Generation from Ecore (.genmodel) Ecore model remains pure and independent Customizable (wrappers, code formatters, etc.) Generated plugins: o Model persistency (EMF.model) o Model management (EMF.edit) o Model editor (EMF.editor) Has some limitations o What happens when the underlying.ecore changes? Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Generator model Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Generator model referred Ecore elements General parameters Edit specific attributes Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Editor specific attributes

Generated EMF components 3. Tree Editor 2. Model Manipulation 1. Model Persistency Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Generated EMF components Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF.model Optimized persistency handling Fully featured Java code of the Ecore model Specific factories for all packages Notification mechanism (observer pattern) Possible extension points: o Advanced editor o Own file format with parser Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EClass implementation <interface> Notifier BasicNotifierImpl Notification/Observer Layer <interface> EObject <interface> Place BasicEObjectImpl EObjectImpl PlaceImpl Common Implementation Layer Generalize the already defined framework element Business Layer Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Auto-Generated Interface ESuperClass EMF specific annotations Getters/Setters for attributes No setter when multiplicity > 1 (use add/remove instead) EList: EMF list interface (~10 implementations Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EObject API <interface> Place getincomingarcs(): Elist getoutgoingarcs(): Elist gettoken(): int settoken(value:int) PlaceImpl getincomingarcs(): Elist getoutgoingarcs(): Elist gettoken(): int settoken(value:int) Every class contains framework-specific methods: o Reflective get/set (eget, eset) o Consistent manipulation (einverseremove) o Notifications for feature changes (very useful e.g. in GUI!) Inherited from common supertype EObject o see deep instantiation earlier Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EOperation Implementation Represents the frame of a Java method Present in both the interface and implementing class Important: o Have to change the generated annotation to NOT so that next code generation phase does not overwrite it o Have to implement the method manually Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Client Programming with EMF Place p1 = PetrinetFactory.eINSTANCE.createPlace(); p1.setname("p1"); Place p2 = PetrinetFactory.eINSTANCE.createPlace(); p2.setname("p2"); Transition t1 = PetrinetFactory.eINSTANCE.createTransition(); t1.setname("t1"); // Inverse direction (p1.outgoingarcs) is set automatically PTArc a0 = PetrinetFactory.eINSTANCE.createPTArc(); a0.setfromplace(p1); a0.settotransition(t1); TPArc a1 = PetrinetFactory.eINSTANCE.createTPArc(); a1.settoplace(p2); a1.setfromtransition(t1); Set target of PT arc Create a place Create a transition Create a PT arc Set source of PT arc Advanced client programming: Reflective Ecore API Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The org.eclipse.emf.ecore.util Package Contains utility classes and interfaces: o ECoreEContentAdapter: maintains itself as a notification adapter for a whole containment (sub)tree o UsageCrossReferencer: finds each ModelElement pointing to the corresponding EObject o ContentTreeIterator: An iterator over the tree contents of a collection of EObjects o Copier: deep copy of EObject Elements and EReferences o Etc. (This is not generated but a generic component) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Generated EMF components Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF.Edit Separates the GUI and the model Generator pattern: o Provider class for each model element o Base class: ItemProvider o Forward EMF model change notifications to the viewer Provides: o Element text o Icon o Description of features in EClass Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF.Edit Handles EMF.model notifications Model manipulation commands (base + own) Converts model notifications to GUI notifications Model manipulation through commands o Possible alternative to direct setters o Undoable, redoable o ItemProvider.createAddCommand( ) etc. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Generated EMF components Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

EMF.Editor EMF.Editor generates the SWT/JFace for the graphical editor Generates: o Tree editor o Wizards o Menus o plugins Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

The editor of Petri Net models <?xml version="1.0" encoding="utf-8"?> <PetriNets.petrinet:PetriNet xmi:version="2.0" xmlns:xmi="http://www.omg.org/xmi" xmlns:petrinets.petrinet= "http:///petrinets/petrinet.ecore"> <transitions name="t1" incomingarcs= "//@places.0/@outgoingarcs.0"> <outgoingarcs weight="2" toplace="//@places.1"/> </transitions> <places name="p1" token="1"> <outgoingarcs weight="1" totransition="//@transitions.0"/> </places> <places name="p2" incomingarcs= "//@transitions.0/@outgoingarcs.0"/> </PetriNets.petrinet:PetriNet> Tree View Place p1 XMI 2.0 View Reference: URI (or XMI.id) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

TOOLS, API AND UTILITIES

Basic EMF tools Validation o Validate constraints over EMF models Query o High-level query language for EMF o See also: EMF-IncQuery Compare o To structurally compare EMF models (e.g., versioning) Teneo o Persistency layer over relation databases SDO o Service Oriented Architecture based on EMF CDO o distributed, client-server EMF models Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Ecore Tools: Ecore Diagram Editor Graphical DSL to define EMF metamodels o Based on GMF

Textual DSL for defining metamodel + textual syntax Context-free grammar! Generates: o Metamodel o Parser o Editor features Xtext Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

GMF Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék