Hi Thomas,
I appreciate the trouble you've taken to evaluate OCL, and think several
of the issues are worthy of consideration.
Just for your information, and for others on this list, the latest
version of the OCL 2.0 submission is 1.6 (as opposed to 1.0 you reviewed
which is 2.5 years old!). This is due to be adopted later today, as it
happens.
Despite the imminent adoption it is still possible to submit issues to
OMG's Finalization Task Force which is responsible for considering
implementation and other issues prior to the standard becoming
officially 'Finalized' and 'Available'. To do this just send an email to
issues@omg.org, or fill in the form at the OMG web site
http://www.omg.org/technology/issuesform.htm.
In general OMG attempts to be an open and responsive organization and
anyone (not only members) can raise issues against any OMG
specification. Though OMG can only address issues if it know about them
- so I would sincerely encourage people to use the mechanisms available.
However, while I must admit a bias as one of the submitters of OCL 2.0,
I would disagree that the semantics are 'quite broken'. I assume the
following from the review is intended to illustrate 'broken semantics':
--->
In section 2.5.4, subsection "Navigation over Associations with
Multiplicity Zero or One" it is stated that "...a single object can be
used as a set as well. It then behaves as if it is a Set containing the
single object...". I had to read this a few times to believe it. While
there is clearly a drive to make everything somehow the same for the
purpose of querying, there is no way a formal type system can be
respected if such liberties are taken - the basis of correct
specifications disappears. There is no way, for example, that
PERSON.manager: PERSON can act as a Set<> if has been specified as a
PERSON - these are two distinct types, and have nothing to do with each
other. "
<---
I view treating a single object as a set as a convenient implicit 'cast'
operation. Most programming languages have such a thing: e.g. to allow
an Integer to be treated as a Real. And if really concerned about the
difference OCL has capabilities to distinguish an object from a set.
Finally, with regard to implementability, there are several
implementations of OCL in existence (currently of OCL 1, though OCL 2
does not introduce any radically new capabilities). These exist in both
commercial products (e.g. BoldSoft, now part of Borland) and
university/research projects (e.g. Kent Modelling Framework -
www.cs.ukc.ac.uk/kmf).
Regards
Pete
Pete Rivett (pete.rivett@adaptive.com)
Consulting Architect, Adaptive Inc.
Dean Park House, 8-10 Dean Park Crescent, Bournemouth, BH1 1HL, UK
Tel: +44 (0)1202 449419 Fax: +44 (0)1202 449448
http://www.adaptive.com