UML Profile for CORBA and CORBA Components Avatar
  1. OMG Specification

UML Profile for CORBA and CORBA Components — Open Issues

  • Acronym: CCCMP
  • Issues Count: 9
  • Description: Issues not resolved
Open Closed All
Issues not resolved

Issues Descriptions

Editorial corrections

  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    p16 7.3.6 cont'd

    [19] context ConsumesDe inv:
    component.contents->includesAll (consumess)

    -> context ConsumesDef



    p18 7.3.6 cont'd

    [36] Contraints [33], [34], and [35] apply recursively to valuetype members that are valuetypes.

    -> Constraints



    p18 7.3.6 cont'd

    [33, 34, 35, 36] isAcceptableKeyType (type)
    isAcceptableKeyType (valueType : ValueDef) : Boolean
    { valueType.contents.forAll
    ( c | c.oclIsTypeOf(ValuefMemberDef) implies c.OclAsType (ValueMemberDef).isPublicMember)

    -> c.oclIsTypeOf(ValueMemberDef)

    -> c.oclAsType (ValueMemberDef)
    (using lowercase "o" at c.oclAsType)



    p19 top

    else
             result = home.key
    endi f }
    

    -> endif }



    p32 paragraph below Figure 7.16, last sentence

    The Binding metaclass has two attributes: “name” (the name of the Binding) and “CCMQoS
    metamodel: Bindingmandatory” (if “true,” then the QoS property is bound in any case).

    -> Change “CCMQoS metamodel: Bindingmandatory” to “mandatory”



    p44 CORBAUnion example

            enum Contents
            {
                  INTEGER_CL;
                  FLOAT_CL;
                  DOUBLE_CL;
                  COMPLEX_CL;
                  STRUCTURED_CL;
            };
    

    The delimiter for enum values is a comma; the value list should be:

                  INTEGER_CL,
                  FLOAT_CL,
                  DOUBLE_CL,
                  COMPLEX_CL,
                  STRUCTURED_CL
            };
    



    p45 Figure 8.9 - Union example (a)

    -> Remove class «CORBAUnion» "Reading", it is redundant to fig. 8.10



    p45 Figure 8.10 - Union example (b)

     ┌──────────────────────────────────────────────────────────┐
     │                      «CORBAUnion»                        │      
     │                        Reading                           │      
     ├──────────────────────────────────────────────────────────┤
     │ «CORBASwitch» discriminator: Contents                    │      
     │ «CORBACase» a_long: long {lable=INTEGER_CL}              │      
     │ «CORBACase» a_double: double {lable=FLOAT_CL, DOUBLE_CL} │
     │ «CORBACase» an_any: any {lable=default}                  │      
     └──────────────────────────────────────────────────────────┘
    

    "lable" -> "label"



    p45 CORBAStruct example

            struct Problem
            {
                  string expression;
                  Fraction result;
                  Boolean correctness;
    

    -> boolean correctness;
    (lowercase "b" at "boolean")



    p49 CORBAArray list 1st bullet 4th sentence

    • Named by a typedef declaration arrays are represented by the UML DataType [...]
      [...] The value of the “tag „index” is a list of integers separated by comma [...]

    -> The value of the tag “index”



    p62 Constraints

    [43-4] Contraints [43-1], [43-2], and [43-3] apply recursively to [...]

    -> Constraints



    p62 Constraints

    [43-1, 43-2, 43-3, 43-4] isAcceptableKeyType(type)

    isAcceptableKeyType (valueType : ValueDef) : boolean
    { valueType.contents.forAll (c | c.oclIsTypeOf(ValuefMemberDef) implies
    c.OclAsType(ValueMemberDef).isPublicMember) and

    -> c.oclIsTypeOf(ValueMemberDef)

    -> c.oclAsType(ValueMemberDef)
    (with lowercase "o" at c.oclAsType)



    p63 8.2.3 Example

            typedef enum PhilosopherState
            {
    

    Use of `typedef` in this context is archaic. Omit `typedef`:

            enum PhilosopherState
            {
    



    p63 8.2.3 Example

            eventtype StatusInfo {
                  public  string name;
                  public  PhilosopherState state;
                  public  long secondesSinceLastMeal;
    

    -> secondsSinceLastMeal



    p66 Figure 8.25 bottom left

            ┌─────────────────────┐
            │   <<enumeration>>   │
            │  ComponentCategory  │
            ├─────────────────────┤
            │ ▱ session           │
            │ ▱ entity            │
            │ ▱ process           │
            │ ▱ sevice            │
            │ ▱ extension         │
            └─────────────────────┘
    

    -> service



    p71 paragraph before 8.4.2

    [...] All these files are represented using a UML Artifact with stereotypes
    <<CORBAAComponentFile>>, <<CORBAAIDLFile>>, <<CORBAAContainedFile>>, and <<CORBAADependentFile>>.

    -> CORBAComponentFile , CORBAIDLFile , CORBAContainedFile , CORBADependentFile



    p71 Table 8.4 rightmost column header Const-raints

    -> Constraints



    p82 Class2Interface

    Class2Interface (cl, itf)
    FORALL UML1Class cl WHERE c.stereotype = "CORBAInterface" || "CORBAHome“
    CREATE UML2Interface itf
    SETTING itf.stereotype = cl.stereotype, itf.name = cl.name, itf.attribute = cl.attribute, itf.operation = cl.opertaion,

    -> cl.operation



    p86 9.2.1 example, cont'd

          interface RetrieveRadarData {
              /* callculates the List of radar contacts visible for a given position of a Radar */
    

    -> calculates

  • Reported: CCCMP 1.0 — Tue, 14 Apr 2020 08:30 GMT
  • Updated: Tue, 14 Apr 2020 18:53 GMT

Use of symbolic constant as string or sequence bound

  • 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

Typos at figure 8.6 Constant example

  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    The IDL example on page 41 above Figure 8.6 is:

    module Y
    {
          constant short S = 3;
          interface X
          {
                constant long L = S + 20;
          };
    };
    

    The keyword for IDL constants is const, i.e.

          const short S = 3;
          [...]
                const long L = S + 20;
    
  • Reported: CCCMP 1.0 — Wed, 8 Apr 2020 15:18 GMT
  • Updated: Thu, 9 Apr 2020 18:44 GMT

Bounded string attribute of struct/union/valuetype/interface is not mapped

  • Key: CCCMP-16
  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    Section 8.1.2 defines stereotypes CORBAAnonymousSequence and CORBAAnonymousArray for mapping sequence/array attributes of struct/union/valuetype/interface without a dedicated typedef.
    However, an equivalent CORBAAnonymousString stereotype is not defined.
    Thus it is not obvious how to map e.g.

      struct struct_with_anon_bounded_str {
        string<32> anon_bounded_str;
      };
    
      union union_with_anon_bounded_str switch (boolean) {
        case TRUE:
          string<32> anon_bounded_str;
      };
    
      valuetype valuetype_with_anon_bounded_str {
        public string<32> anon_bounded_str;
      };
    
      interface interface_with_anon_bounded_str {
        attribute string<32> anon_bounded_str;
      };
    
  • Reported: CCCMP 1.0 — Wed, 20 Mar 2019 09:27 GMT
  • Updated: Mon, 8 Apr 2019 16:47 GMT

Extended UML metamodel derivations of <>

  • Key: CCCMP-15
  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    The UML Profile for CORBA and CCM on page 47 states:

    The extended UML metamodel contains an abstract stereotype <<CORBATemplate>>, which is a generalization of <<CORBAString>>, <<CORBAWstring>>, and <<CORBASequence>> stereotypes.

    The part about «CORBAString» and «CORBAWstring» inheriting from «CORBATemplate» does not fit with figure 8.7 on page 42 which shows that those stereotypes inherit from «CORBABounded».

    According to the class diagram, the sentence should be:

    The extended UML metamodel contains an abstract stereotype <<CORBATemplate>>, which is a generalization of <<CORBAArray>> and <<CORBASequence>> stereotypes.
    
  • Reported: CCCMP 1.0 — Fri, 9 Feb 2018 13:02 GMT
  • Updated: Mon, 12 Feb 2018 10:28 GMT

Inconsistent capitalization of <>

  • Key: CCCMP-4
  • Legacy Issue Number: 18380
  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    For the stereotype designating IDL "typedef", the UML Profile for CORBA
    v1.0 (02-04-01) uses the capitalization "CORBATypedef".
    The UML Profile for CORBA and CCM v1.0 (08-04-07) sometimes uses the
    same capitalization but also uses the capitalization "CORBATypeDef"
    (notice the capital "D".)
    For compatibility with the UML Profile for CORBA, I suggest replacing
    all occurrences of "CORBATypeDef" by "CORBATypedef".

  • Reported: CCCMP 1.0 — Mon, 21 Jan 2013 05:00 GMT
  • Updated: Fri, 6 Mar 2015 20:59 GMT

Section: 8.2.1 - 2

  • Key: CCCMP-2
  • Legacy Issue Number: 11159
  • Status: open  
  • Source: Commissariat a l Energie Atomique-CEA ( Yann Tanguy)
  • Summary:

    P. 51 . The CORBAUses stereotype has a property "multiple" of type PrimitiveKind P. 53 . The CORBAUses stereotype has a property "isMultiple" of type boolean. This looks like a naming and type inconsistency between diagram and tabular representation of the stereotype. If this is the case and isMultiple is really typed boolean, PrimitiveKind becomes useless (I did not find any other use of PrimitiveKind in the profile). If not (I mean PrimitiveKind is the wanted type), it may be better to type the "multiple" property with the "CORBAPrimitive" stereotype instead of creating and using an enumeration like PrimitiveKind.

  • Reported: CCCMP 1.0 — Wed, 18 Jul 2007 04:00 GMT
  • Updated: Fri, 6 Mar 2015 20:59 GMT

Section 9 of UML Profile for CORBA and CCM

  • Key: CCCMP-3
  • Legacy Issue Number: 12359
  • Status: open  
  • Source: Objective Interface Systems ( Victor Giddings)
  • Summary:

    Chapter 9 should be clearly marked as non-normative. Noted during smsc review. Thus, formal document number not available

  • Reported: CCCMP 1.0 — Mon, 31 Mar 2008 04:00 GMT
  • Updated: Fri, 6 Mar 2015 20:59 GMT

Section: 8.1.2

  • Key: CCCMP-1
  • Legacy Issue Number: 11158
  • Status: open  
  • Source: Commissariat a l Energie Atomique-CEA ( Yann Tanguy)
  • Summary:

    Litteral of the enumeration PrimitiveKind are prefixed with "CORBA" or "Corba", instead of "CORBA" (upper case) for all litterals

  • Reported: CCCMP 1.0 — Wed, 18 Jul 2007 04:00 GMT
  • Updated: Fri, 6 Mar 2015 20:59 GMT