SlideShare a Scribd company logo
Maxime Porhel
Obeo
SiriusCon Paris
2015/12/3
Robust and Scalable Modeling Workbenches
Tips and tricks
with Sirius
©AkiraFujii-http://www.spacetelescope.org/images/heic0516f/
A dedicated tooling
A dedicated tooling
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
Viewpoint specification model
Mappings and tool declaration
Sub Node
● List
○ node mappings to define list elements
● Free form
Viewpoint specification model
Several kind of containers
● Compartments
○ container mappings to define compartments
○ fixed or dynamic
○ vertical / horizontal stacks
Supported children presentations:
Viewpoint specification model
● Domain Class
Naive approach
● No Semantic Candidates Expression
● Precondition expression to filter
elements
Note:
● Green: EClass qualified name
● Yellow: interpreted expression
Interpreted expression
● Tooltip: the expected type of result and the available variables
● Completion on empty expression: available interpreters
● var: direct access to Sirius variables
● feature: direct access to the named features of the current element
(and EMF pseudo-features)
● service: direct call of a Java method
(that follows some naming conventions, see documentation)
● aql: Acceleo Query Language
(introduced with Sirius 3.0, recommended since 3.1)
● [ /]: Acceleo3 expression
©NASAGoddardSpaceFlightCenter-https://www.flickr.com/photos/gsfc/15284914831
Demo
Mapping Evaluation
● Empty semantic candidates expression
-> Sirius looks for candidates into all loaded semantic/domain model
● eAllContents() on each domain resource content
● Not efficient
● No control on the displayed elements
Naive approach
jkjknnnunjn
©AcidPix-https://www.flickr.com/photos/acidpix/6461577407
©GaryPosner-https://www.flickr.com/photos/gjpimages/7343085638
Diagram elements computation
From the element to refresh (and its description/mapping):
● Get available mappings to refresh
○ activated Viewpoints, activated Layers
○ children mappings + reused mappings
Diagram elements computation
● For each mapping found
○ Evaluation of the semantic candidates expression from the current domain element
(or eAllContents() on each domain resource if empty)
○ Filter with the specified domain class
○ On each candidate, evaluate the precondition
○ Create the diagram element, assign a style
From the element to refresh (and its description/mapping):
Diagram elements computation
empty semantic candidates
+ big models
+ many (sub) mappings
+ many complex precondition expressions
⇒ Poor performances
Worst conditions
Diagram elements computation
Try as much as possible to write efficient semantic candidates expression:
● Avoid empty semantic candidates expression and eAllContents when possible
● Follow the structural features defined in the meta model
● Use the inverse cross references to look for elements with a reference to another
element.
○ eInverse(Type) in AQL and Acceleo3
○ access to the ECrossReferenceAdapter from a Java service
● Use the specialized interpreters when possible (var: / service: / feature:)
● Try to integrate your precondition in your semantic candidate expression
aql: mainExpression -> select( e | e.precondition)
Your role
Sirius Profiler
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
Mapping synchronization
Mapping synchronization
● Synchronized mapping: Sirius looks for mapping candidates
● Unsynchronized mapping: Sirius refreshes styles and sub elements.
● Allows to create contextual diagrams:
○ User controls the elements he wants to see on his diagram
○ Sirius does not create elements for non-synchronized mappings
○ Delete from diagram is enabled
Mapping synchronization
● Specifier must create some ‘insertion’ tools
○ Selection Wizards
○ Drop tools (from Model Explorer)
○ Double clics
○ Menus
● Mappings of edge, border nodes, list elements often put as synchronized
Advanced tools: Direct edit (F2)
Easy edit mask creation
● {0} : {1}
● split user text into String variables
Advanced tools: Java service
Java services can be used to do more.
Ecore Tools:
direct edit of EStructuralFeatures (nodes/edges)
● « Something » => change name of feature
● «:SomeType » => only change the eType
● «1» => only set cardinality to 1..x
● « * » => only set cardinality to x..*
● « /Something » => make the feature derived
● « = something » => set the default value literal
● [...]
Advanced tools: Element select variable
Displays a selection dialog
when the user execute a tool
List or tree
Single / Multiple result
Advanced tools: Filter listener
To control the visibility of a palette tool
Reacts to model changes
(Sirius or semantic)
Demo
©NASAGoddardSpaceFlightCenter-https://www.flickr.com/photos/gsfc/
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
Provide mappings and tools
● Ready to deploy Eclipse plugin
Viewpoint Specification Project
Provide mappings and tools
● 1..* per Viewpoint Specification Project
● EMF model, can have links to other VSM
● Possibility to extends/complete VSM defined in other plugins
Viewpoint Specification Model
Provide mappings and tools
● Declares Diagram / Table / Tree description
● but also Diagram Extension
Viewpoint
● Activation controlled by the user
Provide mappings and tools
● 1 default Layer
● 0..* additional Layers
Diagram Description
● references a diagram description (defined anywhere)
● provides additional Layers
Diagram Extension Description
Provide mappings and tools
● optional?
● active per default?
● contains top level mappings and tool section
Layer
● activation controlled by the user if optional
Provide mappings and tools
● to spezialize mappings
● provide new styles / children mappings
Node / Container / Edge mapping import
Provide mappings and tools
● contains other tool sections
● declares or reuses tools
Tool Section
Demo
©GrayLensman-https://www.flickr.com/photos/toptechwriter/457189539
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
User colors
Predefined colors
User Color Palette
● User fixed color: RGB, System color chooser
● Computed Color: interpreted expression to compute R, G, B
● Interpolated Color
○ Define several color steps (value/color)
○ Expression to compute a value from the element to decorate
Conditional Styles
● Available for every kind of mapping
● 0..* conditional style
● Each conditional style contains a different style
Conditional Styles
Node styles
Conditional Styles
Container styles
Conditional Styles
Edge styles
● Routing style (oblique, manhattan, tree)
● Line style
● Source / Target arrows
● Begin / Center / End labels
Conditional Styles
● Precondition must be exclusive
● Sirius takes the first whose precondition evaluation returns true.
● The ‘default’ style is taken if no conditional style can be applied
Style Customizations
● Defined in a Layer
● Style Customization has a precondition
● More fine grained customization (than the Conditional Styles)
● Property Customization
○ target one EStructuralFeature of the Sirius style descriptions
○ applied on all styles or selected ones
Demo
©NASAGoddardSpaceFlightCenter-https://www.flickr.com/photos/gsfc/4545825554
Help Sirius find the elements to display
Use the best query language for the task
Synchronization options and advanced tools
Style and color customization
Additional mappings and tools contribution
Outline
● var: direct access to Sirius variables
● feature: direct access to the named features of the current element
(and EMF pseudo-features)
● service: direct call of a Java method
(that follows some naming conventions, see documentation)
● [ /]: Acceleo3 expression
● aql: Acceleo Query Language
(introduced with Sirius 3.0, recommended since 3.1)
Note: extensible through extension point
Provided interpreters
Provided interpreters
Provided interpreters
AQL
● stronger type information than Acceleo3 - allows stronger type analysis
● implementation specifically tailored for the Sirius use case
● complex or custom logic: Java Services
● predicatable ordering and performance overhad
● simple for querying EMF models
● evaluation: fast and collect errors
● validation: strong and precise
Recommended query language for Sirius 3.1.0
Takeaways
Help Sirius find the elements to display
Use AQL and the specific interpreters
Think about your models topology
Use inverse cross references
Big models? Remember the contextual diagrams
Help the user with advanced tools
Conditional styles completely change the
appearance of an element
Style customizations allow a more fine grained
customization
Use Viewpoint, Diagram Extensions, Layers to deal with
different aspects in your modelers
Sys2Soft
Performances depends on your .odesign specification
Measure, Improve, Repeat
©MatthiasRipp-https://www.flickr.com/photos/56218409@N03/15371262455©SeanDreilinger-https://www.flickr.com/photos/seandreilinger/2326448445
©NASA,ESACredit:G.Bacon(STScI)-http://www.spacetelescope.org/images/heic0516b/
Thank you!
Maxime Porhel
http://mporhel.github.io/slides/
maxime.porhel@obeo.fr
@mporhel

More Related Content

What's hot

Functional programming in kotlin with Arrow [Sunnytech 2018]
Functional programming in kotlin with Arrow [Sunnytech 2018]Functional programming in kotlin with Arrow [Sunnytech 2018]
Functional programming in kotlin with Arrow [Sunnytech 2018]
Emmanuel Nhan
 
Ch03
Ch03Ch03
UML (Hemant rajak)
UML (Hemant rajak)UML (Hemant rajak)
UML (Hemant rajak)hrajak5
 
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJ
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJSeaJUG Dec 2001: Aspect-Oriented Programming with AspectJ
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJTed Leung
 
From DOT to Dotty
From DOT to DottyFrom DOT to Dotty
From DOT to Dotty
Martin Odersky
 
Unit 4 plsql
Unit 4  plsqlUnit 4  plsql
Unit 4 plsql
DrkhanchanaR
 
9781285852744 ppt ch18
9781285852744 ppt ch189781285852744 ppt ch18
9781285852744 ppt ch18
Terry Yoast
 
Advance Scala - Oleg Mürk
Advance Scala - Oleg MürkAdvance Scala - Oleg Mürk
Advance Scala - Oleg Mürk
Planet OS
 
Practical type mining in Scala
Practical type mining in ScalaPractical type mining in Scala
Practical type mining in Scala
Rose Toomey
 
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
sumitbardhan
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Dimitris Kolovos
 
OOP - Templates
OOP - TemplatesOOP - Templates
OOP - Templates
Mohammad Shaker
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015
Jorg Janke
 
Basic elements of java
Basic elements of java Basic elements of java
Basic elements of java
Ahmad Idrees
 

What's hot (14)

Functional programming in kotlin with Arrow [Sunnytech 2018]
Functional programming in kotlin with Arrow [Sunnytech 2018]Functional programming in kotlin with Arrow [Sunnytech 2018]
Functional programming in kotlin with Arrow [Sunnytech 2018]
 
Ch03
Ch03Ch03
Ch03
 
UML (Hemant rajak)
UML (Hemant rajak)UML (Hemant rajak)
UML (Hemant rajak)
 
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJ
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJSeaJUG Dec 2001: Aspect-Oriented Programming with AspectJ
SeaJUG Dec 2001: Aspect-Oriented Programming with AspectJ
 
From DOT to Dotty
From DOT to DottyFrom DOT to Dotty
From DOT to Dotty
 
Unit 4 plsql
Unit 4  plsqlUnit 4  plsql
Unit 4 plsql
 
9781285852744 ppt ch18
9781285852744 ppt ch189781285852744 ppt ch18
9781285852744 ppt ch18
 
Advance Scala - Oleg Mürk
Advance Scala - Oleg MürkAdvance Scala - Oleg Mürk
Advance Scala - Oleg Mürk
 
Practical type mining in Scala
Practical type mining in ScalaPractical type mining in Scala
Practical type mining in Scala
 
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
358 33 powerpoint-slides_4-introduction-data-structures_chapter-4
 
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
 
OOP - Templates
OOP - TemplatesOOP - Templates
OOP - Templates
 
Dart the better Javascript 2015
Dart the better Javascript 2015Dart the better Javascript 2015
Dart the better Javascript 2015
 
Basic elements of java
Basic elements of java Basic elements of java
Basic elements of java
 

Similar to How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon 2015

Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Chauvin Mariot
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDB
ArangoDB Database
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
Abdalmassih Yakeen
 
SE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPTSE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPT
nikshaikh786
 
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Jitendra Bafna
 
Understanding Implicits in Scala
Understanding Implicits in ScalaUnderstanding Implicits in Scala
Understanding Implicits in Scala
datamantra
 
chapter 5 Objectdesign.ppt
chapter 5 Objectdesign.pptchapter 5 Objectdesign.ppt
chapter 5 Objectdesign.ppt
TemesgenAzezew
 
Standardizing on a single N-dimensional array API for Python
Standardizing on a single N-dimensional array API for PythonStandardizing on a single N-dimensional array API for Python
Standardizing on a single N-dimensional array API for Python
Ralf Gommers
 
CREO / PROE QUESTIONS
CREO / PROE QUESTIONSCREO / PROE QUESTIONS
CREO / PROE QUESTIONS
Parag Desshattiwar
 
What's New in C++ 11?
What's New in C++ 11?What's New in C++ 11?
What's New in C++ 11?
Sasha Goldshtein
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Ovidiu Farauanu
 
Functional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNextFunctional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNext
Unfold UI
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
ppd1961
 
Fundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptxFundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptx
Vigneshkumar Ponnusamy
 
Graph processing at scale using spark & graph frames
Graph processing at scale using spark & graph framesGraph processing at scale using spark & graph frames
Graph processing at scale using spark & graph frames
Ron Barabash
 
Writing Galaxy Tools
Writing Galaxy ToolsWriting Galaxy Tools
Writing Galaxy Tools
pjacock
 
AngularConf2015
AngularConf2015AngularConf2015
AngularConf2015
Alessandro Giorgetti
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript
Corley S.r.l.
 
Pi j3.2 polymorphism
Pi j3.2 polymorphismPi j3.2 polymorphism
Pi j3.2 polymorphism
mcollison
 
oop lecture 3
oop lecture 3oop lecture 3
oop lecture 3
Atif Khan
 

Similar to How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon 2015 (20)

Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
Mixing Diagram, Tree, Text, Table and Form editors to build a kick-ass modeli...
 
Custom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDBCustom Pregel Algorithms in ArangoDB
Custom Pregel Algorithms in ArangoDB
 
MDE in Practice
MDE in PracticeMDE in Practice
MDE in Practice
 
SE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPTSE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPT
 
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
 
Understanding Implicits in Scala
Understanding Implicits in ScalaUnderstanding Implicits in Scala
Understanding Implicits in Scala
 
chapter 5 Objectdesign.ppt
chapter 5 Objectdesign.pptchapter 5 Objectdesign.ppt
chapter 5 Objectdesign.ppt
 
Standardizing on a single N-dimensional array API for Python
Standardizing on a single N-dimensional array API for PythonStandardizing on a single N-dimensional array API for Python
Standardizing on a single N-dimensional array API for Python
 
CREO / PROE QUESTIONS
CREO / PROE QUESTIONSCREO / PROE QUESTIONS
CREO / PROE QUESTIONS
 
What's New in C++ 11?
What's New in C++ 11?What's New in C++ 11?
What's New in C++ 11?
 
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
Functional Patterns for C++ Multithreading (C++ Dev Meetup Iasi)
 
Functional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNextFunctional Programming in JavaScript & ESNext
Functional Programming in JavaScript & ESNext
 
Concepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming LanguagesConcepts In Object Oriented Programming Languages
Concepts In Object Oriented Programming Languages
 
Fundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptxFundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptx
 
Graph processing at scale using spark & graph frames
Graph processing at scale using spark & graph framesGraph processing at scale using spark & graph frames
Graph processing at scale using spark & graph frames
 
Writing Galaxy Tools
Writing Galaxy ToolsWriting Galaxy Tools
Writing Galaxy Tools
 
AngularConf2015
AngularConf2015AngularConf2015
AngularConf2015
 
The advantage of developing with TypeScript
The advantage of developing with TypeScript The advantage of developing with TypeScript
The advantage of developing with TypeScript
 
Pi j3.2 polymorphism
Pi j3.2 polymorphismPi j3.2 polymorphism
Pi j3.2 polymorphism
 
oop lecture 3
oop lecture 3oop lecture 3
oop lecture 3
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 

How to make Robust and Scalable Modeling Workbenches with Sirius - SiriusCon 2015

  • 1. Maxime Porhel Obeo SiriusCon Paris 2015/12/3 Robust and Scalable Modeling Workbenches Tips and tricks with Sirius ©AkiraFujii-http://www.spacetelescope.org/images/heic0516f/
  • 4. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 5. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 6. Viewpoint specification model Mappings and tool declaration Sub Node
  • 7. ● List ○ node mappings to define list elements ● Free form Viewpoint specification model Several kind of containers ● Compartments ○ container mappings to define compartments ○ fixed or dynamic ○ vertical / horizontal stacks Supported children presentations:
  • 8. Viewpoint specification model ● Domain Class Naive approach ● No Semantic Candidates Expression ● Precondition expression to filter elements Note: ● Green: EClass qualified name ● Yellow: interpreted expression
  • 9. Interpreted expression ● Tooltip: the expected type of result and the available variables ● Completion on empty expression: available interpreters ● var: direct access to Sirius variables ● feature: direct access to the named features of the current element (and EMF pseudo-features) ● service: direct call of a Java method (that follows some naming conventions, see documentation) ● aql: Acceleo Query Language (introduced with Sirius 3.0, recommended since 3.1) ● [ /]: Acceleo3 expression
  • 11. Mapping Evaluation ● Empty semantic candidates expression -> Sirius looks for candidates into all loaded semantic/domain model ● eAllContents() on each domain resource content ● Not efficient ● No control on the displayed elements Naive approach
  • 13. Diagram elements computation From the element to refresh (and its description/mapping): ● Get available mappings to refresh ○ activated Viewpoints, activated Layers ○ children mappings + reused mappings
  • 14. Diagram elements computation ● For each mapping found ○ Evaluation of the semantic candidates expression from the current domain element (or eAllContents() on each domain resource if empty) ○ Filter with the specified domain class ○ On each candidate, evaluate the precondition ○ Create the diagram element, assign a style From the element to refresh (and its description/mapping):
  • 15. Diagram elements computation empty semantic candidates + big models + many (sub) mappings + many complex precondition expressions ⇒ Poor performances Worst conditions
  • 16. Diagram elements computation Try as much as possible to write efficient semantic candidates expression: ● Avoid empty semantic candidates expression and eAllContents when possible ● Follow the structural features defined in the meta model ● Use the inverse cross references to look for elements with a reference to another element. ○ eInverse(Type) in AQL and Acceleo3 ○ access to the ECrossReferenceAdapter from a Java service ● Use the specialized interpreters when possible (var: / service: / feature:) ● Try to integrate your precondition in your semantic candidate expression aql: mainExpression -> select( e | e.precondition) Your role
  • 18. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 19.
  • 21. Mapping synchronization ● Synchronized mapping: Sirius looks for mapping candidates ● Unsynchronized mapping: Sirius refreshes styles and sub elements. ● Allows to create contextual diagrams: ○ User controls the elements he wants to see on his diagram ○ Sirius does not create elements for non-synchronized mappings ○ Delete from diagram is enabled
  • 22. Mapping synchronization ● Specifier must create some ‘insertion’ tools ○ Selection Wizards ○ Drop tools (from Model Explorer) ○ Double clics ○ Menus ● Mappings of edge, border nodes, list elements often put as synchronized
  • 23. Advanced tools: Direct edit (F2) Easy edit mask creation ● {0} : {1} ● split user text into String variables
  • 24. Advanced tools: Java service Java services can be used to do more. Ecore Tools: direct edit of EStructuralFeatures (nodes/edges) ● « Something » => change name of feature ● «:SomeType » => only change the eType ● «1» => only set cardinality to 1..x ● « * » => only set cardinality to x..* ● « /Something » => make the feature derived ● « = something » => set the default value literal ● [...]
  • 25. Advanced tools: Element select variable Displays a selection dialog when the user execute a tool List or tree Single / Multiple result
  • 26. Advanced tools: Filter listener To control the visibility of a palette tool Reacts to model changes (Sirius or semantic)
  • 28. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 29. Provide mappings and tools ● Ready to deploy Eclipse plugin Viewpoint Specification Project
  • 30. Provide mappings and tools ● 1..* per Viewpoint Specification Project ● EMF model, can have links to other VSM ● Possibility to extends/complete VSM defined in other plugins Viewpoint Specification Model
  • 31. Provide mappings and tools ● Declares Diagram / Table / Tree description ● but also Diagram Extension Viewpoint ● Activation controlled by the user
  • 32. Provide mappings and tools ● 1 default Layer ● 0..* additional Layers Diagram Description ● references a diagram description (defined anywhere) ● provides additional Layers Diagram Extension Description
  • 33. Provide mappings and tools ● optional? ● active per default? ● contains top level mappings and tool section Layer ● activation controlled by the user if optional
  • 34. Provide mappings and tools ● to spezialize mappings ● provide new styles / children mappings Node / Container / Edge mapping import
  • 35. Provide mappings and tools ● contains other tool sections ● declares or reuses tools Tool Section
  • 37. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 39. User Color Palette ● User fixed color: RGB, System color chooser ● Computed Color: interpreted expression to compute R, G, B ● Interpolated Color ○ Define several color steps (value/color) ○ Expression to compute a value from the element to decorate
  • 40. Conditional Styles ● Available for every kind of mapping ● 0..* conditional style ● Each conditional style contains a different style
  • 43. Conditional Styles Edge styles ● Routing style (oblique, manhattan, tree) ● Line style ● Source / Target arrows ● Begin / Center / End labels
  • 44. Conditional Styles ● Precondition must be exclusive ● Sirius takes the first whose precondition evaluation returns true. ● The ‘default’ style is taken if no conditional style can be applied
  • 45. Style Customizations ● Defined in a Layer ● Style Customization has a precondition ● More fine grained customization (than the Conditional Styles) ● Property Customization ○ target one EStructuralFeature of the Sirius style descriptions ○ applied on all styles or selected ones
  • 47. Help Sirius find the elements to display Use the best query language for the task Synchronization options and advanced tools Style and color customization Additional mappings and tools contribution Outline
  • 48. ● var: direct access to Sirius variables ● feature: direct access to the named features of the current element (and EMF pseudo-features) ● service: direct call of a Java method (that follows some naming conventions, see documentation) ● [ /]: Acceleo3 expression ● aql: Acceleo Query Language (introduced with Sirius 3.0, recommended since 3.1) Note: extensible through extension point Provided interpreters
  • 50. Provided interpreters AQL ● stronger type information than Acceleo3 - allows stronger type analysis ● implementation specifically tailored for the Sirius use case ● complex or custom logic: Java Services ● predicatable ordering and performance overhad ● simple for querying EMF models ● evaluation: fast and collect errors ● validation: strong and precise Recommended query language for Sirius 3.1.0
  • 51. Takeaways Help Sirius find the elements to display Use AQL and the specific interpreters Think about your models topology Use inverse cross references Big models? Remember the contextual diagrams Help the user with advanced tools Conditional styles completely change the appearance of an element Style customizations allow a more fine grained customization Use Viewpoint, Diagram Extensions, Layers to deal with different aspects in your modelers Sys2Soft Performances depends on your .odesign specification Measure, Improve, Repeat