SlideShare a Scribd company logo
Structural	Model	Subtyping	with	OCL	
Constraints
Artur	Boronat
The	Problem
Given	two	independent	metamodel specifications…
are	they	compatible?
name : String
Node
name : String
Edgename : String
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking marks
*
Observation
marking
*
marks
0..1
0..1
context Transition inv determism:
not(Transition.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
context Transition inv eventTransition:
name <> '' implies isCompletion=false
context Edge inv map:
not(Edge.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
evolution	
(backward/forward	
compatibility)
translation
metamodel
Use	Cases
name : String
Node
name : String
Edgename : String
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking marks
*
Observation
marking
*
marks
0..1
0..1
context Transition inv determism:
not(Transition.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
context Transition inv eventTransition:
name <> '' implies isCompletion=false
context Edge inv map:
not(Edge.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
with	OCL
simulation
syntax
semantics
reuse
https://mde-subtyping.github.io/web/
M!metamodels
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Observation
marking
*
marks0..1
Our	Solution
M<
model	type	expressions
linguistic	typing t : ⌧
name = A
:State
name = 'a->b'
isCompletion = false
Transition
nodes edges
source
target
:StateMachine
initial
name = A
:State
nodes
ontological	typing
OCL
multiple	inheritance	
[Cardelli’88]
Structural	Model	
Subtyping
Structural	Subtyping	with	OCL	
Constraints
Tool
M!
sub : M!
super (M!
sub, ⌦sub) : (M!
super , ⌦super )
Our	Solution
Structural	Model	
Subtyping
M!
sub : M!
super
Structural	Model	Subtyping	(I)
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Observation
marking
*
marks0..1
metamodel
Extension	with	referential	constraints	and	generalization	to	model	types:
M<
= (roots, type)Model	Type	Expression:
model	type	expression referential	
constraints:
multiplicity,	
order,	
uniqueness
containment
reference
attribute:	
primitive	types,	
enumerations
[Cardelli.	A	Semantics	of	Multiple	Inheritance.	1988]
Structural	Model	Subtyping:
M<
sub : M<
super () µ(M<
sub) :; µ(M<
super )
Structural	Model	Subtyping	(II)
Model	Type JM<
K = Jµ(M<
)K = J[
[
c2roots
(c : unique c[0..⇤])]K
Adds	a	memory	to	
ensure	decidability	
when	traversing	
references
Extends	subtyping	
with	inconsistency	
checking	for	
referential	constraints
Our	Solution
Structural	Subtyping	with	OCL	
Constraints
(M!
sub, ⌦sub) : (M!
super , ⌦super )
ontological	semantics
[Richters’02] name = A
:State
name = 'a->b'
isCompletion = false
Transition
nodes edges
source
target
:StateMachine
initial
name = A
:State
nodes
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Observation
marking
*
marks0..1
metamodel M!
Structural	Subtyping	with	OCL	Constraints	(I)
JM<
K
linguistic	semantics
*<
!
model	type	expression M<
decl
J K
Semantic	Model	Subtyping: M!
sub : M!
super ) JM!
subK ✓ JM!
super K
Syntactic	Model	Subtyping: M!
sub : M!
super ) decl(M!
sub) : decl(M!
super )
Model	Type: JM!
K = *<
! ( (M!
))
• Satisfaction	of	OCL	constraints	
Structural	Subtyping	with	OCL	Constraints	(II)
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel
• reifies	structural	subtyping	as	generalization
• enables	the	analysis	of	OCL	constraints	from	subtype	
and	supertype
Structural	Subtyping	with	OCL	Constraints	(II)
M!
sub,super
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel:	synthesis	procedure
Structural	Subtyping	with	OCL	Constraints	(II)
name : String
Node
name : String
Edgename : String
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking marks
*
Observation
marking
*
marks
0..1
0..1
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel:	initialization	
Structural	Subtyping	with	OCL	Constraints	(II)
name : String
Node
name : String
Edgename : String
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking marks
*
Observation
marking
*
marks
0..1
0..1
multiple	
typing	
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel:	extraction	of	virtual	classes
Structural	Subtyping	with	OCL	Constraints	(II)
Node Edge
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking
marks*
Observation
marking
*
marks
0..1
0..1
«abstract»
GraphNode
name : String
«abstract»
GraphNodeEdge
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel:	refactoring
Structural	Subtyping	with	OCL	Constraints	(II)
«abstract»
GraphNode
name: String
«abstract»
GraphNodeEdge
Node Edge
Graph
1..*
nodes 1..*edges
source
target
State TransitionStateMachine final
initial
*
Mark
marking *
Observation
marks
0..1
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel
• Properties:
Structural	Subtyping	with	OCL	Constraints	(II)
«abstract»
GraphNode
name: String
«abstract»
GraphNodeEdge
Node Edge
Graph
1..*
nodes 1..*edges
source
target
State TransitionStateMachine final
initial
*
Mark
marking *
Observation
marks
0..1
M!
sub,super
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel
• Complements	of	subtype	(and	supertype):
Structural	Subtyping	with	OCL	Constraints	(II)
«abstract»
GraphNode
name: String
«abstract»
GraphNodeEdge
Node Edge
Graph
1..*
nodes 1..*edges
source
target
State TransitionStateMachine final
initial
*
Mark
marking *
Observation
marks
0..1
M!
sub,super
StateStateMachine
final
initial
*
[Richters’02]
• Satisfaction	of	OCL	constraints	
• Extension	metamodel
• Complements	of	subtype	(and	supertype):
• Strict	subtypings,	ranked
Structural	Subtyping	with	OCL	Constraints	(II)
«abstract»
GraphNode
name: String
«abstract»
GraphNodeEdge
Node Edge
Graph
1..*
nodes 1..*edges
source
target
State TransitionStateMachine final
initial
*
Mark
marking *
Observation
marks
0..1
M!
sub,super
StateStateMachine
final
initial
*
[Richters’02]
Structural	Subtyping	with	OCL	Constraints	(III)
Semantic	model	subtyping	with	OCL	constraints
Semantics	of	metamodel specifications
Syntactic	model	subtyping	with	OCL	constraints
Our	Solution
Tool
Tool	support
name : String
Node
name : String
Edgename : String
Graph
*
nodes * edgessource
target
name: String
State
name : String
isCompletion : Bool
Transition
1..*
nodes
1..* edges
source
target
name : String
StateMachine
final
initial
*
Mark
marking marks
*
Observation
marking
*
marks
0..1
0..1
context Transition inv determism:
not(Transition.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
context Transition inv eventTransition:
name <> '' implies isCompletion=false
context Edge inv map:
not(Edge.allInstances()->exists(t | t.source=self.source and t.target<>self.target))
(																		,USE	OCL)
Provide	metamodel specs
(M!
sm , ⌦sm )
:
(M!
g , ⌦g )?
Inspect	extension	metamodel,
complement	supertype,
solutions	for	recommended	
strict	typings
StateStateMachine
final
initial
*
in	metamodel
Where	is	
the	problem?
«abstract»
GraphNode
name: String
«abstract»
GraphNodeEdge
Node Edge
Graph
1..*
nodes 1..*edges
source
target
State TransitionStateMachine final
initial
*
Mark
marking *
Observation
marks
0..1
M!
sub,super
Compatibility	guarantee
Safe	reuse
https://mde-subtyping.github.io/web/
Inspect	witness
attr = "string2"
:StateMachine
attr = "string1"
:State
attr = "string5"
:State
attr = "string1"
:Transition
attr = "string2"
:Transition
source
source
target
target
nodes
nodes
edges
edges
in	an	OCL	constraint
[TOTEM-MDE	‘17]
Concluding	Remarks
ToolStructural	Subtyping	with	OCL	
Constraints
(M!
sub, ⌦sub) : (M!
super , ⌦super )
Structural	Model	
Subtyping
M!
sub : M!
super
Limitations
Number	of	inferred	subtypings
Bounded	analysis
inference:	adaptations	for	free
Structural	model	subtyping	with	OCL	constraints	when	metamodels are	not	related	a	priori
flexible	modelling:	 dynamic,	partial	and	multiple	model	typing
user	support:
insight
prioritization	and	recommendation
effective	metamodel,	retyping
Structural	Model	Subtyping	with	OCL	
Constraints
Artur	Boronat
https://mde-subtyping.github.io/web/

More Related Content

Similar to Structural Model Subtyping with OCL Constraints

breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdfbreaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
VishalKumarJha10
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistry
Kenta Oono
 
(4) cpp abstractions references_copies_and_const-ness
(4) cpp abstractions references_copies_and_const-ness(4) cpp abstractions references_copies_and_const-ness
(4) cpp abstractions references_copies_and_const-ness
Nico Ludwig
 
MTPLs
MTPLsMTPLs
MTPLs
miso_uam
 
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
zohaib247331
 
Bringing nullability into existing code - dammit is not the answer.pptx
Bringing nullability into existing code - dammit is not the answer.pptxBringing nullability into existing code - dammit is not the answer.pptx
Bringing nullability into existing code - dammit is not the answer.pptx
Maarten Balliauw
 
Passive network-redesign-ntua
Passive network-redesign-ntuaPassive network-redesign-ntua
Passive network-redesign-ntua
IEEE NTUA SB
 
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Tudor Dragan
 
Seq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) modelSeq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) model
佳蓉 倪
 
Offline Delta-Driven Model Transformation with Dependency Injection
Offline Delta-Driven Model Transformation with Dependency InjectionOffline Delta-Driven Model Transformation with Dependency Injection
Offline Delta-Driven Model Transformation with Dependency Injection
Artur Boronat
 
SERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the CloudSERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the Cloud
SERENEWorkshop
 
SERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_schoolSERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_school
Henry Muccini
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
Michael Redlich
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
Michael Redlich
 
Getting started cpp full
Getting started cpp   fullGetting started cpp   full
Getting started cpp full
Võ Hòa
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method Names
Dongsun Kim
 
ReusingMT
ReusingMTReusingMT
ReusingMT
miso_uam
 
Deformable DETR Review [CDM]
Deformable DETR Review [CDM]Deformable DETR Review [CDM]
Deformable DETR Review [CDM]
Dongmin Choi
 
Digital_system_design_A (1).ppt
Digital_system_design_A (1).pptDigital_system_design_A (1).ppt
Digital_system_design_A (1).ppt
BUCHUPALLIVIMALAREDD2
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
Andrey Karpov
 

Similar to Structural Model Subtyping with OCL Constraints (20)

breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdfbreaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
breaking_dependencies_the_solid_principles__klaus_iglberger__cppcon_2020.pdf
 
Deep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistryDeep learning for molecules, introduction to chainer chemistry
Deep learning for molecules, introduction to chainer chemistry
 
(4) cpp abstractions references_copies_and_const-ness
(4) cpp abstractions references_copies_and_const-ness(4) cpp abstractions references_copies_and_const-ness
(4) cpp abstractions references_copies_and_const-ness
 
MTPLs
MTPLsMTPLs
MTPLs
 
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
APznzaZkmb-kUZ4l6kBr4KiljHkZbgRJ-CE0UrfFTiDbqmDWIG7V3w1LoSuo933888-Arg_FpAn4D...
 
Bringing nullability into existing code - dammit is not the answer.pptx
Bringing nullability into existing code - dammit is not the answer.pptxBringing nullability into existing code - dammit is not the answer.pptx
Bringing nullability into existing code - dammit is not the answer.pptx
 
Passive network-redesign-ntua
Passive network-redesign-ntuaPassive network-redesign-ntua
Passive network-redesign-ntua
 
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
Kotlin - The Swiss army knife of programming languages - Visma Mobile Meet-up...
 
Seq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) modelSeq2Seq (encoder decoder) model
Seq2Seq (encoder decoder) model
 
Offline Delta-Driven Model Transformation with Dependency Injection
Offline Delta-Driven Model Transformation with Dependency InjectionOffline Delta-Driven Model Transformation with Dependency Injection
Offline Delta-Driven Model Transformation with Dependency Injection
 
SERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the CloudSERENE 2014 School: Incremental Model Queries over the Cloud
SERENE 2014 School: Incremental Model Queries over the Cloud
 
SERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_schoolSERENE 2014 School: Daniel varro serene2014_school
SERENE 2014 School: Daniel varro serene2014_school
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
Getting started cpp full
Getting started cpp   fullGetting started cpp   full
Getting started cpp full
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method Names
 
ReusingMT
ReusingMTReusingMT
ReusingMT
 
Deformable DETR Review [CDM]
Deformable DETR Review [CDM]Deformable DETR Review [CDM]
Deformable DETR Review [CDM]
 
Digital_system_design_A (1).ppt
Digital_system_design_A (1).pptDigital_system_design_A (1).ppt
Digital_system_design_A (1).ppt
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
 

Recently uploaded

Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
Massimo Artizzu
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
YousufSait3
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 

Recently uploaded (20)

Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 

Structural Model Subtyping with OCL Constraints