SlideShare uma empresa Scribd logo
1 de 17
OCL 2.4 (... OCL 2.5) 
Edward Willink 
OMG OCL RTF chair, 
OMG QVT RTF chair, 
Eclipse OCL Project Lead, 
Eclipse QVTd Project Lead, 
OCL 2013 @ MODELS 2013 
30 September 2013 
Made available under EPL 1.0
Overview 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0 
OCL 2.4 
New 
Collection::selectByKind/selectByType 
OclAny::oclAsSet 
Significant clarification 
not null 
= 
Minor details 
OCL 2.5
Issue 18829 : 
selectByKind/selectByType 
Pre OCL 2.4 
sources->select(oclIsKindOf(Z))->collect(oclAsType(Z))->asSet() 
OCL 2.4 
sources->selectByKind(Z) 
selectByKind (analoguous to oclIsKindOf) 
returns non-null elements of selected type/subtypes 
selectByType (analoguous to oclIsTypeOf) 
returns elements of selected type 
result has unchanged Collection Kind 
Set returns Set, Bag returns Bag etc 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
15009: Implicit Set Conversion (1) 
let anObject : OclAny = ... in anObject->forAll(...) 
Pre OCL 2.4 
implicit conversion of non-null anObject to 
Bag{anObject} or Set{anObject} 
implicit conversion of null to Bag{} or Set{} 
ambiguous Collection Kind 
requires run-time check 
no mechansism to express conversion in XMI 
... Set{anObject}->... 
bypasses the run-time null test 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
15009: Implicit Set Conversion (2) 
let anObject : OclAny = ... in anObject->forAll(...) 
OCL 2.4 
implicit conversion is always to Set 
implicit conversion is a navigation shorthand 
... anObject.oclAsSet()->forAll(...) 
OclAny::oclAsSet() returns Set{self} 
OclVoid::oclAsSet() returns Set{} 
OclInvalid::oclAsSet() returns invalid 
run-time null check resolved by operation overload 
XMI serialization can reference library operation 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
14918: Equality 
true = true 
Pre OCL 2.4 
comparison of objects 
true not necessarily equal to true 
OCL 2.4 
datatypes compared by (deep) value 
true necessarily equal to true 
object equal to itself but not to any other object 
Oops: Real::=(), Real::<>() overload omitted 
1.0 not yet unambiguously = 1 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
17531: Logical operations on null (1) 
not not null 
Pre OCL 2.2 
logic of 'undefined' very ill-defined 
OCL 2.3 
invalid/null clarification made 
not null = invalid 
BAD: not not X not equal to X for all X 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
17531: Logical operations on null (2) 
not not null 
OCL 2.4 
not null = null 
similarly null revised so that for all X 
false and X = false 
true and X = X 
true or X = true 
false or X = X 
exists and forAll are explicitly iterated and/or 
same null/invalid handling 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 15836 : Reverse CollectionRange 
Sequence{4..2} 
Pre OCL 2.4 
unspecified; WFR loops indefinitely 
OCL 2.4 
CollectionRanges must count up 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 18437 : calling null 
null.oclIsKindOf(OclVoid) 
Pre OCL 2.4 
all calls on null/invalid return invalid 
except some calls on null return useful results 
OCL 2.4 
All oclXXX functions explicitly specified 
for OclAny, OclVoid, OclInvalid 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 18464 : closure includes source 
sources->closure(...) 
Pre OCL 2.4 
conflicting words excluding sources from results 
OCL 2.4 
results include sources in results 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 18504 : any on empty 
Set{}->any(...) 
Pre OCL 2.4 
conflicting words suggest null return 
OCL 2.4 
no return gives invalid 
allows null to be a valid return 
Sequence{null}->any(true) 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 17220 : String::indexOf 
''.indexOf('') 
Pre OCL 2.4 
empty string cannot be substring of itself 
OCL 2.4 
empty is substring of all strings at index 1 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 16260: ocl??InState 
oclInState(...) oclIsInState(...) 
Pre OCL 2.4 
spelling unclear 
OCL 2.4 
It is oclIsInState(...) 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
Issue 6551 polymorphic iterations 
select/reject etc are now polymorphic 
let a : Collection(String) = .... 
in a->select(...) 
uses the appropriate derived Set::select... 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
OCL 2.4 Statistics 
Many typos corrected 
58 issues resolved 
13 issues were duplicates 
37 issues closed no change 
Many many more remain 
175 issues deferred 
OCL 2.4 - local easy fixes 
RTF - Revision Task Force 
XMI files are unchanged so still not fit for purpose 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
OCL 2.5 
The hard fixes, UML 2.5 alignment 
accurate, useful models (normative) 
auto-generated specification text (non-normative) 
Major 'rewrite' requires an RFP then an FTF 
Request For Proposal - December 2013 
draft on my laptop 
Submission(s) by ?? December 2014 
Revisions by ?? March 2015 
Finalization Task Force ?? June 2015 
Standard ?? December 2015 
OCL 2.4 (... OCL 2.5) Made available under EPL 1.0

Mais conteúdo relacionado

Mais procurados

Introduction to RxJava on Android
Introduction to RxJava on AndroidIntroduction to RxJava on Android
Introduction to RxJava on AndroidChris Arriola
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsEdward Willink
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIJörn Guy Süß JGS
 
Cilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemCilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemShareek Ahamed
 
The Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on AndroidThe Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on AndroidFernando Cejas
 
Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapSrinivasan Raghvan
 
Jfokus functional groovy
Jfokus functional groovyJfokus functional groovy
Jfokus functional groovyAndres Almiray
 
Software Transactioneel Geheugen
Software Transactioneel GeheugenSoftware Transactioneel Geheugen
Software Transactioneel GeheugenDevnology
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextEdward Willink
 
Storage classes in c++
Storage classes in c++Storage classes in c++
Storage classes in c++Jaspal Singh
 
stacks and queues class 12 in c++
stacks and  queues class 12 in c++stacks and  queues class 12 in c++
stacks and queues class 12 in c++Khushal Mehta
 
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...Frank Nielsen
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onOnofrio Panzarino
 
Java 8 - Project Lambda
Java 8 - Project LambdaJava 8 - Project Lambda
Java 8 - Project LambdaRahman USTA
 

Mais procurados (20)

Introduction to RxJava on Android
Introduction to RxJava on AndroidIntroduction to RxJava on Android
Introduction to RxJava on Android
 
RxJava@Android
RxJava@AndroidRxJava@Android
RxJava@Android
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL Collections
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Lambdas HOL
Lambdas HOLLambdas HOL
Lambdas HOL
 
Cilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemCilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime System
 
The Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on AndroidThe Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on Android
 
Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmap
 
Scilab vs matlab
Scilab vs matlabScilab vs matlab
Scilab vs matlab
 
Java 8 stream and c# 3.5
Java 8 stream and c# 3.5Java 8 stream and c# 3.5
Java 8 stream and c# 3.5
 
Python to scala
Python to scalaPython to scala
Python to scala
 
Jfokus functional groovy
Jfokus functional groovyJfokus functional groovy
Jfokus functional groovy
 
Link quries
Link quriesLink quries
Link quries
 
Software Transactioneel Geheugen
Software Transactioneel GeheugenSoftware Transactioneel Geheugen
Software Transactioneel Geheugen
 
Re-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for XtextRe-engineering Eclipse MDT/OCL for Xtext
Re-engineering Eclipse MDT/OCL for Xtext
 
Storage classes in c++
Storage classes in c++Storage classes in c++
Storage classes in c++
 
stacks and queues class 12 in c++
stacks and  queues class 12 in c++stacks and  queues class 12 in c++
stacks and queues class 12 in c++
 
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
(chapter 5) A Concise and Practical Introduction to Programming Algorithms in...
 
Jug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands onJug Marche: Meeting June 2014. Java 8 hands on
Jug Marche: Meeting June 2014. Java 8 hands on
 
Java 8 - Project Lambda
Java 8 - Project LambdaJava 8 - Project Lambda
Java 8 - Project Lambda
 

Destaque

Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...Valerio Cosentino
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Ricardo Quintero
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governancebharati k
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification StatusEdward Willink
 
Timing verification of automotive communication architecture using quantile ...
Timing verification of automotive communication  architecture using quantile ...Timing verification of automotive communication  architecture using quantile ...
Timing verification of automotive communication architecture using quantile ...RealTime-at-Work (RTaW)
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artTom Mens
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in FrancePascal Roques
 
mis
mismis
misISIG
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
OCCIware: extensible and standard-based XaaS platform to manage everything in...
OCCIware: extensible and standard-based XaaS platform to manage everything in...OCCIware: extensible and standard-based XaaS platform to manage everything in...
OCCIware: extensible and standard-based XaaS platform to manage everything in...OCCIware
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Edward Willink
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking AssignmentSalma ES-Salmani
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of OppositesEdward Willink
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware
 
La &amp; edm in practice
La &amp; edm in practiceLa &amp; edm in practice
La &amp; edm in practicebharati k
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Erradi Mohamed
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsEdward Willink
 
Collaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsCollaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsJordi Cabot
 

Destaque (20)

Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL Summary
 
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
Extracting UML/OCL Integrity Constraints and Derived Types from Relational Da...
 
Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1Uml Omg Fundamental Certification 1
Uml Omg Fundamental Certification 1
 
01072013 e governance
01072013 e governance01072013 e governance
01072013 e governance
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification Status
 
Timing verification of automotive communication architecture using quantile ...
Timing verification of automotive communication  architecture using quantile ...Timing verification of automotive communication  architecture using quantile ...
Timing verification of automotive communication architecture using quantile ...
 
Model Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the artModel Transformation: A survey of the state of the art
Model Transformation: A survey of the state of the art
 
SysML adoption in France
SysML adoption in FranceSysML adoption in France
SysML adoption in France
 
mis
mismis
mis
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
OCCIware: extensible and standard-based XaaS platform to manage everything in...
OCCIware: extensible and standard-based XaaS platform to manage everything in...OCCIware: extensible and standard-based XaaS platform to manage everything in...
OCCIware: extensible and standard-based XaaS platform to manage everything in...
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
 
OCL 2.5 plans
OCL 2.5 plansOCL 2.5 plans
OCL 2.5 plans
 
Design Thinking Assignment
Design Thinking AssignmentDesign Thinking Assignment
Design Thinking Assignment
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of Opposites
 
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
OCCIware, an extensible, standard-based XaaS consumer platform to manage ever...
 
La &amp; edm in practice
La &amp; edm in practiceLa &amp; edm in practice
La &amp; edm in practice
 
Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire Ressource numérique Circuit électrique au primaire
Ressource numérique Circuit électrique au primaire
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc results
 
Collaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source ProjectsCollaboration and Governance of Open Source Projects
Collaboration and Governance of Open Source Projects
 

Semelhante a OCL 2.4 and OCL 2.5 Updates Summary

Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard LibraryEdward Willink
 
Data Structure Lecture 7
Data Structure Lecture 7Data Structure Lecture 7
Data Structure Lecture 7Teksify
 
Enriching your models with OCL
Enriching your models with OCLEnriching your models with OCL
Enriching your models with OCLUniversity of York
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In LispLISP Content
 
Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Davide Cerbo
 

Semelhante a OCL 2.4 and OCL 2.5 Updates Summary (9)

Modeling the OCL Standard Library
Modeling the OCL Standard LibraryModeling the OCL Standard Library
Modeling the OCL Standard Library
 
Data Structure Lecture 7
Data Structure Lecture 7Data Structure Lecture 7
Data Structure Lecture 7
 
Enriching your models with OCL
Enriching your models with OCLEnriching your models with OCL
Enriching your models with OCL
 
VLSI lab manual
VLSI lab manualVLSI lab manual
VLSI lab manual
 
VHDL Part 4
VHDL Part 4VHDL Part 4
VHDL Part 4
 
LISP:Loops In Lisp
LISP:Loops In LispLISP:Loops In Lisp
LISP:Loops In Lisp
 
LISP: Loops In Lisp
LISP: Loops In LispLISP: Loops In Lisp
LISP: Loops In Lisp
 
Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)Kotlin: forse è la volta buona (Trento)
Kotlin: forse è la volta buona (Trento)
 
Faster Python, FOSDEM
Faster Python, FOSDEMFaster Python, FOSDEM
Faster Python, FOSDEM
 

Mais de Edward Willink

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality CheckEdward Willink
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveEdward Willink
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TEdward Willink
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit OperatorsEdward Willink
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of ComputationEdward Willink
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT LanguagesEdward Willink
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger PictureEdward Willink
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal PerspectiveEdward Willink
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesEdward Willink
 
Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCLEdward Willink
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCLEdward Willink
 

Mais de Edward Willink (14)

An OCL Map Type
An OCL Map TypeAn OCL Map Type
An OCL Map Type
 
OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality Check
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and Prospective
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2T
 
Shadow Objects
Shadow ObjectsShadow Objects
Shadow Objects
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit Operators
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of Computation
 
Yet Another Three QVT Languages
Yet Another Three QVT LanguagesYet Another Three QVT Languages
Yet Another Three QVT Languages
 
OCL - The Bigger Picture
OCL - The Bigger PictureOCL - The Bigger Picture
OCL - The Bigger Picture
 
UMLX and QVT and ATL
UMLX and QVT and ATLUMLX and QVT and ATL
UMLX and QVT and ATL
 
Model Transformation A Personal Perspective
Model Transformation A Personal PerspectiveModel Transformation A Personal Perspective
Model Transformation A Personal Perspective
 
Fast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast QueriesFast, Faster and Super-Fast Queries
Fast, Faster and Super-Fast Queries
 
Enrich Your Models With OCL
Enrich Your Models With OCLEnrich Your Models With OCL
Enrich Your Models With OCL
 
Enriching Your Models with OCL
Enriching Your Models with OCLEnriching Your Models with OCL
Enriching Your Models with OCL
 

Último

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 

Último (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 

OCL 2.4 and OCL 2.5 Updates Summary

  • 1. OCL 2.4 (... OCL 2.5) Edward Willink OMG OCL RTF chair, OMG QVT RTF chair, Eclipse OCL Project Lead, Eclipse QVTd Project Lead, OCL 2013 @ MODELS 2013 30 September 2013 Made available under EPL 1.0
  • 2. Overview OCL 2.4 (... OCL 2.5) Made available under EPL 1.0 OCL 2.4 New Collection::selectByKind/selectByType OclAny::oclAsSet Significant clarification not null = Minor details OCL 2.5
  • 3. Issue 18829 : selectByKind/selectByType Pre OCL 2.4 sources->select(oclIsKindOf(Z))->collect(oclAsType(Z))->asSet() OCL 2.4 sources->selectByKind(Z) selectByKind (analoguous to oclIsKindOf) returns non-null elements of selected type/subtypes selectByType (analoguous to oclIsTypeOf) returns elements of selected type result has unchanged Collection Kind Set returns Set, Bag returns Bag etc OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 4. 15009: Implicit Set Conversion (1) let anObject : OclAny = ... in anObject->forAll(...) Pre OCL 2.4 implicit conversion of non-null anObject to Bag{anObject} or Set{anObject} implicit conversion of null to Bag{} or Set{} ambiguous Collection Kind requires run-time check no mechansism to express conversion in XMI ... Set{anObject}->... bypasses the run-time null test OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 5. 15009: Implicit Set Conversion (2) let anObject : OclAny = ... in anObject->forAll(...) OCL 2.4 implicit conversion is always to Set implicit conversion is a navigation shorthand ... anObject.oclAsSet()->forAll(...) OclAny::oclAsSet() returns Set{self} OclVoid::oclAsSet() returns Set{} OclInvalid::oclAsSet() returns invalid run-time null check resolved by operation overload XMI serialization can reference library operation OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 6. 14918: Equality true = true Pre OCL 2.4 comparison of objects true not necessarily equal to true OCL 2.4 datatypes compared by (deep) value true necessarily equal to true object equal to itself but not to any other object Oops: Real::=(), Real::<>() overload omitted 1.0 not yet unambiguously = 1 OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 7. 17531: Logical operations on null (1) not not null Pre OCL 2.2 logic of 'undefined' very ill-defined OCL 2.3 invalid/null clarification made not null = invalid BAD: not not X not equal to X for all X OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 8. 17531: Logical operations on null (2) not not null OCL 2.4 not null = null similarly null revised so that for all X false and X = false true and X = X true or X = true false or X = X exists and forAll are explicitly iterated and/or same null/invalid handling OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 9. Issue 15836 : Reverse CollectionRange Sequence{4..2} Pre OCL 2.4 unspecified; WFR loops indefinitely OCL 2.4 CollectionRanges must count up OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 10. Issue 18437 : calling null null.oclIsKindOf(OclVoid) Pre OCL 2.4 all calls on null/invalid return invalid except some calls on null return useful results OCL 2.4 All oclXXX functions explicitly specified for OclAny, OclVoid, OclInvalid OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 11. Issue 18464 : closure includes source sources->closure(...) Pre OCL 2.4 conflicting words excluding sources from results OCL 2.4 results include sources in results OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 12. Issue 18504 : any on empty Set{}->any(...) Pre OCL 2.4 conflicting words suggest null return OCL 2.4 no return gives invalid allows null to be a valid return Sequence{null}->any(true) OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 13. Issue 17220 : String::indexOf ''.indexOf('') Pre OCL 2.4 empty string cannot be substring of itself OCL 2.4 empty is substring of all strings at index 1 OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 14. Issue 16260: ocl??InState oclInState(...) oclIsInState(...) Pre OCL 2.4 spelling unclear OCL 2.4 It is oclIsInState(...) OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 15. Issue 6551 polymorphic iterations select/reject etc are now polymorphic let a : Collection(String) = .... in a->select(...) uses the appropriate derived Set::select... OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 16. OCL 2.4 Statistics Many typos corrected 58 issues resolved 13 issues were duplicates 37 issues closed no change Many many more remain 175 issues deferred OCL 2.4 - local easy fixes RTF - Revision Task Force XMI files are unchanged so still not fit for purpose OCL 2.4 (... OCL 2.5) Made available under EPL 1.0
  • 17. OCL 2.5 The hard fixes, UML 2.5 alignment accurate, useful models (normative) auto-generated specification text (non-normative) Major 'rewrite' requires an RFP then an FTF Request For Proposal - December 2013 draft on my laptop Submission(s) by ?? December 2014 Revisions by ?? March 2015 Finalization Task Force ?? June 2015 Standard ?? December 2015 OCL 2.4 (... OCL 2.5) Made available under EPL 1.0