Lessons learned from building Eclipse-based add-ons for commercial modeling tools

Similar documents
IncQuery for MagicDraw Quick Start Guide

Europe on a Disk Geodata Processing with Eclipse and OSGi. Harald Wellmann 10 Nov 2008

Getting the Most from Eclipse

Developing Eclipse Rich-Client Applications Tutorial

Rich Client GUI's with RCP & RAP

From the RCP Book To Reality. Jean-Michel Lemieux IBM Rational, Ottawa, Canada

Regular Forum of Lreis. Speechmaker: Gao Ang

Eclipse 4.0. Jochen Krause EclipseSource

Adapting JDT to the Cloud. Alex Boyko Pivotal Jay Arthanareeswaran - IBM John Arthorne - IBM

The Galilean Moons of Eclipse

High performance model queries

An Eclipse-based Environment for Programming and Using Service-Oriented Grid

Smart Client development with the Eclipse Rich Client Platform

Building applications in less time. Eclipsecon France 2018

Expeditor Client for Desktop. Client Platform Overview

The New Generation of the Eclipse Platform. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

OSGi on the Server. Martin Lippert (it-agile GmbH)

Breaking Apart the Monolith with Modularity and Microservices CON3127

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

First Steps in RCP. Jan Blankenhorn, WeigleWilczek GmbH, Stuttgart, Germany. February 19th, 2009

Model Driven Development with EMF and EclipseLink (experiences in MDD and generating user interfaces)

The Eclipse Modeling Framework and MDA Status and Opportunities

Model handling with EMF

Acceleo Galileo Simultaneous Release

Eclipse 4 Eclipse Day Toulouse 24 mai 2012

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

High performance reactive applications with Vert.x

ECLIPSE PERSISTENCE PLATFORM (ECLIPSELINK) FAQ

Google Plugin for Eclipse

SCA Java Runtime Overview

Properties of High Quality Software. CSE219, Computer Science III Stony Brook University

EMF Compare Galileo Simultaneous Release

eclipse rich ajax platform (rap)

The Eclipse Rich Client Platform

Introduction to EGF. Benoît Langlois / Thales Global Services.

JSR 377 Desktop Application Framework September Andres Almiray

Comparison and merge use-cases from practice with EMF Compare

Start Up Benoît Langlois / Thales Global Services Eclipse (EMFT) EGF 2011 by Thales; made available under the EPL v1.

Publishing and reviewing models on the Web Dr. Andrius Armonas, MagicDraw Product Manager

SAP Edge Services, cloud edition Edge Services Predictive Analytics Service Guide Version 1803

Introduction to Eclipse

inside eclipse Erich Gamma Eclipse Project Management Committee Member IBM Distinguished Engineer IBM Rational Software

EMFT Mint (Incubation) 0.7 Ganymede Simultaneous Release Review

Dominique Blouin Etienne Borde

AWS Lambda. 1.1 What is AWS Lambda?

Introduction to Eclipse and Eclipse RCP

Workplace Client Technology, Micro Edition. WCTME Enterprise Offering Application Developer s Guide

Deliverable: D 1.2 Specification of Traceability concepts

Build and Provision: Two Sides of the Coin We Love to Hate

Papyrus: Advent of an Open Source IME at Eclipse (Redux)

Spring Web Services Tutorial With Example In

GAVIN KING RED HAT CEYLON SWARM

e4 Project 0.9 Release Review

The Now Platform Reference Guide

A Model-Driven Framework for Domain Specific Process Design and Governance

Building XML-based content for Eclipse Help: a real experience. Christian Kurzke Gustavo de Paula Daniel Moura

UML PROFILING AND DSL

Liberate your components with OSGi services

SpringSource Tool Suite 2.7.1

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

vsphere Web Client SDK Documentation VMware vsphere Web Client SDK VMware ESXi vcenter Server 6.5.1

API Connect. Arnauld Desprets - Technical Sale

Running MarkLogic in Containers (Both Docker and Kubernetes)

SpringSource Tool Suite M2

Selenium Testing Course Content

Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1

Mitglied der Helmholtz-Gemeinschaft. Eclipse Parallel Tools Platform (PTP)

Oracle Corporation

Easy Access to Grid Infrastructures

Oracle APEX 18.1 New Features

BIG MODELS AN ALTERNATIVE APPROACH

Train Benchmark Case: an EMF-INCQUERY Solution

The 60-Minute Guide to Development Tools for IBM Lotus Domino, IBM WebSphere Portal, and IBM Workplace Applications

Equinox OSGi: Pervasive Componentization

About Tom. CEO BestSolution Systemhaus GmbH. Eclipse Committer. Platform UI EMF. Projectlead: UFaceKit, Nebula. Member of the Architectual Council

Technical Debt in Eclipse Development. Eclipse Con France 2018

Index. Symbols. /**, symbol, 73 >> symbol, 21

ECLIPSE JAVA DOCUMENTATION

JBPM Course Content. Module-1 JBPM overview, Drools overview

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

The Eclipse Rich Ajax Platform

Domain-Specific Languages Language Workbenches

Operation Preparation Environment (OPEN)

What is Wazaabi 2.0? Declarative UI framework. based on. live EMF model(s)

SCADE. SCADE Architect System Requirements Analysis EMBEDDED SOFTWARE

Creating Ultra-fast Realtime Apps and Microservices with Java. Markus Kett, CEO Jetstream Technologies

Perfect for the Enterprise

Spring and OSGi. Martin Lippert akquinet agile GmbH Bernd Kolb Gerd Wütherich

BLU AGE 2009 Edition Agile Model Transformation

How to export custom PDF documents from Jira issues and dashboards in zero time

CISC836: Models in Software Development: Methods, Techniques and Tools

DRAFT. Consolidation of the Generator Infrastructure MDGEN Model Driven Generation

WSDM = Web Services Distributed Management, an open standard/specified ratified by OASIS

JAVA MICROSERVICES. Java Language Environment. Java Set Up. Java Fundamentals. Packages. Operations

A little History Domain Specific Languages Examples Tools Benefits A more theoretical View Programming and Modeling The LWES Project Bonus: Best

Equinox Framework: How to get Hooked

EMF-IncQuery gets Sirius: faster and better diagrams

Advanced User Interface Programming Using the Eclipse Rich Client Platform

EMFT 1.0 Release Review (OCL, Query, Transaction, and Validation)

This tutorial explains how you can use Gradle as a build automation tool for Java as well as Groovy projects.

Transcription:

Lessons learned from building Eclipse-based add-ons for commercial modeling tools (from a technology perspective) István Ráth Ákos Horváth EclipseCon France June 14 2018

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 MagicDraw TM and Teamwork Cloud TM

IncQuery cloud-based modeling beyond EMF

IncQuery cloud-based modeling beyond EMF Scalable Hybrid database technolog y Language tailored to models Validation and analytics features

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

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

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

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

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

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

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

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

http://eclipse.org/viatra IncQuery is built on open source 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 V4MD: VIATRA for MagicDraw Applied profiles and stereotypes can be referenced by name string typing Open source glue code (EPL v2) Demonstrates how to bind EMF-based Mostly EMF-compatible, including tech change to MagicDraw notifications! (support incremental processing out-of-the Deployable box) as a MD plug-in built with Custom memory management (loading-unloading Gradle in the background) Custom transaction handling http://github.com/viatra/v4md Lesson #2 Custom EMF implementation

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 builtin 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 builtin 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 builtin 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 builtin 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 builtin 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 builtin 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 builtin 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

A "companion app for MagicDraw: The VIATRA Query Language Editor Keywords in purple Pattern that lists SysML Blocks UML Types Simple UML path expressions Check expressions https://www.eclipse.org/viatra/documentation/tutorial.html https://www.eclipse.org/viatra/documentation/query-language.html

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 MD Plugin Skeleton 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 Hello world plugin based on the Gradle setup Easy to reuse https://github.com/incquerylabs/md_plugin_skeleton Running MagicDraw Starts the Platform Runner of MagicDraw Parameterized with the Gradle Java Runner

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! http://iq4md.incquerylabs.com iq4md AT incquerylabs.com info AT incquerylabs.com +36 70 633 3973 @IncQueryLabs