DDS4CCM 1.1 RTF Avatar
  1. OMG Issue

DDS4CCM11 — Use of symbolic constant as string or sequence bound

  • Key: DDS4CCM11-17
  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    Page 47 beneath Figure 8.13 contains:

    The extended UML metamodel contains an abstract stereotype <<CORBATemplate>>, which is a generalization of <<CORBAString>>, <<CORBAWstring>>, and <<CORBASequence>> stereotypes. All <<CORBATemplate>> elements have a tag “bound” that indicates the maximum size of the element.

    Page 48 CORBASequence contains:

    Sequences are represented in the Profile by two means:

    • Named by a typedef declaration sequences are represented by the UML DataType with the stereotype <<CORBASequence>>. Sequence members are represented by an attribute of the DataType, which always has the name “members” (profile keyword), members type is represented by the type of the “members”-attribute and the max size is represented by the multiplicity of the “members”-attribute.
      [...]

    Thus there appear to be two mechanisms for specifying the string/sequence bound,

    • either via the «CORBAString» / «CORBASequence» stereotype tag bound
    • or via the typedef-datatype attribute members multiplicity upper bound

    I propose following clarification:

    When defining a bounded string or a bounded sequence,
    * If the bound value is a plain number, the multiplicity upper bound of the "members" attribute shall be used for carrying the bound number.
    * If the bound is a symbolic constant then the stereotype tag "bound" shall be used. It shall carry the fully qualified name of the IDL constant.
    

    Reason:
    Use of attribute multiplicity for the symbolic constant representing the string/sequence bound is problematic.
    Most UML tools do not support such symbols in the UML attribute multiplicity expression.

    Consider the following IDL:

    module config {
       const short max_size = 8;
    };
    module types {
       typedef string<config::max_size> name_t;
       typedef sequence<boolean, config::max_size> bool_seq_t;
    };
    

    Here, in both cases the multiplicity of the members attribute shall not be used. Instead, the stereotype tag bound shall contain "config::max_size"
    for the typedef-datatypes.

  • Reported: CCCMP 1.0 — Tue, 7 Apr 2020 19:33 GMT
  • Updated: Thu, 9 Apr 2020 18:45 GMT