Project Plan For Model Development Tools (MDT), version Indigo
Introduction
This document lays out the feature and API set for the sixth annual release of the Eclipse Object Constraint Language (MDT OCL) Project, version 3.1.0. A late requirement to use Xtext rather than IMP to support editing meant that many 3.0.0 facilities were not fully developed in time for release 3.0.0. Resolution of evaluator issues and library usability were held back, and the editors provided only as examples. Interim milestones, or if necessary an interim 3.1.0 release, are intended to resolve quality issues in the editors. The 3.1.0 release (for Indigo) should prepare for full integration of the new editors and make the library model-driven. Switchover of the old APIs to the new functionality and renaming of examples plugins should occur immediately after Indigo so that OCL clients have the entire Indigo+1 development cycle to exploit the enhancements that will appear in 3.2.0. New external APIs are planned to provide interchangeability with alternate OCL products. The existing external APIs should be unaffected, will be deprecated after Indigo, but may be retained indefinitely. New semi-internal parsing APIs are planned to resolve a number of hard problems and to provide compatibility between the LPG and Xtext parsers. The existing semi-internal parsing APIs will be retained in so far as possible, but will be deprecated in Indigo. The project team anticipates working with major consumers in the release after Indigo to assist in migration to the new APIs.
Note that, since the OMG OCL 2.3 standard suffers from significant ambiguities and conflicts making a compliant implementation impossible, Eclipse (MDT) OCL 3.1.0 release is best endeavours to establish a coherent interpretation of the OMG OCL 2.3 and to prototype resolutions and auto-generation of the OMG OCL 2.4 standard. Two of the Eclipse (MDT) OCL committers are also members of the OMG Revision Task Force that resolves the specification issues.
Release Deliverables
- OCL SDK (includes runtime, sources, examples, and documentation) (downloadable and update site).
- OCL runtime binary distribution (downloadable and update site).
- OCL stand-alone binary distribution (downloadable).
- OCL tests (downloadable)
- OCL examples (downloadable and update site)
Release Milestones
| 3.1.0M1 | Monday 18 August 2010 | |
| 3.1.0M2 | Monday 27 September 2010 | |
| 3.1.0M3 | Monday 8 November 2010 | |
| 3.1.0M4 | Monday 13 December 2010 | |
| 3.1.0M5 | Monday 31 January 2011 | |
| 3.1.0M6 | Monday 14 March 2011 | API freeze |
| 3.1.0M7 | Monday 2 May 2011 | Feature Freeze |
| 3.1.0RC1 | Monday 16 May 2011 | |
| 3.1.0RC2 | Monday 23 May 2011 | |
| 3.1.0RC3 | Monday 30 May 2011 | |
| 3.1.0RC4 | Monday 6 June 2011 | |
| Indigo | Monday 22 June 2011 |
Target Environments
Internationalization
Compatibility with Previous Releases
- Eclipse Platform SDK version 3.7
- Eclipse Modeling Framework (EMF) version 2.7
- Model Development Tools (MDT) UML2 version 3.2
As described above, the Eclipse OCL 3.1.0 release should address usability of the editors. The main OCL plugins should be unaffected, but the associated examples plugins may be revised significantly. Again as described above, the Eclipse OCL 3.2.0 release for Juno will introduce significant new APIs in a new namespace that replaces the old. The old namespace will be deprecated once all Simultaneous Release projects have migrated to the new namespace.
Themes and Priorities
Compliance
- [evaluator] OCL evaluation exception on comparing Real with 'OclInvalid' and 'null' values [191027]
(target milestone: 3.1.0) - [library,evaluator] Collections must conform to OclAny [290680]
(target milestone: 3.1.0) - [library] Add support for toString() [152207]
(target milestone: 3.1.0) - [project] Compliance: OCL Specification Currency [156363]
(target milestone: Indigo) - [library,validator,evaluator] The type of TypeExp should be classifier (C) [190150]
(target milestone: 3.1.0) - [ast] Detailed EssentialOCL model inconsistencies [215110]
(target milestone: 3.1.0) - [library] Set operations like including(obj) and excluding(obj) should be specialized for OrederedSet [246962]
(target milestone: 3.1.0) - [library] Provide support for oclType() operation per OMG OCL 2.1 RTF [259031]
(target milestone: 3.1.0) - [evaluator] Wrong behavior of the OCL boolean operations [267223]
(target milestone: 3.1.0) - [library] Introduce a shortcut for String concatenation [281710]
(target milestone: 3.1.0) - [evaluator] OclVoid and OclInvalid handling [282882]
(target milestone: 3.1.0) - [library] The MDT-OCL Ecore binding is not 'OCL' [283052]
(target milestone: 3.1.0) - [evaluator] Null values are ignored in collection literals [283518]
(target milestone: 3.1.0) - [evaluator] Tuple type resolution failure with product operation [284129]
(target milestone: 3.1.0) - [library] Miscellaneous TupleType problems [286737]
(target milestone: 3.1.0) - [evaluator] OCL discards values from lists returned by eoperations [287052]
(target milestone: 3.1.0) - [tests] Standard operations implementation issues [287977]
(target milestone: 3.1.0) - [evaluator] Collection::first has bad undefined return [288566]
(target milestone: 3.1.0) - [validator] iterators are not validated [288573]
(target milestone: 3.1.0) - [analyzer] Add qualified navigation paths [288575]
(target milestone: 3.1.0) - [library] null is not the singleton instance of OclVoid [290315]
(target milestone: 3.1.0) - [evaluator] Inadequate support for large integers [290605]
(target milestone: 3.1.0) - [evaluator] oclIsKindOf() incorrectly checks for OclAny type [291444]
(target milestone: 3.1.0) - [parser] Too many exists/forAll iterators should be a semantic error [296990]
(target milestone: 3.1.0) - [evaluator] NumberUtil.isDouble() is unsatisafctory [299477]
(target milestone: 3.1.0) - [evaluator] OrderedSet.insertAt can create a duplicate [299862]
(target milestone: 3.1.0) - [evaluator] CollectionUtil.flatten problems [299882]
(target milestone: 3.1.0) - [library] OclAny::oclAsType() doesn't check the source type [299959]
(target milestone: 3.1.0) - [analyzer] oclIsInState() incorrectly treats implicit collect shorthand [299966]
(target milestone: 3.1.0) - [evaluator] Object identity not respected in all Collection operations [301352]
(target milestone: 3.1.0) - [project] Introduce pivot meta-model [318047]
(target milestone: 3.1.0) - [project] Exploit pivot model in model-driven evaluator [318048]
(target milestone: 3.1.0)
- [evaluator] OCL evaluation exception on comparing Real with 'OclInvalid' and 'null' values [191027]
- No items.
Release Currency
- No items.
Usability
- [environment] UMLReflection.getOCLType considered dangerous [183496]
(target milestone: 3.1.0) - [ast] Problems with Resolution of hierarchical-name-based fragment URIs of ECORE [194568]
(target milestone: 3.1.0) - [library] oclstdlib.ecore is not a first class resource [196873]
(target milestone: 3.1.0) - [console] Syntax help (auto-completion) for types within current package [233622]
(target milestone: 3.1.0) - [environment,registry] Ecore meta classes in subpackages not usable in oclIsTypeOf [276519]
(target milestone: 3.1.0) - [analyzer] NegativeArraySizeException in org.eclipse.ocl.lpg.AbstractBasicEnvironment.parserError(int, int, int, String) [277620]
(target milestone: 3.1.0) - [releng] Update OCL feeds file on publishing the MDT OCL 3.0.0 build [298346]
(target milestone: 3.1.0) - [console] Position at end of line after Page-Up/Down [315654]
(target milestone: 3.1.0) - [console] Use Xtext editor [315655]
(target milestone: 3.1.0) - [console] Support Complete OCL [315656]
(target milestone: 3.1.0) - [editor] aliases used in OCLinEcore constraints are volatile [316192]
(target milestone: 3.1.0) - [editor] Inconsistent keyword serialisation [317398]
(target milestone: 3.1.0) - [editor] Save flashes XMI [318119]
(target milestone: 3.0.1) - [editor] SaveAs in Ecore2Ecore [318120]
(target milestone: 3.1.0) - [project] Usability: Improve Usability of OCL tools [318358]
(target milestone: Indigo) - [console] Query Delegate Text Viewer for OCL [332962]
(target milestone: 3.1.0)
- [environment] UMLReflection.getOCLType considered dangerous [183496]
- No items.
- [console] Overhaul the OCL Example [259922] (target milestone: 3.2.0)
- [environment] OCLProblemHandler behaviour with multiple errors is poor [282568] (target milestone: ---)
- [evaluator] On the fly OpaqueExpression parsing [286931] (target milestone: 3.2.0)
- [evaluator] pre and post conditions are ignored [303686] (target milestone: 3.2.0)
- [releng] src folders not distinct in source plugin [315984] (target milestone: 3.2.0)
- [editor] Support OCL editing in UML2 editor [318076] (target milestone: 3.2.0)
- [editor] Evolve OCLinEcore editor to UnifiedOCL [318078] (target milestone: 3.2.0)
- [validator] Use OCL expression of constraints [318092] (target milestone: ---)
- [synthesis] Introduce a CodeSynthesis 'Visitor' [279638]
(target milestone: M3) - [console] No duplicates violation saving an OCL Interpreter constraint [289660]
(target milestone: ---) - [ast] Optionally persist comments and token locations [303442]
(target milestone: ---) - [ast,editor] UML alignment [315719]
(target milestone: ---) - [registry] Make the Registry more widely used [318081]
(target milestone: 3.2.0) - [editor] Support OCL validation of live UML model instances [318077]
(target milestone: 3.2.0)
Specification
- [language] Support for opposite navigation with an Ecore-binding [251621]
(target milestone: 3.1.0) - [analyzer] parsing of forward references in init part of def statement [187679]
(target milestone: 3.1.0) - [evaluator] UnlimitedNaturalExp anomalies [190461]
(target milestone: 3.1.0) - [language] Add support for clients to define additional operations with generic signatures (template operations) [192907]
(target milestone: 3.2.0) - [library] UnlimitedNatural erroneously conforms to Real [261008]
(target milestone: 3.1.0) - [language,evaluator] Support overridden oclIsUndefined [291220]
(target milestone: 3.1.0) - [language] Refine OMG Issue 14197: OCL 2.0, 2.1 inconsistent definition of null and invalid [291721]
(target milestone: 3.1.0) - [analyzer] Source Collection Literals for arrow operations must be resolved at run-time [299841]
(target milestone: 3.1.0) - [analyzer] Problems redefining operations on subtypes [299967]
(target milestone: 3.1.0) - [project] Specification: Support evolution towards a coherent OMG OCL specification [318248]
(target milestone: Indigo)
- [language] Support for opposite navigation with an Ecore-binding [251621]
- No items.
- [language] Inconsistent Set signature deduction [184329] (target milestone: 3.2.0)
- [analyzer] Collection.getName() should include package qualification [241407] (target milestone: 3.2.0)
- [language] Constraints are not distinguishable [264927] (target milestone: 3.2.0)
- [language] Implement Type Constructors [293622] (target milestone: 3.2.0)
- [ast] Eliminate CollectionLiteralExp.kind [297390] (target milestone: ---)
- [analyzer] Cannot specify CollectionType in type operations on OclAny [299957] (target milestone: ---)
- [language,parser] TupleLiteralExpCS variables need a type [292627]
(target milestone: ---) - [language] Define and implement regular expression matching [293732]
(target milestone: M7) - [evaluator] Collection.sum should work for user-defined types [299843]
(target milestone: ---) - [library, evaluator] Collection(T)::sum() does not use T::+(T) [301351]
(target milestone: M6) - [language] selectAsType suggestion [309459]
(target milestone: M5)
Appendix Legal Notices
- Java is a trademark or a registered trademark of Oracle Corporation.
- OCL and OMG are trademarks or registered trademarks of the Object Management Group, Inc.
- All other products or company names are mentioned for identification purposes only, and may be trademarks or service marks of their respective owners.
