SlideShare a Scribd company logo
Intro Integration Evaluation Conclusions
Integration of a Graph-Based Model Indexer in
Commercial Modelling Tools
Antonio García-Domínguez, Konstantinos Barmpis,
Dimitrios S. Kolovos, Marcos Aurelio Almeida da Silva, Antonin
Abherve and Alessandra Bagnato
Aston University, University of York, SOFTEAM Cadextan
MoDELS’16
October 7th, 2016
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 1 / 27
Intro Integration Evaluation Conclusions
Outline
1 Intro
2 Integration
3 Evaluation
4 Conclusions
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 2 / 27
Intro Integration Evaluation Conclusions
Motivation for this work
MONDO EU project: produced Hawk indexer
Goal: tackle scalability of MDE in its various facets
One product was Hawk, a scalable model indexer:
https://github.com/mondo-project/mondo-hawk
Hawk mirrors fragmented models into NoSQL graphs
SOFTEAM: Constellation collab server needed search
SOFTEAM has 20+ years experience on UML tooling
Modelio is their open-source modelling tool
Joined MONDO due to scalability challenges
Created Constellation: Modelio collab server
Constellation had no search box – need indexing!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 3 / 27
Intro Integration Evaluation Conclusions
Motivation for this work
MONDO EU project: produced Hawk indexer
Goal: tackle scalability of MDE in its various facets
One product was Hawk, a scalable model indexer:
https://github.com/mondo-project/mondo-hawk
Hawk mirrors fragmented models into NoSQL graphs
SOFTEAM: Constellation collab server needed search
SOFTEAM has 20+ years experience on UML tooling
Modelio is their open-source modelling tool
Joined MONDO due to scalability challenges
Created Constellation: Modelio collab server
Constellation had no search box – need indexing!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 3 / 27
Modelio: SOFTEAM’s modelling tool
Open source, scriptable, UML/BPMN/SysML...
Structure: workspace → projects → fragments (.exml)
Projects can import .ramc libraries (zipped fragments)
Intro Integration Evaluation Conclusions
Constellation: SOFTEAM’s collab server
Admin server coordinates
agents and provides web UI
Agent nodes (HTTP/SVN)
access/host fragments
No querying facilities
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 5 / 27
Intro Integration Evaluation Conclusions
Hawk: NoSQL model indexer
We go from these model files...
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
Intro Integration Evaluation Conclusions
Hawk: NoSQL model indexer
... to these NoSQL graphs.
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
Intro Integration Evaluation Conclusions
Hawk: NoSQL model indexer
EPackages → metamodel nodes
EClasses → type nodes
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
Intro Integration Evaluation Conclusions
Hawk: NoSQL model indexer
.xmi → file nodes
EObjects → element nodes
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
Intro Integration Evaluation Conclusions
Hawk: NoSQL model indexer
MM index: EPackage URI → metamodel node
File index: repo + file path → file node
Users can define custom indices by attribute/expression
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
Intro Integration Evaluation Conclusions
Outline
1 Intro
2 Integration
3 Evaluation
4 Conclusions
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 7 / 27
Intro Integration Evaluation Conclusions
Integration approach
Key detail in Hawk: plugin-based architecture
Hawk has abstraction layers for:
Database backends (Neo4j, OrientDB)
Model persistence formats (XMI, UML, Modelio...)
Query languages (Epsilon Object Language)
Steps taken
1 Expose Modelio metamodels to Hawk
2 Write .exml/.ramc parser
3 Extend Hawk with Modelio specifics
4 Embed into Constellation
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 8 / 27
Intro Integration Evaluation Conclusions
Initial legal issues
Problem
Hawk is EPL, Modelio is GPLv3: incompatible licenses
Cannot reuse neither metamodel code nor parsing code
Solutions
SOFTEAM wrote M2T transformation to expose metamodels
as Apache-licensed library (ModelioMetamodelLib)
http://github.com/aabherve/modelio-metamodel-lib
Hawk includes transformation to Ecore
Hawk devs collaborated with SOFTEAM to write new parsers
Clean-room approach: no looking at Modelio code!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 9 / 27
Intro Integration Evaluation Conclusions
Initial legal issues
Problem
Hawk is EPL, Modelio is GPLv3: incompatible licenses
Cannot reuse neither metamodel code nor parsing code
Solutions
SOFTEAM wrote M2T transformation to expose metamodels
as Apache-licensed library (ModelioMetamodelLib)
http://github.com/aabherve/modelio-metamodel-lib
Hawk includes transformation to Ecore
Hawk devs collaborated with SOFTEAM to write new parsers
Clean-room approach: no looking at Modelio code!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 9 / 27
.exml format
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
.exml format: version, dependencies
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Format version
Dependencies
.exml format: version, dependencies
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Format version
Dependencies
.exml format: root object
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Object name, metaclass, UID
Same UID = same object
Happens when importing libraries
Container UID
EMF compatibility would require
deriving containments
.exml format: root object
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Object name, metaclass, UID
Same UID = same object
Happens when importing libraries
Container UID
EMF compatibility would require
deriving containments
.exml format: attributes and dependencies
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Attributes: name-value pairs
Dependencies: references
COMPositions (containment?)
LINKs (non-containment)
.exml format: attributes and dependencies
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
Attributes: name-value pairs
Dependencies: references
COMPositions (containment?)
LINKs (non-containment)
.exml format: nested objects
<EXT object="Component" version="3">
<DEPS>
<ID name="Component" mc="Class" uid="2d7b..."/>
<EXTID name="Element" mc="Class" uid="4ed7..."/>
</DEPS>
<OBJECT>
<ID name="Component" mc="Class" uid="2d7b..."/>
<PID name="Architecture" mc="Package" uid="ea87..."/>
<ATTRIBUTES>
<ATT name="Name">Component</ATT>...
</ATTRIBUTES>
<DEPENDENCIES>
<COMP relation="OwnedOperation">...</COMP>
<COMP relation="Parent">...</COMP>
</DEPENDENCIES>
</OBJECT>
</EXT>
<OBJECT>
<ID name="..." mc="Generalization" uid="58e6..."/>
<PID name="Component" mc="Class" uid="2d7b..."/>
<ATTRIBUTES>...</ATTRIBUTES>
<DEPENDENCIES>
<LINK relation="SuperType">
<ID name="Element" mc="Class" uid="4ed7..."/>
</LINK>
</DEPENDENCIES>
</OBJECT>
PID here is XML container’s
UID: not always the case!
LINK to object in another .exml
Intro Integration Evaluation Conclusions
Hawk: tweaks needed for Modelio
References are UID-based
Parsed objects/refs can declare they are UID-based
If so, Hawk will maintain/use UID → object index
Same UID = same object
Parsed resources can declare they provide “singletons”
If so, Hawk will merge objects with same UID into 1 node
A single element node can belong then to multiple files
Container-first rather than containment-first
Optional automated derivation of EMF-style containments
Only needed for compatibility with EMF-based tools
Not needed for Epsilon compatibility
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 15 / 27
Intro Integration Evaluation Conclusions
Outline
1 Intro
2 Integration
3 Evaluation
4 Conclusions
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 16 / 27
Intro Integration Evaluation Conclusions
Indexing costs on real projects (Neo4j)
File type .exml .ramc
Minimum 229B 23kB
Median 1.51kB 8.45MB
Maximum 2.77MB 30.98MB
Count 201 526 23
Stages 2GB 4GB 8GB
Frag ins. 2554s 2502s 2371s
Frag conn. 728s 541s 443s
Cont deriv. 1851s 1234s 1123s
Total 5171s 4287s 3958s
Inputs
SOFTEAM provided 15
in-house projects
2GB between .exml and
.ramc, 1.23M elems
Memory consumption
W/containment: 2GB+
Without: 1GB (3146s)
Diminishing returns
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 17 / 27
Embedding into Constellation: advanced queries
Required new OrientDB backend (Neo4j is GPLv3-licensed)
SOFTEAM embedded Hawk into web UI in 3 months
First result: EOL query console
Embedding into Constellation: dashboards
SOFTEAM used Hawk queries to feed project dashboards
Regular users do not need to know any queries
Intro Integration Evaluation Conclusions
M2T with Hawk: motivation
Business case
M2T in Modelio was done through Jython scripting
SOFTEAM wanted M2T agents in Constellation
Code generation as a service
Which is more efficient?
Modelio + Jython?
Hawk + Epsilon Generation Language?
Need to take into account indexing times as well!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 20 / 27
Intro Integration Evaluation Conclusions
M2T with Hawk: inputs
Script size param m = 1 m = 2 m = 4 m = 8 m = 16
Project size 80MB 150MB 279MB 814MB 1.8GB
.exml size 58MB 104MB 179MB 422MB 752MB
.exml count 1 255 2 087 3 430 7 849 13 790
Element count 47 981 88 451 154 281 367 840 657 228
SOFTEAM wrote simple UML model generator in Jython
Size parameter controls number of UML classes and number of
attributes/references per class
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 21 / 27
Intro Integration Evaluation Conclusions
M2T with Hawk: indexing times
1 2 3 4 5 6
·105
200
400
600
800
1,000
1,200
Project size (model elements)
Indexingtime(s)
500
1,000
1,500
2,000
2,500
OrientDBdiskspaceusage(MB)
Time
Disk space
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 22 / 27
Intro Integration Evaluation Conclusions
M2T with Hawk: generation times
1 2 3 4 5 6
·105
100
101
102
103
Project size (model elements)
Generationtime(s)
MT (run 1) MT (runs 2–5)
HT (run 1) HT (runs 2–5)
MT: Modelio M2T
HT: Hawk M2T
Cold runs: 10-100x
faster on Hawk
Warm runs: Hawk
scales better
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 23 / 27
Intro Integration Evaluation Conclusions
M2T with Hawk: tradeoff
1 2 3 4 5 6
·105
0
5
10
15
20
1
Project size (model elements)
MT/(HTrun1+indexing)
How many cold Modelio runs before Hawk makes more sense?
For the largest project, the answer is 1!
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 24 / 27
Intro Integration Evaluation Conclusions
Outline
1 Intro
2 Integration
3 Evaluation
4 Conclusions
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 25 / 27
Intro Integration Evaluation Conclusions
Conclusions and future work
Obtained results
SOFTEAM wanted querying for their model collab server
Hawk is now powering it:
Licensing issues guided many design decisions
Available as dashboards and advanced manual querying
Hawk+EGL faster than Modelio+Jython for M2T-as-service
Future work
SOFTEAM: integrate Hawk in more places and provide
querying capabilities for less technical users
Further performance improvements in Hawk:
Horizontal scalability (more RAM had diminishing returns)
On-demand derived features to reduce indexing time
Optimize OrientDB backend (much work done for v1.1!)
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 26 / 27
End of the presentation
Questions?
@antoniogado
A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 27 / 27

More Related Content

PDF
Foundations of programming
PDF
UK INCOSE Annual Systems Engineering Conference. Case Study - Implementing TR...
PDF
Capturing requirements: Importing documents
PDF
MDA Architecture - UML modeling Presentation
PDF
Basic concepts and terminology for the Requirements Management application
PPTX
Angularjs2 presentation
PDF
Managing requirements by using baselines
PDF
Modules as requirement specifications
Foundations of programming
UK INCOSE Annual Systems Engineering Conference. Case Study - Implementing TR...
Capturing requirements: Importing documents
MDA Architecture - UML modeling Presentation
Basic concepts and terminology for the Requirements Management application
Angularjs2 presentation
Managing requirements by using baselines
Modules as requirement specifications

What's hot (18)

PDF
Reporting on requirements
PDF
IRJET- Design Automation of Cam Lobe Modeling in Creo using C#
PDF
SimulationX Meets Office
PPTX
Introduction to Business Modeling
PDF
Builder Design Pattern (Generic Construction -Different Representation)
PDF
F1803053945
PPTX
Migration from IBM DOORS 9 to DOORS Next Generation
PDF
Navigating the Requirements Management application: Web client
PDF
Importing with ease july 2012
PPTX
Extracting archimate views from custom ontological ea models
PDF
Modular Enterprise Systems - An Introduction
PDF
Software Architecture: views and viewpoints
PDF
.NET Portfolio
PPTX
Developing Modeling Tool for RM-ODP with Eclipse Sirius
PPTX
Design pattern builder 20131115
PDF
Joel Landis Net Portfolio
PPTX
Typescript design patterns applied to sharepoint framework - Sharepoint Satur...
PPTX
Lesson slides for C programming course
Reporting on requirements
IRJET- Design Automation of Cam Lobe Modeling in Creo using C#
SimulationX Meets Office
Introduction to Business Modeling
Builder Design Pattern (Generic Construction -Different Representation)
F1803053945
Migration from IBM DOORS 9 to DOORS Next Generation
Navigating the Requirements Management application: Web client
Importing with ease july 2012
Extracting archimate views from custom ontological ea models
Modular Enterprise Systems - An Introduction
Software Architecture: views and viewpoints
.NET Portfolio
Developing Modeling Tool for RM-ODP with Eclipse Sirius
Design pattern builder 20131115
Joel Landis Net Portfolio
Typescript design patterns applied to sharepoint framework - Sharepoint Satur...
Lesson slides for C programming course
Ad

Viewers also liked (19)

PDF
期貨籌碼表0530
PPTX
Creating an Effective Learning Environment
PDF
Pruthvi's Foods Private Limited, Gujarat , Potato Starch
PDF
Referens: Falck 2011
PPT
香港六合彩
PPT
Short presentation tadbik labels
PPT
香港六合彩
PDF
Aio...whatever
DOCX
title
PPT
Tadbik group presentation dbm
PDF
Plano Valencia Ignacio Luque
DOC
Value Added References_David M. Lowry
PDF
ID Community of Practice
PDF
2016-07-07_Rexonic Energy Services Presentation
PDF
Como começa a pesquisa de um artigo científico
PPT
El verbo ser y los adjetivos
PPS
PPT
Martin Klebert (Grupo1)
PDF
Dyeing, printing & processing defects
期貨籌碼表0530
Creating an Effective Learning Environment
Pruthvi's Foods Private Limited, Gujarat , Potato Starch
Referens: Falck 2011
香港六合彩
Short presentation tadbik labels
香港六合彩
Aio...whatever
title
Tadbik group presentation dbm
Plano Valencia Ignacio Luque
Value Added References_David M. Lowry
ID Community of Practice
2016-07-07_Rexonic Energy Services Presentation
Como começa a pesquisa de um artigo científico
El verbo ser y los adjetivos
Martin Klebert (Grupo1)
Dyeing, printing & processing defects
Ad

Similar to MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commercial Modelling Tools (20)

PDF
Sodius cassidian mdday2010
PPTX
Interoperability of Meta-Modeling Tools
PDF
Download full ebook of Modeldriven Engineering Sondra Cordova instant downloa...
PDF
IBM Rhapsody and MATLAB/Simulink
PDF
Technical-design-for-Angular-apps.pdf
PPT
OOAD-Unit1.ppt
PDF
A Lightweight MDD Process Applied in Small Projects
PDF
SodiusCassidianmdday2010 101129081449-phpapp02
PDF
2. uml-methodology_hypermedia_design_2000
DOCX
MDD and modeling tools research
PPTX
Angularj2.0
PDF
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
PPT
Final Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee Applicaties
PDF
Integrating profiling into mde compilers
DOCX
Pratk kambe rac
PPTX
Agile Modeling using the Architecture Tools in VS 2010
PPT
Rhapsody and mechatronics, multi-domain simulation
DOCX
Solidworks software
PDF
CS587 Project - Raychaudhury,Shaalmali
PPS
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sodius cassidian mdday2010
Interoperability of Meta-Modeling Tools
Download full ebook of Modeldriven Engineering Sondra Cordova instant downloa...
IBM Rhapsody and MATLAB/Simulink
Technical-design-for-Angular-apps.pdf
OOAD-Unit1.ppt
A Lightweight MDD Process Applied in Small Projects
SodiusCassidianmdday2010 101129081449-phpapp02
2. uml-methodology_hypermedia_design_2000
MDD and modeling tools research
Angularj2.0
MODEL DRIVEN ARCHITECTURE, CONTROL SYSTEMS AND ECLIPSE
Final Jspring2009 Mda Slimmer Ontwikkelen Van Java Ee Applicaties
Integrating profiling into mde compilers
Pratk kambe rac
Agile Modeling using the Architecture Tools in VS 2010
Rhapsody and mechatronics, multi-domain simulation
Solidworks software
CS587 Project - Raychaudhury,Shaalmali
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)

More from Antonio García-Domínguez (17)

PDF
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
PDF
MODELS 2022 Picto Web tool demo
PDF
EduSymp 2022 slides (The Epsilon Playground)
PDF
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
PDF
Boosting individual feedback with AutoFeedback
PDF
MODELS 2019: Querying and annotating model histories with time-aware patterns
PDF
Tips and resources for publication-grade figures and tables
PDF
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
PDF
MRT 2018: reflecting on the past and the present with temporal graph models
PDF
Hawk: indexado de modelos en bases de datos NoSQL
PDF
Software and product quality for videogames
PDF
OCL'16 slides: Models from Code or Code as a Model?
PDF
Developing a new Epsilon Language through Annotations: TestLang
PDF
ECMFA 2016 slides
PDF
BMSD 2015 slides (revised)
PDF
Elaboración de un buen póster científico
PDF
Software libre para la integración de información en la Universidad de Cádiz
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
MODELS 2022 Picto Web tool demo
EduSymp 2022 slides (The Epsilon Playground)
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
Boosting individual feedback with AutoFeedback
MODELS 2019: Querying and annotating model histories with time-aware patterns
Tips and resources for publication-grade figures and tables
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
MRT 2018: reflecting on the past and the present with temporal graph models
Hawk: indexado de modelos en bases de datos NoSQL
Software and product quality for videogames
OCL'16 slides: Models from Code or Code as a Model?
Developing a new Epsilon Language through Annotations: TestLang
ECMFA 2016 slides
BMSD 2015 slides (revised)
Elaboración de un buen póster científico
Software libre para la integración de información en la Universidad de Cádiz

Recently uploaded (20)

PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Transform Your Business with a Software ERP System
PDF
Understanding Forklifts - TECH EHS Solution
PDF
AI in Product Development-omnex systems
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Essential Infomation Tech presentation.pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
top salesforce developer skills in 2025.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Navsoft: AI-Powered Business Solutions & Custom Software Development
How Creative Agencies Leverage Project Management Software.pdf
2025 Textile ERP Trends: SAP, Odoo & Oracle
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Odoo Companies in India – Driving Business Transformation.pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Transform Your Business with a Software ERP System
Understanding Forklifts - TECH EHS Solution
AI in Product Development-omnex systems
Design an Analysis of Algorithms I-SECS-1021-03
Which alternative to Crystal Reports is best for small or large businesses.pdf
Essential Infomation Tech presentation.pptx
Reimagine Home Health with the Power of Agentic AI​
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
top salesforce developer skills in 2025.pdf

MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commercial Modelling Tools

  • 1. Intro Integration Evaluation Conclusions Integration of a Graph-Based Model Indexer in Commercial Modelling Tools Antonio García-Domínguez, Konstantinos Barmpis, Dimitrios S. Kolovos, Marcos Aurelio Almeida da Silva, Antonin Abherve and Alessandra Bagnato Aston University, University of York, SOFTEAM Cadextan MoDELS’16 October 7th, 2016 A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 1 / 27
  • 2. Intro Integration Evaluation Conclusions Outline 1 Intro 2 Integration 3 Evaluation 4 Conclusions A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 2 / 27
  • 3. Intro Integration Evaluation Conclusions Motivation for this work MONDO EU project: produced Hawk indexer Goal: tackle scalability of MDE in its various facets One product was Hawk, a scalable model indexer: https://github.com/mondo-project/mondo-hawk Hawk mirrors fragmented models into NoSQL graphs SOFTEAM: Constellation collab server needed search SOFTEAM has 20+ years experience on UML tooling Modelio is their open-source modelling tool Joined MONDO due to scalability challenges Created Constellation: Modelio collab server Constellation had no search box – need indexing! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 3 / 27
  • 4. Intro Integration Evaluation Conclusions Motivation for this work MONDO EU project: produced Hawk indexer Goal: tackle scalability of MDE in its various facets One product was Hawk, a scalable model indexer: https://github.com/mondo-project/mondo-hawk Hawk mirrors fragmented models into NoSQL graphs SOFTEAM: Constellation collab server needed search SOFTEAM has 20+ years experience on UML tooling Modelio is their open-source modelling tool Joined MONDO due to scalability challenges Created Constellation: Modelio collab server Constellation had no search box – need indexing! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 3 / 27
  • 5. Modelio: SOFTEAM’s modelling tool Open source, scriptable, UML/BPMN/SysML... Structure: workspace → projects → fragments (.exml) Projects can import .ramc libraries (zipped fragments)
  • 6. Intro Integration Evaluation Conclusions Constellation: SOFTEAM’s collab server Admin server coordinates agents and provides web UI Agent nodes (HTTP/SVN) access/host fragments No querying facilities A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 5 / 27
  • 7. Intro Integration Evaluation Conclusions Hawk: NoSQL model indexer We go from these model files... A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
  • 8. Intro Integration Evaluation Conclusions Hawk: NoSQL model indexer ... to these NoSQL graphs. A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
  • 9. Intro Integration Evaluation Conclusions Hawk: NoSQL model indexer EPackages → metamodel nodes EClasses → type nodes A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
  • 10. Intro Integration Evaluation Conclusions Hawk: NoSQL model indexer .xmi → file nodes EObjects → element nodes A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
  • 11. Intro Integration Evaluation Conclusions Hawk: NoSQL model indexer MM index: EPackage URI → metamodel node File index: repo + file path → file node Users can define custom indices by attribute/expression A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 6 / 27
  • 12. Intro Integration Evaluation Conclusions Outline 1 Intro 2 Integration 3 Evaluation 4 Conclusions A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 7 / 27
  • 13. Intro Integration Evaluation Conclusions Integration approach Key detail in Hawk: plugin-based architecture Hawk has abstraction layers for: Database backends (Neo4j, OrientDB) Model persistence formats (XMI, UML, Modelio...) Query languages (Epsilon Object Language) Steps taken 1 Expose Modelio metamodels to Hawk 2 Write .exml/.ramc parser 3 Extend Hawk with Modelio specifics 4 Embed into Constellation A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 8 / 27
  • 14. Intro Integration Evaluation Conclusions Initial legal issues Problem Hawk is EPL, Modelio is GPLv3: incompatible licenses Cannot reuse neither metamodel code nor parsing code Solutions SOFTEAM wrote M2T transformation to expose metamodels as Apache-licensed library (ModelioMetamodelLib) http://github.com/aabherve/modelio-metamodel-lib Hawk includes transformation to Ecore Hawk devs collaborated with SOFTEAM to write new parsers Clean-room approach: no looking at Modelio code! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 9 / 27
  • 15. Intro Integration Evaluation Conclusions Initial legal issues Problem Hawk is EPL, Modelio is GPLv3: incompatible licenses Cannot reuse neither metamodel code nor parsing code Solutions SOFTEAM wrote M2T transformation to expose metamodels as Apache-licensed library (ModelioMetamodelLib) http://github.com/aabherve/modelio-metamodel-lib Hawk includes transformation to Ecore Hawk devs collaborated with SOFTEAM to write new parsers Clean-room approach: no looking at Modelio code! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 9 / 27
  • 16. .exml format <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT>
  • 17. .exml format: version, dependencies <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Format version Dependencies
  • 18. .exml format: version, dependencies <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Format version Dependencies
  • 19. .exml format: root object <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Object name, metaclass, UID Same UID = same object Happens when importing libraries Container UID EMF compatibility would require deriving containments
  • 20. .exml format: root object <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Object name, metaclass, UID Same UID = same object Happens when importing libraries Container UID EMF compatibility would require deriving containments
  • 21. .exml format: attributes and dependencies <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Attributes: name-value pairs Dependencies: references COMPositions (containment?) LINKs (non-containment)
  • 22. .exml format: attributes and dependencies <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> Attributes: name-value pairs Dependencies: references COMPositions (containment?) LINKs (non-containment)
  • 23. .exml format: nested objects <EXT object="Component" version="3"> <DEPS> <ID name="Component" mc="Class" uid="2d7b..."/> <EXTID name="Element" mc="Class" uid="4ed7..."/> </DEPS> <OBJECT> <ID name="Component" mc="Class" uid="2d7b..."/> <PID name="Architecture" mc="Package" uid="ea87..."/> <ATTRIBUTES> <ATT name="Name">Component</ATT>... </ATTRIBUTES> <DEPENDENCIES> <COMP relation="OwnedOperation">...</COMP> <COMP relation="Parent">...</COMP> </DEPENDENCIES> </OBJECT> </EXT> <OBJECT> <ID name="..." mc="Generalization" uid="58e6..."/> <PID name="Component" mc="Class" uid="2d7b..."/> <ATTRIBUTES>...</ATTRIBUTES> <DEPENDENCIES> <LINK relation="SuperType"> <ID name="Element" mc="Class" uid="4ed7..."/> </LINK> </DEPENDENCIES> </OBJECT> PID here is XML container’s UID: not always the case! LINK to object in another .exml
  • 24. Intro Integration Evaluation Conclusions Hawk: tweaks needed for Modelio References are UID-based Parsed objects/refs can declare they are UID-based If so, Hawk will maintain/use UID → object index Same UID = same object Parsed resources can declare they provide “singletons” If so, Hawk will merge objects with same UID into 1 node A single element node can belong then to multiple files Container-first rather than containment-first Optional automated derivation of EMF-style containments Only needed for compatibility with EMF-based tools Not needed for Epsilon compatibility A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 15 / 27
  • 25. Intro Integration Evaluation Conclusions Outline 1 Intro 2 Integration 3 Evaluation 4 Conclusions A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 16 / 27
  • 26. Intro Integration Evaluation Conclusions Indexing costs on real projects (Neo4j) File type .exml .ramc Minimum 229B 23kB Median 1.51kB 8.45MB Maximum 2.77MB 30.98MB Count 201 526 23 Stages 2GB 4GB 8GB Frag ins. 2554s 2502s 2371s Frag conn. 728s 541s 443s Cont deriv. 1851s 1234s 1123s Total 5171s 4287s 3958s Inputs SOFTEAM provided 15 in-house projects 2GB between .exml and .ramc, 1.23M elems Memory consumption W/containment: 2GB+ Without: 1GB (3146s) Diminishing returns A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 17 / 27
  • 27. Embedding into Constellation: advanced queries Required new OrientDB backend (Neo4j is GPLv3-licensed) SOFTEAM embedded Hawk into web UI in 3 months First result: EOL query console
  • 28. Embedding into Constellation: dashboards SOFTEAM used Hawk queries to feed project dashboards Regular users do not need to know any queries
  • 29. Intro Integration Evaluation Conclusions M2T with Hawk: motivation Business case M2T in Modelio was done through Jython scripting SOFTEAM wanted M2T agents in Constellation Code generation as a service Which is more efficient? Modelio + Jython? Hawk + Epsilon Generation Language? Need to take into account indexing times as well! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 20 / 27
  • 30. Intro Integration Evaluation Conclusions M2T with Hawk: inputs Script size param m = 1 m = 2 m = 4 m = 8 m = 16 Project size 80MB 150MB 279MB 814MB 1.8GB .exml size 58MB 104MB 179MB 422MB 752MB .exml count 1 255 2 087 3 430 7 849 13 790 Element count 47 981 88 451 154 281 367 840 657 228 SOFTEAM wrote simple UML model generator in Jython Size parameter controls number of UML classes and number of attributes/references per class A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 21 / 27
  • 31. Intro Integration Evaluation Conclusions M2T with Hawk: indexing times 1 2 3 4 5 6 ·105 200 400 600 800 1,000 1,200 Project size (model elements) Indexingtime(s) 500 1,000 1,500 2,000 2,500 OrientDBdiskspaceusage(MB) Time Disk space A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 22 / 27
  • 32. Intro Integration Evaluation Conclusions M2T with Hawk: generation times 1 2 3 4 5 6 ·105 100 101 102 103 Project size (model elements) Generationtime(s) MT (run 1) MT (runs 2–5) HT (run 1) HT (runs 2–5) MT: Modelio M2T HT: Hawk M2T Cold runs: 10-100x faster on Hawk Warm runs: Hawk scales better A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 23 / 27
  • 33. Intro Integration Evaluation Conclusions M2T with Hawk: tradeoff 1 2 3 4 5 6 ·105 0 5 10 15 20 1 Project size (model elements) MT/(HTrun1+indexing) How many cold Modelio runs before Hawk makes more sense? For the largest project, the answer is 1! A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 24 / 27
  • 34. Intro Integration Evaluation Conclusions Outline 1 Intro 2 Integration 3 Evaluation 4 Conclusions A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 25 / 27
  • 35. Intro Integration Evaluation Conclusions Conclusions and future work Obtained results SOFTEAM wanted querying for their model collab server Hawk is now powering it: Licensing issues guided many design decisions Available as dashboards and advanced manual querying Hawk+EGL faster than Modelio+Jython for M2T-as-service Future work SOFTEAM: integrate Hawk in more places and provide querying capabilities for less technical users Further performance improvements in Hawk: Horizontal scalability (more RAM had diminishing returns) On-demand derived features to reduce indexing time Optimize OrientDB backend (much work done for v1.1!) A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 26 / 27
  • 36. End of the presentation Questions? @antoniogado A García-Domínguez et al. Integration of a Graph-Based Model Indexer in Commercial Modelling Tools 27 / 27