Issues for Mailing list of the UML Profile for CORBA and CCM Finalization Task Force

To comment on any of these issues, send email to uml-corba-ccm-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.

List of issues (green=resolved, yellow=pending Board vote, red=unresolved)

List options: All ; Open Issues only; or Closed Issues only

Issue 10834: Section: 8.1.2
Issue 10835: Section: 8.1.2 p. 44
Issue 10836: Section: 8.1.2 p. 40
Issue 10837: clarification about relationships of specifications needed
Issue 10838: More clarification text about order of CORBAStruct members is needed
Issue 10981: Section: 3 Normative References
Issue 10982: Section: 7.2.10
Issue 10983: Section: 7.3.3
Issue 11009: Section: 8.1.2
Issue 11010: Section: 8.1.2, Figure 8.12

Issue 10834: Section: 8.1.2 (uml-corba-ccm-ftf)

Click here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Enhancement
Severity: Significant
Summary:
Initiated from Tom Rutt (Fujitsu: "The sequence mapping needs either fixing or clarification. I am still concerned about the complexity and yet incompleteness of the profile mapping for CORBA sequences and arrays. Suggestion: AnonymousSequence types are named by concatenation containing type "::" "m"<n> , where n is the member number of the anonymous sequence in containing type, e. g bar::m2 for second member of Struct bar (P. 31, Figure 8.15). Also I suggest to represent the sequence element values as a multivalued attribute with lower bound 0 and upper bound = sequence size or "*". This seems to work and is much easier to understand. Also, it requires NO NEW TAGGED VALUES for Sequencies." 

Resolution: see below
Revised Text: Resolution: The suggestions have been adopted as follows: • Both named and anonymous sequences are represented by the UML DataType; • Tags “type” and “index” are removed from the profile; • Sequence members are represented by an attribute of the DataType with 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; • Anonymous sequences get a name by concatenation of name of the containing type plus "::" plus "m"<n>, where n is the member number of the anonymous sequence in containing type. Changes: • CCMProfile Metamodel: tags “index” and “type” has been deleted from the stereotype “CORBATemplate”, the extension link between classes “Property” and “CORBAAnonymousSequence” has been deleted, a new relationship between classes “CORBAAnonymousSequence” and “DataType” has been added. • P. 37, Figure 8.7: attributes “index” and “type” have been deleted from the class “CORBATemplate”; • P.43 Text: “ o Named by a typedef declaration sequences are represented by the UML DataType with the stereotype <<CORBASequence>>. The upper bound of the sequence is modeled as a tag “index”of the DataType, and can be either a number (upper bound of the sequence) or an interval (lower and upper bound of the sequence). Named by a typedef CORBASequences have a tag “type”, which represents the element type of the sequence. Named by the member name of a constructed type sequences are represented by the UML Property (attribute) with the stereotype <<CORBAAnonymousSequence>>. In this case, the upper bound of the sequence is represented by the attribute “upper” of the UML metaclass MultiplicityElement (see Figure 8.7), and the element type of the sequence is represented by the type of the UML Property.” has been replaced in o “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.” o Named by the member name of a constructed type sequences are represented by the UML DataType with the stereotype <<CORBAAnonymousSequence>>. Anonymous sequences get a name by concatenation name of the container (containing type), "::" and "m"<n>, where n is the member number of the anonymous sequence in the container.” • P 43, Figure 8.14, 8.15, 8.16 have been replaced according to changes done in the specification: (figure on page 12 of the FTF report))
Actions taken:
March 21, 2007: received issue
November 7, 2007: closed issue

Issue 10835: Section: 8.1.2 p. 44 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Enhancement
Severity: Significant
Summary:
Initiated from Tom Rutt (Fujitsu): "Something similar to Sequences could be done for array mappings as well."

Resolution: see above
Revised Text:
Actions taken:
March 21, 2007: received issue
November 7, 2007: closed issue

Discussion:
Resolution:
Due to arrays are multidimensional using of lower bound and upper bound for the
representing of array members is not enough, this solution is good for one
dimension data structures (sequences are one-dimensional arrays). The
suggestions have been adopted as follows:
• Both named and anonymous arrays are represented by the UML
DataType;
• Tag “type” is removed from the profile;
• Array members are represented by an attribute of the DataType with the
name “members” (profile keyword), members type is represented by the
type of the “members”-attribute and the array size is represented by the
tag value “index”. All arrays representations must have a tag for index:
• one-dimensional arrays: “index”=n, where n is an integer and
represents the size of array dimension, the multiplicity of the attribute
"members" is not used here.
• multidimensional arrays: “index”=n, m,...,k, where n,m,k are integers
and represent the size of each multidimensional array dimension,
where n, m,... should be greater than 0, since CORBA IDL does not
support open arrays like “a []” because IDL does not support pointers.
• To clarify how elements of multidimensional arrays are to be ordered the
profile should use the same convention as GIOP, which is quoted from
CORBA/IIOP Specification, Chapter 15.3.2.4 „Array”: “In multidimensional
arrays, the elements are ordered so the index of the first dimension varies
most slowly, and the index of the last dimension varies most quickly.”
• Anonymous arrays get a name by concatenation of name of the containing
type plus "::" plus "m"<n>, where n is the member number of the
anonymous array in containing type.
Changes:
• CCMProfile Metamodel: tag “type” has been deleted from the
stereotype “CORBATemplate”, the extension link between classes
“Property” and “CORBAAnonymousArray” has been deleted, a new
relationship between classes “CORBAAnonymousArray” and
“DataType” has been added. P. 37, Figure 8.7: attributes “index” and “type” have been deleted from
the class “CORBATemplate”;
• P.44 Text:
o “Named by a typedef declaration arrays are represented by the
UML DataType with the stereotype <<CORBAArray>>. The
upper bound of the array is modeled as a tag “index”of the
DataType, and can be either a number (upper bound of the one
dimentional array) or a list of integers separated by comma
where each integer represents the size of each multidimensional
array dimensions. Named by a typedef CORBAArrays have a
tag “type”, which represents the element type of the array.
o Named by the member name of a constructed type arrays are
represented by the UML Property (attribute) with the stereotype
<<CORBAAnonymousArray>>. This stereotype has also the tag
“index” representing the index of the array and described
above.”
has been replaced in:
o “Named by a typedef declaration arrays are represented by the
UML DataType with the stereotype <<CORBAArray>>. Array
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 attribute. The
array size (dimensions) is represented by the tag "index" of the
DataType. The value of the tag „index“ is a list of integers
separated by comma where each integer represents the size of
each multidimensional array dimension (e.g.: "index"=n, m).
One-dimensional arrays are represented as “index”=n, where n
is an integer and must be greater than 0.
o Named by the member name of a constructed type arrays are
represented by the DataType with the stereotype
<<CORBAAnonymousArray>>. Anonymous arrays get a name
by concatenation name of the container (containing type), "::"
and "m"<n>, where n is the member number of the anonymous
array in the container. This stereotype has also the tag “index”
representing the index of the array described above.”
• P 44, Figure 8.17 and 8.18 have been replaced according to changes
done in the specification: ((figure 8.17 on page 15 of ptc/2007-06-08))         Figure 8.17, Figure 8.18
• P 45 Text:
“Since CORBA IDL does not support open arrays like "typedef short s
[];" because IDL does not support pointers, integer m,n and k must be
greater than 0.” has been added.
• P 45 Text:
“CORBA IDL array determines the number of elements of an array, but
IDL does not specify how elements of the multidimensional arrays are
to be ordered for data transfer between agents. Therefore, for common
and correct understanding of CORBA UML models the same
convention as GIOP (defined in CORBA/IIOP Specification, Chapter
15.3.2.4 “Array”) is used: the array members represented by the
“members” attribute are always in row major order. In row major
ordering the leftmost index (or index of the first dimension) varies most
slowly, and the rightmost index (or index of the last dimension) varies
most quickly.” has been added.


Issue 10836: Section: 8.1.2 p. 40 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Clarification
Severity: Minor
Summary:
Initiated by Tom Rutt (Fujitsu) "According to the metamodel for UML (uml super fig 7-12 and 7-13) the OwnedAttribute association end of class and data type is ordered, and includes both "attributes" and "association ends". So from UML point of view the Struct mapping is ok in the current spec. (However some tools have trouble ordering across attributes and association ends). The FTF may decide to not use the association version of containment for Struct members which are themselves complex types

Resolution:
Revised Text:
Actions taken:
March 21, 2007: received issue
November 7, 2007: closed issue

Discussion:
For better dealing with ordering of Struct members and for simplifying the
representation of Struct type in general the association representation for
members has been removed from the profile.
Changes:
P.40: Text: “or as an Association (for user-defined typed members)” has been
removed.
P.41. Figure 8.12 has been replaced in: (figure 8.12 on page 16 of ptc/2007-06-08)


Issue 10837: clarification about relationships of specifications needed (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Clarification
Severity: Minor
Summary:
Initiated by Frank Pilhofer (Mercury Computer Systems: At the moment there are two OMG specification documents: the UML Profile for CORBA (formal/02-04-01) and the UML Profile for CORBA Component Model (formal/05-07-06). More clarification is needed about relationships between mentioned above two specs and this current final adopted spec. What are the differences between all profiles and migration rules from one to another? 

Resolution: see above
Revised Text: Changes: New chapter 8.7 “Differences and migrations between CORBA based Profiles” with following text has been added: “The UML Profile for CORBA (formal/02-04-01) specification (CORBA Profile) provides a standard means for expressing the semantics of CORBA IDL using UML 1.3 notation and support for expressing these semantics with UML tools. The profile doesn’t provide any means for expressing semantics of the CCM like component or port. The profile doesn’t define any MOF-based CORBA IDL metamodel. The UML Profile for CORBA Component Model (CCM) specification (CCM Profile) (formal/05-07-06) provides a standard means for expressing both: pure CORBA and CCM-based applications using UML 1.5 notation. It is also designed to work with MOF repositories since the profile defines a MOF-based CORBA IDL and CCM metamodel. This profile is based on the the UML Profile for CORBA, extends it to the component-based semantics and defines how to represent these semantics using UML. There are no migration rules from the UML Profile for CORBA to the UML Profile for CCM: all representations for CORBA IDL (including all data types, CORBA module and interface) were adopted for this profile. The UML Profile for CORBA and CORBA Components (ptc/06-10-13) final adopted specification (CORBA&CCM Profile) provides a standard means for expressing both: pure CORBA and CCM-based applications using UML 2 notation. UML 2 facilitates and simplifies representation of many concepts needed to represent a pure CORBA or CORBA Components. The profile updates the MOF-based CCM metamodel and extends this metamodel to QoS and Deployment concepts. Due to various differences between UML 1.x and UML 2.x versions and new concepts in UML 2.x some migration rules were defined. These rules provide an ability to transform UML 1.x models based on the CORBA Profile to UML 2.x models based on the profile defined in this specification. This specification is intended to replace the existing UML Profile for CORBA (formal/02-04-01) and UML Profile for CCM (formal/05-07-06) specifications. The table below summarizes the main concepts of CORBA and CCM and gives an overview how mentioned above three specifications deals with these concepts. Additionally, the table shows all differences between profiles and identifies were some clarifications are needed for the successfully migration from the UML 1.x to UML2.x profile definition. Concepts CORBA Profile (UML 1.3) CCM Profile (UML 1.5) CORBA&CCM Profile (UML 2.1) Module Package Package Package Interface Class Class Interface Value Class Class Interface Constant Attribute Attribute Property (Attribute) Primitive Types DataType DataType DataType Union Class Class DataType Struct Class Class DataType Exception Exception Exception DataType Enum Class Class Enumeration Sequence Class Class DataType Array Class Class DataType AnonymousSequence Class Class DataType AnonymousArray Class Class DataType TypeDef Class or DataType Class or DataType DataType Component Class Class Facet (provided port) Association between a component and its provided interface Port Receptacles (used port) Association between a component and a used Port interface Event port (published, emitted or consumed ) Association between a component and its (published, emitted or consumed) event Port Event Class Interface Stream Interface Stream port (source or sink) Port Home Class Interface Component Executor Class Class Home Executor Class Class Composition Component Segment Class Part (Property) Requirement Class File (contained, dependent, IDL or component) Artifact Assembly package Package Component package Package Monolithic implementation Component Collocation (host or process) Collaboration Configuration Collaboration QoS Binding Comment From the table following mappings have been identified and described below: • Class2Interface • Class2DataType Class2Part(Property) • Class2Enumeration • Association2Port • Exception2DataType Class2Interface The UML1.3 metamodel element “Interface” was inappropriate for modeling an IDL interface, as it may not have Attributes or Associations that can be navigated from the Interface. Therefore, the metaclass Class was taken to represent CORBA interface. The UML 2 metamodel element “Interface” provides all features for the representation of CORBA Interface. Mapping between these two metaclasses is simply described below: Class2Interface (cl, itf) FORALL UML1Class cl WHERE c.stereotype = “CORBAInterface” CREATE UML2Interface itf SETTING itf.stereotype = cl.stereotype, itf.name = cl.name, itf.attribute = cl.attribute, itf.operation = cl.opertaion, itf.tag.isLocal = cl.tag.isLocal; Class2DataType The CORBA profile uses the metamodel element “DataType” only for the representation of CORBA Primitive types like short or string and TypeDefs, for user-defined Types like struct or sequence using of DataType was not possible, since DataTypes was not allowed to contain any Attributes, and Attributes are the best way to model struct/union members. The UML2 DataType may contain attributes to support the modeling of structured data types. Mapping between these two metaclasses is simply described below: Class2DataType (cl, dt) FORALL UML1Class cl WHERE cl.stereotype = (“CORBAStruct” || “CORBAUnion” || “CORBASequence” || “CORBAArray”) CREATE UML2DataType dt SETTING dt.stereotype = cl.stereotype, dt.name = cl.name, dt.attribute = cl.attribute; Class2Part CCM segment is a set of artifacts, where each artifact is a physical part of the component executor and provides at least one facet. Each segment encapsulates independent state and is capable of being independently activated. The CCM Profile uses the metamodel element Class to model a segmented implementation structure for a component implementation (executor). UML 2 provides a new concept Part (metamodel element Property from InternalStructures). A part declares that an instance of the classifier may contain a set of instances by composition. Class2Part (cl, part) FORALL UML1Assoc ass LINKING UML1Class cl, UML1Class seg WHERE cl.stereotype = “CORBAComponentImpl” AND seg.stereotype = “CORBASegment” CREATE UML2Class cl2 SETTING cl2. stereotype = “CORBAComponentExecutor”, cl2.name = cl.name CREATE UML2Property part IN cl2 SETTING part.stereotype =seg.stereotype, part.name = seg.name, part.isSerialized= seg. isSerialized; Class2Enumeration The CORBA Profile uses the UML Class to represent a CORBA IDL enum type. Each element of the enum type is represented as an UML Attribute of the UML Class, with the same name as the enum element. UML 2 metamodel provides a metamodel element Enumeration for modelling such data types like IDL enum, whose instances may be any of a number of user-defined enumeration literals. Class2Enumeration (cl, en) FORALL UML1Class cl WHERE cl.stereotype = “CORBAEnum” CREATE UML2Enumeration en SETTING en.stereotype = cl.stereotype, en.name = cl.name, en.attribute = cl.attribute; Association2Port The metaclass Port is a new metamodel element, which has been added to UML 2. A port is a property of an UML classifier that specifies a distinct interaction point between that classifier and its environment or between the (behavior of the) classifier and its internal parts. A Port may specify the services a classifier provides (offers) to its environment as well as the services that a classifier expects (requires) of its environment. Due to missing port concept in the UML 1.x metamodel CCM Profile uses metaclass Association for representing component ports in CCM. This has been changed in the current specification and the UML 2 port definition used for modelling of CCM component ports. Association2Port(ass, port) FORALL UML1Assoc ass LINKING UML1Class cl1, UML1Class cl2 WHERE cl1.stereotype = “CORBAComponent” AND cl2.stereotype = (“CORBAInterface” || “CORBAEvent”) CREATE UML2Port pt SETTING pt. stereotype =ass.stereotype, pt.name = ass.name; Exception2DataType In CORBA Profile an IDL exception is represented by UML Exceptions (from CommonBehavior). In the UML 1.x metamodel, metaclass Exception is derived from metaclass Signal. UML 2 metamodel doesn’t contain a metaclass Exception, exceptions that may be raised during an invocation of an operation are representing by an abstract metamodel element Type, which serves as a constraint on the range of values represented by a typed element. CORBA&CCM Profile represents an IDL exception by UML DataType element. Exception2DataType(ex, dt) FORALL UML1Exception ex WHERE ex.stereotype = “CORBAException” CREATE UML2DataType dt SETTING dt. stereotype =ex.stereotype, dt.name = ex.name, dt.attribute=ex.attribute;”
Actions taken:
March 21, 2007: received issue
November 7, 2007: closed issue

Discussion:
Resolution:
New chapter 8.7 “Differences and migrations between CORBA based Profiles”
has been added


Issue 10838: More clarification text about order of CORBAStruct members is needed (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Clarification
Severity: Minor
Summary:
More clarification text about order of CORBAStruct members is needed

Resolution: see resolution to issue 10836
Revised Text:
Actions taken:
March 21, 2007: received issue
November 7, 2007: closed issue

Issue 10981: Section: 3 Normative References (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings(at)mail.ois.com)
Nature: Enhancement
Severity: Significant
Summary:
The list of Normative References contains the CORBA Component Model Specification, Version 4.0 twice, but does not have a normative reference to the CORBA specification

Resolution: see above
Revised Text: Page 1: The first bullet has been replaced in “CORBA/IIOP Specification, Version 3.0.3”
Actions taken:
May 7, 2007: received issue
November 7, 2007: closed issue

Discussion:
Resolution: Delete the second reference and add the CORBA/IIOP reference.


Issue 10982: Section: 7.2.10 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings(at)mail.ois.com)
Nature: Revision
Severity: Significant
Summary:
The following constraints in 7.2.10 are incorrect: [1] A ConstantDef must be defined in a Container [2] A TypedefDef must be defined in a Container [6] An ExceptionDef must be defined in a Container [8] An InterfaceDef must be defined within a ModuleDef [9] A ValueDef must be defined within a ModuleDef Each of these can be defined as "global scope" (as is acknowledged in 7.2.3: "Modules can contain any definition that can appear at global scope (type, constant, exception, and interface definitions)" 

Resolution: see above
Revised Text:
Actions taken:
May 7, 2007: reeived issue
November 7, 2007: closed issue

Discussion:
Resolution/Clarification:
According to the Chapter 10, Figure 10-2 of the CORBA/IIOP:
Repository or ComponentIR::Repository
ConstantDef
TypedefDef
ExceptionDef
[Ext]InterfaceDef
[Ext]ValueDef
ValueBoxDef
ModuleDef
…                                                                                                                                                                    Repository is an interface that provides global access to the Interface Repository,
it can contain constants, typedefs, exceptions, interfaces, value types, value
boxes, native types, and modules. Repository derives from Container (Chapter
10.5.6 of the CORBA/IIOP), therefore everything in the Repository is defined in a
Container. The constraints 1,2,6 are tautologies and needless. According to the
description of the Repository below the constraints 7, 8 and 9 are not correct:
InterfaceDef and ValueDef can be also defined as “global” and contained
immediately in the Repository object.
Changes: Chapter 7.2.10, page 10: Constraints 1, 2, 6, 7, 8 and 9 have been
deleted from the specification.


Issue 10983: Section: 7.3.3 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings(at)mail.ois.com)
Nature: Clarification
Severity: Minor
Summary:
The last sentence of the bullet defining the Basic Stream type: "The data is consumed and produced by component implementation logic as octet sequences, unless the basic stream type". The last clause seems misplaced, and should probably be dropped

Resolution: Resolution: Delete the last clause
Revised Text: Page 13, first bullet defining Basic Stream type, last clause of the last sentence has been deleted
Actions taken:
May 7, 2007: received issue
November 7, 2007: closed issue

Discussion:


Issue 11009: Section: 8.1.2 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Clarification
Severity: Significant
Summary:
The replacement text, first bullet: "Array ... multidimensional array dimension (e.g.: “index”=n, m)." is unclear why there are two ways to represent array index. Do all arrays representations have a Tag for index, even if the attribute multiplicity is used in the case of one dimensional array. It should state that the multiplicity for a multi dimension array is the product of all the dimension values (e.g, integer [2][3] has multiplicity 6. Also, it needs to be clarified whether the member attribute is in row major or collumn major order

Resolution: see resolution to issue 10835
Revised Text:
Actions taken:
May 16, 2007: received issue
November 7, 2007: closed issue

Issue 11010: Section: 8.1.2, Figure 8.12 (uml-corba-ccm-ftf)

Click
here for this issue's archive.
Source: Fraunhofer FOKUS (Ms. Julia Reznik, nobody)
Nature: Clarification
Severity: Significant
Summary:
Figure 8.12: A first attribute should have type A::B rather than B with clarification

Resolution: For more clarification the Figure 8.12 should be updated
Revised Text: P.41. Figure 8.12 has been replaced in: (last page of ptc/2007-06-08)
Actions taken:
May 16, 2007: received issue
November 7, 2007: closed issue