Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OCL 2.4. (... 2.5)

682 views

Published on

Presentation at the OCL 2013 workshop and in part to the OMG Analysis and Design Task Force.

Changes in OCL 2.4 and plans for OCL 2.5.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

OCL 2.4. (... 2.5)

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×