UML 2.3 RTF Avatar
  1. OMG Issue

UML23 — Names of ownedEnds that were there in UML 2.1.1 are missing in UML 2.2

  • Key: UML23-125
  • Legacy Issue Number: 14355
  • Status: closed  
  • Source: The MathWorks ( Salman Qadri)
  • Summary:

    The MOF 2.0 Specification section 12.4 states that "Names are required for all Types and Properties". We should ensure that all Properties in the UML xmi files have names, preferably the same as the ones that were already there in UML 2.1.1 (this is a regression). An example is:

    " Classes-Interfaces-A_interface_ownedAttribute-_ownedEnd.0" in Superstructure.xmi (2.3) and " Classes-Interfaces-A_interface_ownedAttribute-_ownedEnd.0" in Superstructure.cmof (2.2) have no names. But " Classes-Interfaces-A_interface_ownedAttribute-interface" in Superstructure.cmof (2.1.1) has names.

  • Reported: UML 2.2 — Fri, 4 Sep 2009 04:00 GMT
  • Disposition: Resolved — UML 2.3
  • Disposition Summary:

    The UML 2.1.1 XMI files are fully compliant with the quoted constraint that "Names are required for all Types and Properties". The UML 2.3 XMI files; however, no longer have names for several association end properties (298 in the in Superstructure.xmi; 55 in the Infrastructure.xmi). Most of these association end properties are in fact owned ends of their respective associations. These ownedEnds are MOF Properties that had names in UML 2.1.1. We consider this to be a regression, and we are to repair all such ownedEnds by restauring their name according to the naming convention specified in clause 6.4.2 that was used to name the corresponding association.
    In addition, we will ensure that there are no other Types or Properties that have no name. In Superstructure.xmi (2.3), there are 5 Associations which also must be given names. This is an XMI-only change.
    The OCL query used to find associations with unnamed association ends using RSA 7.5.3 & the RSA-proprietary *.emx representation of the infrastructure & superstructure metamodels is the following:
    let As : Collection(Association) = self.allOwnedElements()
    ->select(oclIsKindOf(Association)).oclAsType(Association) in
    As->select(a|a.member->exists(name->isEmpty()))
    ->sortedBy(qualifiedName).qualifiedName
    The OCL query used to report unnamed associations using RSA 7.5.3 & the RSA-proprietary *.emx representation of the infrastructure & superstructure metamodels is the following:
    let As : Collection(Association) = self.allOwnedElements()
    ->select(oclIsKindOf(Association)).oclAsType(Association) in
    As->select(a|a.name->isEmpty())->collect(a|Tuple

    { pkg=a.namespace.qualifiedName, end1_type=a.member->asSequence()->at(1).oclAsType(Property).type.name, end1_name=a.member->asSequence()->at(1).oclAsType(Property).name, end2_type=a.member->asSequence()->at(2).oclAsType(Property).type.name, end2_name=a.member->asSequence()->at(2).oclAsType(Property).name}

    )

    The OCL query used to verify that all occurrences of unnamed association ends are in fact owned ends of their associations using RSA 7.5.3 & the RSA-proprietary *.emx representation of the infrastructure & superstructure metamodels is the following:
    let As : Collection(Association) = self.allOwnedElements()->select(oclIsKindOf(Association)).oclAsType(Association) in
    As->select(a|a.member->exists(name->isEmpty()))
    >forAll(a|a.member>one(m|m.name->isEmpty() and
    m.oclAsType(Property).association->notEmpty()))

  • Updated: Fri, 6 Mar 2015 20:58 GMT