Issue 10837: clarification about relationships of specifications needed (uml-corba-ccm-ftf) Source: Fraunhofer FOKUS (Ms. Julia Reznik, julia.reznik@fokus.fraunhofer.de) 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 End of Annotations:===== m: webmaster@omg.org Date: 21 Mar 2007 05:20:12 -0500 To: Subject: Issue/Bug Report -------------------------------------------------------------------------------- Name: Julia Reznik Company: Fraunhofer FOKUS mailFrom: reznik@fokus.fraunhofer.de Notification: No Specification: UML Profile for CORBA and CORBA Components Final Adopted Specification Section: new FormalNumber: ptc/2007-03-11 Version: 1 RevisionDate: 03.21.07 Page: new Nature: Clarification Severity: Minor HTTP User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.10) Gecko/20070216 Firefox/1.5.0.10 Description 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?