SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
EclipseCon France – June 14 2018
Lessons learned from building
Eclipse-based add-ons for
commercial modeling tools
(from a technology perspective)
István Ráth
Ákos Horváth
MagicDraw
• A popular modeling tool for UML/SysML, available since 1998
• Over 500.000 downloads in 90 countries
• Standard-compliant and highly customizable platform
• Not just a desktop app, but a complete suite of tools
• Simulation
• Analysis
• Collaboration ! Teamwork Cloud
OpenMBEE: an open source ecosystem
• Open modeling platform
• Developed by NASA JPL and others
• Provides
• MMS – collaborative repository with OpenAPI/
Swagger interfaces
• MDK – MagicDraw client built with MD OpenAPI
• DocGen – document generator for SysML models
• View Editor – web-based front-end
• Integrations 

(Mathematica, bae, K, DOORS-NG, Matlab)
• A lot of useful and reusable code:

https://github.com/Open-MBEE
IncQuery
for MagicDrawTM
and Teamwork CloudTM
IncQuery – cloud-based modeling beyond EMF
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
• MagicDraw &
Teamwork Cloud
• Traditional DBs
• NoSQL & graph DB
• GitHub, …
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
• MagicDraw &
Teamwork Cloud
• Traditional DBs
• NoSQL & graph DB
• GitHub, …
• OpenAPI / Swagger interfaces
• High-performance indexing
• Change updates via callbacks
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
• MagicDraw &
Teamwork Cloud
• Traditional DBs
• NoSQL & graph DB
• GitHub, …
• Clusterized NoSQL
• On-demand
materialization
• Ecore only used for
schema / ontology,
no EMF
instantiation
• OpenAPI / Swagger interfaces
• High-performance indexing
• Change updates via callbacks
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
• MagicDraw &
Teamwork Cloud
• Traditional DBs
• NoSQL & graph DB
• GitHub, …
1000x faster than
conventional DB
technology
• Clusterized NoSQL
• On-demand
materialization
• Ecore only used for
schema / ontology,
no EMF
instantiation
• OpenAPI / Swagger interfaces
• High-performance indexing
• Change updates via callbacks
IncQuery – cloud-based modeling beyond EMF
Scalable
Language
tailored to
models
Validation
and
analytics
features
Hybrid
database
technolog
y
Tool / Repository
Persistent
index
VIATRA query & xform 

engine
In-memory
index
Containerized
microservices !
Horizontal scaling in
the cloud
• MagicDraw &
Teamwork Cloud
• Traditional DBs
• NoSQL & graph DB
• GitHub, …
1000x faster than
conventional DB
technology
• Clusterized NoSQL
• On-demand
materialization
• Ecore only used for
schema / ontology,
no EMF
instantiation
• OpenAPI / Swagger interfaces
• High-performance indexing
• Change updates via callbacks
Scenarios
• Model analysis and validation reporting 

(~ “LGTM / FindBugs for models”)
• E.g. check if the signals sent/received over a port correspond to the flow properties
• identify cyclic activity calls
• find deadlock states, i.e. incoming transitions but not outgoing
• Etc.
• Change impact analysis
• If I change an upstream project, how will it affect downstream projects?
• Fast queries ! realizable in pre-commit hooks
• Ad-hoc model queries
• Model comprehension
• Reviews
• Traceability analysis
IncQuery for MagicDraw and Teamwork Cloud

Screenshots
IncQuery for MagicDraw and Teamwork Cloud

Screenshots
IncQuery for MagicDraw and Teamwork Cloud

Screenshots
IncQuery is built on open source
http://eclipse.org/viatra
Model query and transformation framework
• Declarative
• Scalable
• Reactive
Easy integration
• Java & other JVM languages
• Enabling libraries for

open & commercial

tools
Major industrial users & partners:
IncQuery is built on open source
http://eclipse.org/viatra
Model query and transformation framework
• Declarative
• Scalable
• Reactive
Easy integration
• Java & other JVM languages
• Enabling libraries for

open & commercial

tools
Major industrial users & partners:
What’s new in VIATRA 2.0?
• Simplification
• Fewer third party dependencies
• New language features
• Lots of performance and memory
optimizations
• Java compatibility (Java 8 required &
used on API, Java 9/10 supported)
• Available in Eclipse Photon!
MagicDraw and EMF
• Lesson #1 Custom EMF metamodel for UML
• Incompatible with MDT.UML
• Most visible difference: profile support
• Applied profiles and stereotypes can be referenced by name
• „string typing”
• Lesson #2 Custom EMF implementation
• Mostly EMF-compatible, including change notifications! (support
incremental processing out-of-the box)
• Custom memory management (loading-unloading in the background)
• Custom transaction handling
MagicDraw and EMF
• Lesson #1 Custom EMF metamodel for UML
• Incompatible with MDT.UML
• Most visible difference: profile support
• Applied profiles and stereotypes can be referenced by name
• „string typing”
• Lesson #2 Custom EMF implementation
• Mostly EMF-compatible, including change notifications! (support
incremental processing out-of-the box)
• Custom memory management (loading-unloading in the background)
• Custom transaction handling
V4MD: VIATRA for MagicDraw
• Open source ”glue code” (EPL v2)
• Demonstrates how to bind EMF-based
tech to MagicDraw
• Deployable as a MD plug-in built with
Gradle
• http://github.com/viatra/v4md
MagicDraw vs. OSGi
• MD 18.x+ is based on Eclipse Equinox
• not entirely: the application itself is, but…
• Lesson #3
• MagicDraw plug-ins are not OSGi bundles
• No classpath separation
• MagicDraw API cannot be referenced as OSGi dependencies
• Lesson #4
• Custom plugin.xml format
• Incompatible with PDE
Lesson #5: Integrating Xtext into MagicDraw
• Parsing infrastructure is easy to reuse, but...
• As standalone Java application
• Maven dependencies useful
• ... a full-blown editor integration is tricky
• Many dependencies, including SWT and JDT
• Integrating SWT-based UI into Swing is not practical
• Alternatives we considered:
• Future proof: Web-based editor with LSP
• Quick-and-dirty: Separate Eclipse RCP based application
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
• No dependency issues inside
MagicDraw
• But requires a 200MB RCP app
(per platform)
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
• No dependency issues inside
MagicDraw
• But requires a 200MB RCP app
(per platform)
• Just works
• Custom “protocol” for
communication
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
• No dependency issues inside
MagicDraw
• But requires a 200MB RCP app
(per platform)
• Just works
• Custom “protocol” for
communication
• Can host the language server
• A path forward as technology
matures
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
• No dependency issues inside
MagicDraw
• But requires a 200MB RCP app
(per platform)
• Just works
• Custom “protocol” for
communication
• Can host the language server
• A path forward as technology
matures
• Platform specific issues with
window management
Alternatives: LSP vs. RCP
LSP
• Deploy language server within MD
! dependency issues
• Potential collusions with built-in
jars
• No mature LSP client for Swing UI
• Monaco editor has issues with built-
in browser
RCP-based „companion app”
• No dependency issues inside
MagicDraw
• But requires a 200MB RCP app
(per platform)
• Just works
• Custom “protocol” for
communication
• Can host the language server
• A path forward as technology
matures
• Platform specific issues with
window management
Simple UML path
expressions
UML Types
Keywords in purple
Check expressions
A "companion app” for MagicDraw:

The VIATRA Query Language Editor
https://www.eclipse.org/viatra/documentation/tutorial.html 

https://www.eclipse.org/viatra/documentation/query-language.html
Pattern that lists
SysML Blocks
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
• MagicDraw OpenAPI dependencies
• Download and install MagicDraw instance
• Use as dependency source
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
• MagicDraw OpenAPI dependencies
• Download and install MagicDraw instance
• Use as dependency source
• External dependencies
• Downloaded via standard Gradle mechanisms
• Script can update plugin and installation
descriptor files
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
• MagicDraw OpenAPI dependencies
• Download and install MagicDraw instance
• Use as dependency source
• External dependencies
• Downloaded via standard Gradle mechanisms
• Script can update plugin and installation
descriptor files
• Generated code
• Handled via Gradle plugins
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
• MagicDraw OpenAPI dependencies
• Download and install MagicDraw instance
• Use as dependency source
• External dependencies
• Downloaded via standard Gradle mechanisms
• Script can update plugin and installation
descriptor files
• Generated code
• Handled via Gradle plugins
• Running MagicDraw
• Starts the Platform Runner of MagicDraw
• Parameterized with the Gradle Java Runner
Lesson #6: Building MagicDraw plugins
Challenges
• Collect jars from a MagicDraw installation
• Non-standard solution
• Execute new MagicDraw instance with plug-in
• Starting an OSGi container is non-trivial
• Add third-party dependencies
• Maven dependencies
• Plugin descriptors have to include all jar files by
name
• Separate installation descriptor as well in a
different format
• Handling generated code
• VIATRA VQL language
• Xtend language
Solution: Gradle
• Originates from OpenMBEE project
• Gradle-based solution
• Relies on scripting
• MagicDraw OpenAPI dependencies
• Download and install MagicDraw instance
• Use as dependency source
• External dependencies
• Downloaded via standard Gradle mechanisms
• Script can update plugin and installation
descriptor files
• Generated code
• Handled via Gradle plugins
• Running MagicDraw
• Starts the Platform Runner of MagicDraw
• Parameterized with the Gradle Java Runner
MD Plugin Skeleton
• “Hello world” plugin based on the Gradle setup
• Easy to reuse
• https://github.com/IncQueryLabs/MD_plugin_skeleton
Some more open source contributions
• MD VIATRA benchmark
• https://github.com/IncQueryLabs/magicdraw-viatra-benchmark
• Scalability benchmark for VIATRA queries over MagicDraw models
• TMT model fork
• https://github.com/IncQueryLabs/TMT-SysML-Model
• Large (300k+) real-world SysML model, very useful to testing tools
• Examples of actual IQ4MD validation rules inspired by NASA JPL
• MDK fork
• https://github.com/IncQueryLabs/mdk
• Example usage of V4MD within MDK, NASA JPL’s toolkit
Takeaways
Takeaways
• Integrating with proprietary tools is more challenging...
• Compared to a purely open Eclipse ecosystem
• ... But not that hard with the proper tools
Takeaways
• Integrating with proprietary tools is more challenging...
• Compared to a purely open Eclipse ecosystem
• ... But not that hard with the proper tools
• No Magic is an open and collaborative partner
• Open ecosystem around MD (on a smaller scale) is worth
exploring
• And contributing to!
Takeaways
• Integrating with proprietary tools is more challenging...
• Compared to a purely open Eclipse ecosystem
• ... But not that hard with the proper tools
• No Magic is an open and collaborative partner
• Open ecosystem around MD (on a smaller scale) is worth
exploring
• And contributing to!
• Watch out for VIATRA 2.0 and the IncQuery Server
Takeaways
• Integrating with proprietary tools is more challenging...
• Compared to a purely open Eclipse ecosystem
• ... But not that hard with the proper tools
• No Magic is an open and collaborative partner
• Open ecosystem around MD (on a smaller scale) is worth
exploring
• And contributing to!
• Watch out for VIATRA 2.0 and the IncQuery Server
• Get the IncQuery MagicDraw plug-in at https://
incquerylabs.com/incquery
• Complete with tutorial and examples
Takeaways
• Integrating with proprietary tools is more challenging...
• Compared to a purely open Eclipse ecosystem
• ... But not that hard with the proper tools
• No Magic is an open and collaborative partner
• Open ecosystem around MD (on a smaller scale) is worth
exploring
• And contributing to!
• Watch out for VIATRA 2.0 and the IncQuery Server
• Get the IncQuery MagicDraw plug-in at https://
incquerylabs.com/incquery
• Complete with tutorial and examples
Thank you!
+36 70 633 3973
@IncQueryLabs
iq4md AT incquerylabs.com
http://iq4md.incquerylabs.com
info AT incquerylabs.com

Mais conteúdo relacionado

Mais procurados

From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary120bi
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)Ralf Sternberg
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021MaryamAnwar10
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum SlidesAbhishek Gupta
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveDragos Manolescu
 
Apache Harmony: An Open Innovation
Apache Harmony: An Open InnovationApache Harmony: An Open Innovation
Apache Harmony: An Open InnovationTim Ellison
 
Introduction To Core Java - SpringPeople
Introduction To Core Java - SpringPeopleIntroduction To Core Java - SpringPeople
Introduction To Core Java - SpringPeopleSpringPeople
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2RatnaJava
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalorezasi besant
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java RatnaJava
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataInfluxData
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)My own sweet home!
 
Domain Driven Design Through Onion Architecture
Domain Driven Design Through Onion ArchitectureDomain Driven Design Through Onion Architecture
Domain Driven Design Through Onion ArchitectureBoldRadius Solutions
 

Mais procurados (16)

From java-to-ruby-book-summary
From java-to-ruby-book-summaryFrom java-to-ruby-book-summary
From java-to-ruby-book-summary
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)
 
Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum Slides
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
 
Apache Harmony: An Open Innovation
Apache Harmony: An Open InnovationApache Harmony: An Open Innovation
Apache Harmony: An Open Innovation
 
Introduction To Core Java - SpringPeople
Introduction To Core Java - SpringPeopleIntroduction To Core Java - SpringPeople
Introduction To Core Java - SpringPeople
 
Intro cujojs
Intro cujojsIntro cujojs
Intro cujojs
 
Introduction to Java Part-2
Introduction to Java Part-2Introduction to Java Part-2
Introduction to Java Part-2
 
Why akka
Why akkaWhy akka
Why akka
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalore
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxDataUsing the Java Client Library by Noah Crowley, DevRel | InfluxData
Using the Java Client Library by Noah Crowley, DevRel | InfluxData
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
 
Domain Driven Design Through Onion Architecture
Domain Driven Design Through Onion ArchitectureDomain Driven Design Through Onion Architecture
Domain Driven Design Through Onion Architecture
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 

Semelhante a EclipseCon France - Building add-ons for modeling tools

IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019Istvan Rath
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.jsKasey McCurdy
 
Swagger - Making REST APIs friendlier
Swagger - Making REST APIs friendlierSwagger - Making REST APIs friendlier
Swagger - Making REST APIs friendlierMiroslav Resetar
 
Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsSandeep Adwankar
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewboxLino Telera
 
Isomorphic JavaScript – future of the web
Isomorphic JavaScript – future of the webIsomorphic JavaScript – future of the web
Isomorphic JavaScript – future of the webSigma Software
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...InfluxData
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxData
 
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmerconfluent
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceIgor Anishchenko
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source ContributionsNeev Technologies
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANJeff Fox
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to JavaPawanMM
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 

Semelhante a EclipseCon France - Building add-ons for modeling tools (20)

IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019IncQuery Server for Teamwork Cloud - Talk at IW2019
IncQuery Server for Teamwork Cloud - Talk at IW2019
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
Swagger - Making REST APIs friendlier
Swagger - Making REST APIs friendlierSwagger - Making REST APIs friendlier
Swagger - Making REST APIs friendlier
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical Skills
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
Isomorphic JavaScript – future of the web
Isomorphic JavaScript – future of the webIsomorphic JavaScript – future of the web
Isomorphic JavaScript – future of the web
 
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
2.0 Client Libraries & Using the Java Client by Noah Crowley, Developer Advoc...
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
InfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah CrowleyInfluxDB 2.0 Client Libraries by Noah Crowley
InfluxDB 2.0 Client Libraries by Noah Crowley
 
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Neev Open Source Contributions
Neev Open Source ContributionsNeev Open Source Contributions
Neev Open Source Contributions
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to Java
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 

Mais de IncQuery Labs

IncQuery_presentation_Incose_EMEA_WSEC.pptx
IncQuery_presentation_Incose_EMEA_WSEC.pptxIncQuery_presentation_Incose_EMEA_WSEC.pptx
IncQuery_presentation_Incose_EMEA_WSEC.pptxIncQuery Labs
 
IncQuery-Integrate22-20220607.pdf
IncQuery-Integrate22-20220607.pdfIncQuery-Integrate22-20220607.pdf
IncQuery-Integrate22-20220607.pdfIncQuery Labs
 
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310IncQuery Group's presentation for the INCOSE Polish Chapter 20220310
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310IncQuery Labs
 
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...IncQuery Labs
 
IncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IWIncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IWIncQuery Labs
 
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...IncQuery Labs
 
Towards Continuous Consistency Checking of DevOps Artefacts
Towards Continuous Consistency Checking of DevOps ArtefactsTowards Continuous Consistency Checking of DevOps Artefacts
Towards Continuous Consistency Checking of DevOps ArtefactsIncQuery Labs
 
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...IncQuery Labs
 
The Genesis of Holistic Systems Design
The Genesis of Holistic Systems DesignThe Genesis of Holistic Systems Design
The Genesis of Holistic Systems DesignIncQuery Labs
 
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...IncQuery Labs
 
Model Checking as a Service: Towards Pragmatic Hidden Formal Methods
Model Checking as a Service: Towards Pragmatic Hidden Formal MethodsModel Checking as a Service: Towards Pragmatic Hidden Formal Methods
Model Checking as a Service: Towards Pragmatic Hidden Formal MethodsIncQuery Labs
 
IncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs
 
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncQuery Labs
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...IncQuery Labs
 

Mais de IncQuery Labs (14)

IncQuery_presentation_Incose_EMEA_WSEC.pptx
IncQuery_presentation_Incose_EMEA_WSEC.pptxIncQuery_presentation_Incose_EMEA_WSEC.pptx
IncQuery_presentation_Incose_EMEA_WSEC.pptx
 
IncQuery-Integrate22-20220607.pdf
IncQuery-Integrate22-20220607.pdfIncQuery-Integrate22-20220607.pdf
IncQuery-Integrate22-20220607.pdf
 
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310IncQuery Group's presentation for the INCOSE Polish Chapter 20220310
IncQuery Group's presentation for the INCOSE Polish Chapter 20220310
 
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
 
IncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IWIncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IW
 
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
 
Towards Continuous Consistency Checking of DevOps Artefacts
Towards Continuous Consistency Checking of DevOps ArtefactsTowards Continuous Consistency Checking of DevOps Artefacts
Towards Continuous Consistency Checking of DevOps Artefacts
 
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
 
The Genesis of Holistic Systems Design
The Genesis of Holistic Systems DesignThe Genesis of Holistic Systems Design
The Genesis of Holistic Systems Design
 
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...
Towards the Next Generation of Reactive Model Transformations on Low-Code Pla...
 
Model Checking as a Service: Towards Pragmatic Hidden Formal Methods
Model Checking as a Service: Towards Pragmatic Hidden Formal MethodsModel Checking as a Service: Towards Pragmatic Hidden Formal Methods
Model Checking as a Service: Towards Pragmatic Hidden Formal Methods
 
IncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP TalkIncQuery Labs Models 2020 MIP Talk
IncQuery Labs Models 2020 MIP Talk
 
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery LabsIncquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
Incquery Suite Models 2020 Conference by István Ráth, CEO of IncQuery Labs
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
 

Último

CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxk795866
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniquesugginaramesh
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxPoojaBan
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort servicejennyeacort
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction managementMariconPadriquez1
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .Satyam Kumar
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 

Último (20)

CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Introduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptxIntroduction-To-Agricultural-Surveillance-Rover.pptx
Introduction-To-Agricultural-Surveillance-Rover.pptx
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniques
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptx
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort serviceGurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
Gurgaon ✡️9711147426✨Call In girls Gurgaon Sector 51 escort service
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction management
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 

EclipseCon France - Building add-ons for modeling tools

  • 1. EclipseCon France – June 14 2018 Lessons learned from building Eclipse-based add-ons for commercial modeling tools (from a technology perspective) István Ráth Ákos Horváth
  • 2. MagicDraw • A popular modeling tool for UML/SysML, available since 1998 • Over 500.000 downloads in 90 countries • Standard-compliant and highly customizable platform • Not just a desktop app, but a complete suite of tools • Simulation • Analysis • Collaboration ! Teamwork Cloud
  • 3. OpenMBEE: an open source ecosystem • Open modeling platform • Developed by NASA JPL and others • Provides • MMS – collaborative repository with OpenAPI/ Swagger interfaces • MDK – MagicDraw client built with MD OpenAPI • DocGen – document generator for SysML models • View Editor – web-based front-end • Integrations 
 (Mathematica, bae, K, DOORS-NG, Matlab) • A lot of useful and reusable code:
 https://github.com/Open-MBEE
  • 5. IncQuery – cloud-based modeling beyond EMF
  • 6. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y
  • 7. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index
  • 8. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index • MagicDraw & Teamwork Cloud • Traditional DBs • NoSQL & graph DB • GitHub, …
  • 9. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index • MagicDraw & Teamwork Cloud • Traditional DBs • NoSQL & graph DB • GitHub, … • OpenAPI / Swagger interfaces • High-performance indexing • Change updates via callbacks
  • 10. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index • MagicDraw & Teamwork Cloud • Traditional DBs • NoSQL & graph DB • GitHub, … • Clusterized NoSQL • On-demand materialization • Ecore only used for schema / ontology, no EMF instantiation • OpenAPI / Swagger interfaces • High-performance indexing • Change updates via callbacks
  • 11. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index • MagicDraw & Teamwork Cloud • Traditional DBs • NoSQL & graph DB • GitHub, … 1000x faster than conventional DB technology • Clusterized NoSQL • On-demand materialization • Ecore only used for schema / ontology, no EMF instantiation • OpenAPI / Swagger interfaces • High-performance indexing • Change updates via callbacks
  • 12. IncQuery – cloud-based modeling beyond EMF Scalable Language tailored to models Validation and analytics features Hybrid database technolog y Tool / Repository Persistent index VIATRA query & xform 
 engine In-memory index Containerized microservices ! Horizontal scaling in the cloud • MagicDraw & Teamwork Cloud • Traditional DBs • NoSQL & graph DB • GitHub, … 1000x faster than conventional DB technology • Clusterized NoSQL • On-demand materialization • Ecore only used for schema / ontology, no EMF instantiation • OpenAPI / Swagger interfaces • High-performance indexing • Change updates via callbacks
  • 13. Scenarios • Model analysis and validation reporting 
 (~ “LGTM / FindBugs for models”) • E.g. check if the signals sent/received over a port correspond to the flow properties • identify cyclic activity calls • find deadlock states, i.e. incoming transitions but not outgoing • Etc. • Change impact analysis • If I change an upstream project, how will it affect downstream projects? • Fast queries ! realizable in pre-commit hooks • Ad-hoc model queries • Model comprehension • Reviews • Traceability analysis
  • 14. IncQuery for MagicDraw and Teamwork Cloud
 Screenshots
  • 15. IncQuery for MagicDraw and Teamwork Cloud
 Screenshots
  • 16. IncQuery for MagicDraw and Teamwork Cloud
 Screenshots
  • 17. IncQuery is built on open source http://eclipse.org/viatra Model query and transformation framework • Declarative • Scalable • Reactive Easy integration • Java & other JVM languages • Enabling libraries for
 open & commercial
 tools Major industrial users & partners:
  • 18. IncQuery is built on open source http://eclipse.org/viatra Model query and transformation framework • Declarative • Scalable • Reactive Easy integration • Java & other JVM languages • Enabling libraries for
 open & commercial
 tools Major industrial users & partners: What’s new in VIATRA 2.0? • Simplification • Fewer third party dependencies • New language features • Lots of performance and memory optimizations • Java compatibility (Java 8 required & used on API, Java 9/10 supported) • Available in Eclipse Photon!
  • 19. MagicDraw and EMF • Lesson #1 Custom EMF metamodel for UML • Incompatible with MDT.UML • Most visible difference: profile support • Applied profiles and stereotypes can be referenced by name • „string typing” • Lesson #2 Custom EMF implementation • Mostly EMF-compatible, including change notifications! (support incremental processing out-of-the box) • Custom memory management (loading-unloading in the background) • Custom transaction handling
  • 20. MagicDraw and EMF • Lesson #1 Custom EMF metamodel for UML • Incompatible with MDT.UML • Most visible difference: profile support • Applied profiles and stereotypes can be referenced by name • „string typing” • Lesson #2 Custom EMF implementation • Mostly EMF-compatible, including change notifications! (support incremental processing out-of-the box) • Custom memory management (loading-unloading in the background) • Custom transaction handling V4MD: VIATRA for MagicDraw • Open source ”glue code” (EPL v2) • Demonstrates how to bind EMF-based tech to MagicDraw • Deployable as a MD plug-in built with Gradle • http://github.com/viatra/v4md
  • 21. MagicDraw vs. OSGi • MD 18.x+ is based on Eclipse Equinox • not entirely: the application itself is, but… • Lesson #3 • MagicDraw plug-ins are not OSGi bundles • No classpath separation • MagicDraw API cannot be referenced as OSGi dependencies • Lesson #4 • Custom plugin.xml format • Incompatible with PDE
  • 22. Lesson #5: Integrating Xtext into MagicDraw • Parsing infrastructure is easy to reuse, but... • As standalone Java application • Maven dependencies useful • ... a full-blown editor integration is tricky • Many dependencies, including SWT and JDT • Integrating SWT-based UI into Swing is not practical • Alternatives we considered: • Future proof: Web-based editor with LSP • Quick-and-dirty: Separate Eclipse RCP based application
  • 23. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser
  • 24. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app”
  • 25. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app” • No dependency issues inside MagicDraw • But requires a 200MB RCP app (per platform)
  • 26. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app” • No dependency issues inside MagicDraw • But requires a 200MB RCP app (per platform) • Just works • Custom “protocol” for communication
  • 27. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app” • No dependency issues inside MagicDraw • But requires a 200MB RCP app (per platform) • Just works • Custom “protocol” for communication • Can host the language server • A path forward as technology matures
  • 28. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app” • No dependency issues inside MagicDraw • But requires a 200MB RCP app (per platform) • Just works • Custom “protocol” for communication • Can host the language server • A path forward as technology matures • Platform specific issues with window management
  • 29. Alternatives: LSP vs. RCP LSP • Deploy language server within MD ! dependency issues • Potential collusions with built-in jars • No mature LSP client for Swing UI • Monaco editor has issues with built- in browser RCP-based „companion app” • No dependency issues inside MagicDraw • But requires a 200MB RCP app (per platform) • Just works • Custom “protocol” for communication • Can host the language server • A path forward as technology matures • Platform specific issues with window management
  • 30. Simple UML path expressions UML Types Keywords in purple Check expressions A "companion app” for MagicDraw:
 The VIATRA Query Language Editor https://www.eclipse.org/viatra/documentation/tutorial.html 
 https://www.eclipse.org/viatra/documentation/query-language.html Pattern that lists SysML Blocks
  • 31. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language
  • 32. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle
  • 33. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting
  • 34. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting • MagicDraw OpenAPI dependencies • Download and install MagicDraw instance • Use as dependency source
  • 35. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting • MagicDraw OpenAPI dependencies • Download and install MagicDraw instance • Use as dependency source • External dependencies • Downloaded via standard Gradle mechanisms • Script can update plugin and installation descriptor files
  • 36. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting • MagicDraw OpenAPI dependencies • Download and install MagicDraw instance • Use as dependency source • External dependencies • Downloaded via standard Gradle mechanisms • Script can update plugin and installation descriptor files • Generated code • Handled via Gradle plugins
  • 37. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting • MagicDraw OpenAPI dependencies • Download and install MagicDraw instance • Use as dependency source • External dependencies • Downloaded via standard Gradle mechanisms • Script can update plugin and installation descriptor files • Generated code • Handled via Gradle plugins • Running MagicDraw • Starts the Platform Runner of MagicDraw • Parameterized with the Gradle Java Runner
  • 38. Lesson #6: Building MagicDraw plugins Challenges • Collect jars from a MagicDraw installation • Non-standard solution • Execute new MagicDraw instance with plug-in • Starting an OSGi container is non-trivial • Add third-party dependencies • Maven dependencies • Plugin descriptors have to include all jar files by name • Separate installation descriptor as well in a different format • Handling generated code • VIATRA VQL language • Xtend language Solution: Gradle • Originates from OpenMBEE project • Gradle-based solution • Relies on scripting • MagicDraw OpenAPI dependencies • Download and install MagicDraw instance • Use as dependency source • External dependencies • Downloaded via standard Gradle mechanisms • Script can update plugin and installation descriptor files • Generated code • Handled via Gradle plugins • Running MagicDraw • Starts the Platform Runner of MagicDraw • Parameterized with the Gradle Java Runner MD Plugin Skeleton • “Hello world” plugin based on the Gradle setup • Easy to reuse • https://github.com/IncQueryLabs/MD_plugin_skeleton
  • 39. Some more open source contributions • MD VIATRA benchmark • https://github.com/IncQueryLabs/magicdraw-viatra-benchmark • Scalability benchmark for VIATRA queries over MagicDraw models • TMT model fork • https://github.com/IncQueryLabs/TMT-SysML-Model • Large (300k+) real-world SysML model, very useful to testing tools • Examples of actual IQ4MD validation rules inspired by NASA JPL • MDK fork • https://github.com/IncQueryLabs/mdk • Example usage of V4MD within MDK, NASA JPL’s toolkit
  • 41. Takeaways • Integrating with proprietary tools is more challenging... • Compared to a purely open Eclipse ecosystem • ... But not that hard with the proper tools
  • 42. Takeaways • Integrating with proprietary tools is more challenging... • Compared to a purely open Eclipse ecosystem • ... But not that hard with the proper tools • No Magic is an open and collaborative partner • Open ecosystem around MD (on a smaller scale) is worth exploring • And contributing to!
  • 43. Takeaways • Integrating with proprietary tools is more challenging... • Compared to a purely open Eclipse ecosystem • ... But not that hard with the proper tools • No Magic is an open and collaborative partner • Open ecosystem around MD (on a smaller scale) is worth exploring • And contributing to! • Watch out for VIATRA 2.0 and the IncQuery Server
  • 44. Takeaways • Integrating with proprietary tools is more challenging... • Compared to a purely open Eclipse ecosystem • ... But not that hard with the proper tools • No Magic is an open and collaborative partner • Open ecosystem around MD (on a smaller scale) is worth exploring • And contributing to! • Watch out for VIATRA 2.0 and the IncQuery Server • Get the IncQuery MagicDraw plug-in at https:// incquerylabs.com/incquery • Complete with tutorial and examples
  • 45. Takeaways • Integrating with proprietary tools is more challenging... • Compared to a purely open Eclipse ecosystem • ... But not that hard with the proper tools • No Magic is an open and collaborative partner • Open ecosystem around MD (on a smaller scale) is worth exploring • And contributing to! • Watch out for VIATRA 2.0 and the IncQuery Server • Get the IncQuery MagicDraw plug-in at https:// incquerylabs.com/incquery • Complete with tutorial and examples
  • 46. Thank you! +36 70 633 3973 @IncQueryLabs iq4md AT incquerylabs.com http://iq4md.incquerylabs.com info AT incquerylabs.com