Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[mdt-uml2.dev] OCL and UML run-time alignment

Hi All

OCL 2.0, 2.1, 2.3 has an outstanding issue to achieve UML alignment. There are significant difficulties in aligning OCL's M1/run-time type system in which everything conforms to OclAny, and the OCL/UML M2/meta-modelling type system in which everything has Element as a general.

OCL's need to mutate the user meta-model by insertion of OclAny at the top of the class hierarchy and to merge definition constraints makes it difficult to achieve the desired alignment without modification of UML specifications.

MDT/OCL has many outstanding bugs relating to inadequacies and inaccuracies of the OCL Standard Library that supports the run-time type system.

It appears that the attempt to align OCL run-time with UML is misguided; the conformance relationship is similar but not the same as the generalisation relationship. The OCL run-time model is much simpler than UML classes; no associations or references, but also more complicated, three variants (built-in, meta-modelled and constrained) of operations and properties.

Introducing a distinct run-time meta-model appears to solve all the problems. The OCL standard library can then be a true model, and alternative models can be provided for variant behaviours e.g. MDT/OCL 1.3.0 rather than MDT/OCL 3.0.0 or QVTo 2.0 or ...

From the MDT/OCL side this is a major simplification and enhancement and eliminates the exposure of the Ecore/UML2 tooling distinction to OCL programmers. However, I have very limited familiarity with MDT/UML2 so cannot be sure whether this simplification has any impacts on MDT/UML2.

Does UML or MDT/UML2 have any significant run-time artifacts other than those provided by OCL?

A side question; can you confirm my interpretation of the UML specification that the semantics of operation overloading are a semantic variation point and that consequently the semantics of operation overloading in OCL are undefined?! If OCL has its own run-time meta-model, OCL can at least define this.

    Regards

        Ed Willink


Back to the top