Unified Component Model for Distributed, Real-Time and Embedded Systems Avatar
  1. OMG Specification

Unified Component Model for Distributed, Real-Time and Embedded Systems — Closed Issues

  • Acronym: UCM
  • Issues Count: 69
  • Description: Issues resolved by a task force and approved by Board
Open Closed All
Issues resolved by a task force and approved by Board

Issues Summary

Key Issue Reported Fixed Disposition Status
UCM13-16 Introduce structured configuration parameters UCM 1.2 UCM 1.3 Resolved closed
UCM13-17 Unexpected mention of “monolithic” component implementation UCM 1.2 UCM 1.3 Resolved closed
UCM13-5 problems in the XML schema and the DTD UCM 1.2b1 UCM 1.3 Resolved closed
UCM13-23 List XML tags names and clarify the rules for name references UCM 1.2 UCM 1.3 Resolved closed
UCM13-13 broken link in the document UCM 1.2 UCM 1.3 Resolved closed
UCM13-21 Rephrase some explanations UCM 1.2 UCM 1.3 Resolved closed
UCM13-11 define port types for “pull-pull” interactions UCM 1.2 UCM 1.3 Resolved closed
UCM13-4 Add a method in the comp_trace policy to log messages with a default severity UCM 1.2 UCM 1.3 Closed; No Change closed
UCM13-3 Allow specific configuration for the ports and policies managed by a given technical policy UCM 1.2 UCM 1.3 Resolved closed
UCM13-2 Attribute values of parts cannot be set in composite component implementation, while configuration parameter values of connections can UCM 1.2 UCM 1.3 Resolved closed
UCM13-1 Named entities have no ID in the meta-model UCM 1.2 UCM 1.3 Resolved closed
UCM13-8 Inconsistency in number of bindings for technical policies UCM 1.2 UCM 1.3 Resolved closed
UCM13-10 rename “executor” into “context” in the container model UCM 1.2 UCM 1.3 Resolved closed
UCM12-13 fix problems in the XMI file of the UCM metamodel UCM 1.1 UCM 1.2 Resolved closed
UCM12-6 change the character base of the string type in the standard annotations UCM 1.1 UCM 1.2 Resolved closed
UCM12-5 enable the use of message send port type in the shared data connector UCM 1.1 UCM 1.2 Resolved closed
UCM12-4 clarify the UCM programming model and C++ mapping w.r.t. port element connection UCM 1.1 UCM 1.2 Resolved closed
UCM12-11 typos UCM 1.1 UCM 1.2 Resolved closed
UCM12-3 wrong constraint in technical aspect comp_exec_asp UCM 1.1 UCM 1.2 Resolved closed
UCM12-1 Introduce name spaces to split declarations across several files UCM 1.1 UCM 1.2 Resolved closed
UCM11-19 value ranges are wrong for 8-bit integers UCM 1.0 UCM 1.1 Resolved closed
UCM11-18 there should be no returned error code for data consumers in the standard library UCM 1.0 UCM 1.1 Resolved closed
UCM11-17 names of standard library files should be consistent with module names UCM 1.0 UCM 1.1 Resolved closed
UCM11-1 remove class ProgrammingLanguages from the meta-model, as it is useless UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-15 improve the specification of task periods UCM 1.0 UCM 1.1 Resolved closed
UCM11-14 remove parameter "methods_to_trace" from port_trace technical policy UCM 1.0 UCM 1.1 Resolved closed
UCM11-7 allow extension relationship between Annotation Definitions UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-16 Connectable interfaces does not support more that one portelement per port-type UCM 1.0 UCM 1.1 Resolved closed
UCM11-3 Bring more flexibility in composite component extensions UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-2 Add support for 8-bit integers UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-6 Create a DTD for the XML syntax UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-5 Improve component port declaration UCM 1.0b2 UCM 1.1 Resolved closed
UCM11-4 Add cardinalities (i.e. min and max) for configuration parameters UCM 1.0b2 UCM 1.1 Resolved closed
UCM-14 The annotation system is too flexible UCM 1.0b1 UCM 1.0 Closed; No Change closed
UCM-16 Interfaces should be able to have annotation UCM 1.0b1 UCM 1.0 Closed; No Change closed
UCM-71 use the RFC 2119 vocabulary UCM 1.0b1 UCM 1.0 Resolved closed
UCM-69 update the IDL and C++ sections to match the new metamodel, programming model and xml names UCM 1.0b1 UCM 1.0 Resolved closed
UCM-67 improve the class diagram of reziable data type UCM 1.0b1 UCM 1.0 Resolved closed
UCM-65 Rewrite the references section UCM 1.0b1 UCM 1.0 Resolved closed
UCM-61 Harmonization with IDL4.1 and XTYPES1.2 UCM 1.0b1 UCM 1.0 Resolved closed
UCM-56 Create a section for the IDL equivalent syntax UCM 1.0b1 UCM 1.0 Resolved closed
UCM-48 Improve technical policies for ports UCM 1.0b1 UCM 1.0 Resolved closed
UCM-51 the UCM standard platform should reorganized UCM 1.0b1 UCM 1.0 Resolved closed
UCM-18 wrong definition in section "symbols" UCM 1.0b1 UCM 1.0 Resolved closed
UCM-29 class IPrimitiveDataType is missing UCM 1.0b1 UCM 1.0 Resolved closed
UCM-17 AssemblyParts should inherit from IAnnotable UCM 1.0b1 UCM 1.0 Resolved closed
UCM-15 class IinterfaceBase is now named IInterface UCM 1.0b1 UCM 1.0 Resolved closed
UCM-47 Align UCM primitive types with IDL UCM 1.0b1 UCM 1.0 Resolved closed
UCM-50 The connection registration API may lead to portability issues UCM 1.0b1 UCM 1.0 Resolved closed
UCM-46 enable multiple refinement for component types and composite component implementations UCM 1.0b1 UCM 1.0 Resolved closed
UCM-45 update the xml syntax and diagrams and put shorter names UCM 1.0b1 UCM 1.0 Resolved closed
UCM-44 Create a section for the graphical guidelines UCM 1.0b1 UCM 1.0 Resolved closed
UCM-43 Create a section for the XML syntax of UCM UCM 1.0b1 UCM 1.0 Resolved closed
UCM-37 remove sections that explain the graphical representation from section 9 UCM 1.0b1 UCM 1.0 Resolved closed
UCM-34 IAssembly may have no part UCM 1.0b1 UCM 1.0 Resolved closed
UCM-1 add attribute delegations in composite component implementations UCM 1.0b1 UCM 1.0 Resolved closed
UCM-4 wrong inheritance for sequences and text not assertive enough UCM 1.0b1 UCM 1.0 Resolved closed
UCM-3 missing inheritance for port delegation UCM 1.0b1 UCM 1.0 Resolved closed
UCM-2 change field identifier of class INamed UCM 1.0b1 UCM 1.0 Resolved closed
UCM-10 use UML for class diagrams UCM 1.0b1 UCM 1.0 Resolved closed
UCM-12 remove sections that explain the xml representation from section 9 UCM 1.0b1 UCM 1.0 Resolved closed
UCM-11 remove the examples from section 9 UCM 1.0b1 UCM 1.0 Resolved closed
UCM-6 section for ConnectorPortConfiguration is missing UCM 1.0b1 UCM 1.0 Resolved closed
UCM-5 wrong field type in AbstractTypeBinding UCM 1.0b1 UCM 1.0 Resolved closed
UCM-13 remove sections that explain the IDL representation from section 9 UCM 1.0b1 UCM 1.0 Resolved closed
UCM-28 there is no distinction between compositions and aggregations in the descriptions of classes UCM 1.0b1 UCM 1.0 Resolved closed
UCM-9 create an abstract class IItemBinding UCM 1.0b1 UCM 1.0 Resolved closed
UCM-8 enable extension for composite component implementation UCM 1.0b1 UCM 1.0 Resolved closed
UCM-7 make classes Connection and ConnectionEnd inherit from IConfigured UCM 1.0b1 UCM 1.0 Resolved closed

Issues Descriptions

Introduce structured configuration parameters

  • Key: UCM13-16
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    It is currently not possible to gather several configuration parameters together.

    For example, let us suppose we want to design a message connector that handles channels with different FIFO priorities.
    Such a connector would allow the specification of a channel number for each emission port.
    It would also allow the specification of a FIFO priority for each channel number in each reception port.

    See the following example of what would be needed:

    <interactionModule name="enhanced_fifo_connector">
      <contractModule name="data_types">
        <integer kind="int32" name="channel_id_t"/>
        <integer kind="uint8" name="fifo_priority_t"/>
      </contractModule>
      <connectorDef name="enh_fifo_msg_cnt" pattern="::ucm_core::messages::msg_intr_pat">
        <extends ref="::ucm_core::messages::simple_msg_cnt"/>
        <portConf port="emitter">
          <configParam max="1" min="1" name="channel_id" type="data_types::channel_id_t"/>
        </portConf>
        <portConf port="receiver">
          <structParam max="-1" min="0" name="fifo_priorities">
            <comment>the default fifo priority is 0</comment>
            <configParam max="-1" min="1" name="emitter_channel_id" type="data_types::channel_id_t"/>
            <configParam max="1" min="1" name="fifo_priority" type="data_types::fifo_priority_t"/>
          </structParam>
        </portConf>
      </connectorDef>
    </interactionModule>
    

    Sets made of several channels and one priority can be specified for each port “receiver”.

    Such a connector could be used as follows:

    <componentModule name="components">
      <contractModule name="contracts">
        <integer kind="int16" name="payload_t"/>
      </contractModule>
      
      <bindingSet name="payload_binding">
        <binding abstract="::ucm_core::messages::api::transm_data_t" actual="contracts::payload_t"/>
      </bindingSet>
      
      <compType name="C_sender">
        <port bindings="payload_binding" name="snd" type="::ucm_core::messages::msg_emtr_pt"/>
      </compType>
      
      <compType name="C_receiver">
        <port bindings="payload_binding" name="rcv" type="::ucm_core::messages::msg_rcvr_pt"/>
      </compType>
      
      <compType name="C_appli">
      </compType>
      
      <atomic lang="::ucm_lang::cpp::CPP11_typed" name="CI_sender" type="C_sender"/>
      <atomic lang="::ucm_lang::cpp::CPP11_typed" name="CI_receiver" type="C_receiver"/>
      
      <composite name="appli" type="C_appli">
        <part name="c1" ref="CI_sender"/>
        <part name="c2" ref="CI_sender"/>
        <part name="c3" ref="CI_sender"/>
        <part name="c4" ref="CI_receiver"/>
        <part name="c5" ref="CI_receiver"/>
        <connection name="cnx1" ref="::enhanced_fifo_connector::enh_fifo_msg_cnt">
          <end name="c1_snd" part="c1" port="snd">
            <config def="channel_id" value="1"/>
          </end>
          <end name="c2_snd" part="c2" port="snd">
            <config def="channel_id" value="2"/>
          </end>
          <end name="c3_snd" part="c3" port="snd">
            <config def="channel_id" value="3"/>
          </end>
          <end name="c4_rcv" part="c4" port="rcv">
            <structConfig def="fifo_priorities">
              <config def="emitter_channel_id" value="1"/>
              <config def="fifo_priority" value="2"/>
            </structConfig>
            <structConfig def="fifo_priorities">
              <config def="emitter_channel_id" value="2"/>
              <config def="emitter_channel_id" value="3"/>
              <config def="fifo_priority" value="9"/>
            </structConfig>
          </end>
          <end name="c5_rcv" part="c5" port="rcv">
            <structConfig def="fifo_priorities">
              <config def="emitter_channel_id" value="1"/>
              <config def="fifo_priority" value="5"/>
            </structConfig>
            <structConfig def="fifo_priorities">
              <config def="emitter_channel_id" value="2"/>
              <config def="fifo_priority" value="2"/>
            </structConfig>
            <structConfig def="fifo_priorities">
              <config def="emitter_channel_id" value="3"/>
              <config def="fifo_priority" value="1"/>
            </structConfig>
          </end>
        </connection>
      </appAssembly>
    </componentModule>
    

    Composite component 'C_appli' contains 5 subcomponents: c1, c2 and c3 send messages to c4 and c5.
    Subcomponent c1 sends on channel 1, c2 sends on channel 2, c3 sends on channel 3.

    Subcomponents c4 and c5 receive all messages, with different priorities.
    Thus, c4 receives data from c1 (channel 1) with priority 2, data from c2 and c3 (channels 2 and 3) with priority 9.
    And c5 receives data from c1 (channel 1) with priority 5, data from c2 (channel 2) with priority 2, data from c3 (channels 3) with priority 1.

  • Reported: UCM 1.2 — Thu, 15 Oct 2020 13:16 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    create structured configuration parameters

    Add two new concepts in the meta-model: StructuredConfigurationParameter and StructuredConfigurationParameterValue.
    Update the XML schema and DTD accordingly.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

Unexpected mention of “monolithic” component implementation

  • Key: UCM13-17
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In section 14.1.2.2 (From technical policies to fragments), diagram 35 shows a “monolithic” component implementation. Monolithic component implementations are mentionned nowhere else in the document; this “monolithic” component is should be renamed “atomic” instead.

  • Reported: UCM 1.2 — Thu, 15 Oct 2020 13:39 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    rename “monolithic” into “atomic”

    In the early stages of the UCM standard, atomic component implementation were called monolithic. Update diagram 35 to use word “atomic”.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

problems in the XML schema and the DTD

  • Key: UCM13-5
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In the DTD, tag "comment" is missing in the declaration of element componentModule, line 283.

    In the XML schema, elements "componentModule" and "contractModule" are inverted with respect to the DTD, lines 672 and 673.

  • Reported: UCM 1.2b1 — Tue, 3 Mar 2020 13:49 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    Fix the problems in the DTD and the XML schema

    Fix the problems

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

List XML tags names and clarify the rules for name references

  • Key: UCM13-23
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Although the XML syntax of UCM is specified by a DTD and an XML schema, it would be nice to have at least a list of the XML tags in the main document, to help read the DTD and the schema.
    Also, the way of referencing entities is not completely clear for relative names.

  • Reported: UCM 1.2 — Tue, 2 Mar 2021 17:31 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    List XML tags names and clarify the rules for name references

    List the main tag names of the XML syntax. Clarify relative name references.

  • Updated: Mon, 4 Oct 2021 17:10 GMT

broken link in the document

  • Key: UCM13-13
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The content of section 17.4 “Components” is “The examples of this section correspond to the example illustrated in sectionError: Reference source not found”.
    This is obviously a broken link.

    The link should be updated to point to section 11.3 “Example”.

  • Reported: UCM 1.2 — Tue, 29 Sep 2020 11:57 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    fix the broken link

    Update the link to section 11.3 (Example)

  • Updated: Mon, 4 Oct 2021 17:10 GMT

Rephrase some explanations

  • Key: UCM13-21
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    There are some inconsistencies in the first sections of the document.
    For example, section 1.4 is entitled “Programming model” while section 14 is entitled “UCM container model”.
    Also, section 9.1.2 mentions “properties”, which do not seem to be defined in the rest of the document.

  • Reported: UCM 1.2 — Tue, 9 Feb 2021 17:54 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    Rephrase some explanations

    Some terms (e.g. “properties” or “programming model”) had been used in the early stages of the standard, but are have not been used in the final version of the document. Replace these obsolete terms with the correct ones.

  • Updated: Mon, 4 Oct 2021 17:10 GMT

define port types for “pull-pull” interactions

  • Key: UCM13-11
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM core library defines the message connector in which the data producer pushes data to the connector, and the connector pushes data to the consumer. This more or less corresponds to the event interactions of CCM.

    Yet, in some situations, pulling data from the producer is a good architectural choice. For example, if we want to ensure a piece of data is sent periodically, it is best to let the connector manage this, instead of the component: even if there are bugs in the component business code, that connector shall periodically fetch the data.

    It might be difficult to standardize a “pull-pull” connector because there could be many different situations: periodic fetching, fetching upon request from the consumer, etc. The UCM standard should simply define port types in order to have standard APIs.

  • Reported: UCM 1.2 — Wed, 23 Sep 2020 16:54 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    define a data pull connector

    Define a data pull connector in the extended interactions. This connector involves one supplier and one or more consumers. Whenever a consumer pulls a piece of data, the piece of data is fetched from the supplier.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

Add a method in the comp_trace policy to log messages with a default severity

  • Key: UCM13-4
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The invocation of the standard technical policy for traces consists of a method
    log that takes two parameters:

    • the severity (trace, debug, warning, etc.)
    • the log message (a wide character string)

    It can be tedious to always have to specify the severity. There should be an
    additional log method with a default severity.

  • Reported: UCM 1.2 — Tue, 7 Jan 2020 17:13 GMT
  • Disposition: Closed; No Change — UCM 1.3
  • Disposition Summary:

    Do not change the comp_trace policy

    No commonly used logging API (e.g. log4cpp) supports a default severity level. Therefore, such a mechanism does not correspond to current pratice, and may be difficult to understand.

    Platform providers that really want to deal with a default severity loggin level can define their own, non standard, technical policy.

  • Updated: Mon, 4 Oct 2021 17:10 GMT

Allow specific configuration for the ports and policies managed by a given technical policy

  • Key: UCM13-3
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Technical policies can have configuration parameters, and can manage component
    features (i.e. they can intercept them). However, it is not possible to
    associate a specific configuration with a given component feature.

    Current state

    Technical policy definitions can specify configuration parameters. In the
    following example, technical policy definition watchdog specifies a
    configuration parameter for the timeout. It also declares an interface named
    watchdog_intf that must be provided by components. The policy calls method
    timeout if no activity has been detected on the intercepted component
    features for some time.

    <policyModule name="example">
     <contractModule name="api">
       <interface name="watchdog_intf">
        <method name="timeout"/>
       </interface>
     </contractModule>
    
     <technicalAspect constraint="any_number" name="asp"/>
    
     <policyDef applicability="on_some_ports" aspect="asp" name="watchdog">
      <comment>This policy intercepts some component ports and policies. It invokes method timeout if no activity is detected on one of these ports and policies after max_delay.  </comment>
      <portElement interface="api::watchdog_intf" kind="provided" name="wdg"/>
      <configParam name="max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     </policyDef>
    </policyModule>
    

    One can set the value max_delay when declaring such a policy. In the
    following, we declare an atomic component named calculation_impl that has
    two input ports input1 and input2. It is associated with technical
    policy watcher that monitors both ports. Policy watcher triggers an
    alert after 2 seconds of inactivity on both ports.

    <componentModule name="comp">
     <contractModule name="data_types">
      <integer name="int32_t" kind="int32"/> 
     </contractModule>
    
     <bindingSet name="bindings">
      <binding abstract="::ucm_core::messages::api::transm_data_t" actual="data_types::int32_t"/>
     </bindingSet>
    
     <compType name="calculation">
      <port name="input1" type="::ucm_core::message::msg_recv_pt" bindings="bindings"/>
      <port name="input2" type="::ucm_core::message::msg_recv_pt" bindings="bindings"/>
     </compType>
    
     <policy name="watcher" def="::example::watchdog">
      <componentRef ref="calculation_impl"/>
      <managedPort ref="input1"/>
      <managedPort ref="input2"/>
      <configValue name="max_delay" value="{2, s}"/>
     </policy>
    
     <atomic name="calculation_impl" lang="::ucm_lang::cpp::cpp11_typed">
      <policyRef ref="watcher"/>
     </atomic>
    </componentModule>
    

    Limitation

    The problem is, it is impossible to set a specific timeout value for each
    intercepted port. Thus, one cannot specify that policy watcher shall
    trigger an alert after 2 seconds of inactivity on port input1, or 3 seconds
    of inactivity on port input2.

    Having two separate policies (one for each intercepted port) is not convenient
    because the component business code would then have to implement two different
    methods timeout (one for each policy).

    What should be added

    Technical policy definition should be extended to declare configuration
    parameters that apply to particular managed component features. Thus, the
    declaration of watchdog may be something like this:

    <policyDef applicability="on_some_ports" aspect="asp" name="watchdog">
     <comment>This policy intercepts some component ports and policies. It invokes method timeout if no activity is detected on one of these ports and policies after max_delay.  </comment>
     <portElement interface="api::watchdog_intf" kind="provided" name="wdg"/>
     <configParam name="default_max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     <specificConf name="specific_delays">
      <configParam name="max_delay" type="::ucm_ext_exec::contracts::ucm_duration_t"/>
     </specificConf>
    </policyDef>
    

    An additional section named featureConf allows the declaration of per-feature configuration parameters.

    Technical policy watcher may then be declared as follows:

    <policy name="watcher" def="::example::watchdog">
     <componentRef ref="calculation_impl"/>
     <managedPort ref="input1"/>
     <managedPort ref="input2"/>
     <configValue name="default_max_delay" value="{2, s}"/>
     <featureConf name="input2_config">
      <managedPort ref="input2"/>
      <configValue name="max_delay" value="{3, s}"/>
     </featureConf>
    </policy>
    

    Here, the policy triggers an alert after 2 seconds of inactivity on input1
    (default policy configuration) or after 3 seconds of inactivity on input2
    (specific configuration).

  • Reported: UCM 1.2 — Tue, 7 Jan 2020 15:17 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    Allow the specification of configuration parameters that are associated to particular ports or policies

    Create two new meta-classes:

    • SpecificPolicyParameter enables the declaration of configuration parameters that may be associated to some managed ports or policies
    • SpecificPolicyConfigurationValue actually associates configuration parameter values to managed ports or policies

    Provide an example for a better understanding.

    Update the XML schema and DTD with the new syntactic elements.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

Attribute values of parts cannot be set in composite component implementation, while configuration parameter values of connections can

  • Key: UCM13-2
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In CompositeComponentImplementation, the ucm_base meta-model allows the specification of configuration parameter values in Connection and ConnectionEnd, but it does not allow the specification of attribute values in AssemblyPart. The meta-model would be more consistent if it supported the specification of attribute values in AssemblyPart.
    For example, if we have the following component declaration:

    <componentModule name="comp">
      <compType name="C1">
        <attribute mode="read" name="attr1" type="::dataTypes::Int32_t"/>
      </compType>
    
      <atomic name="C1_i1" lang="::ucm_lang::cpp::CPP11_typed" type="C1"/>
    </componentModule>
    

    We should be able to write something like this:

    <componentModule name="comp2">
      <compType name="C2"/>
    
      <composite name="C2_i1" type="C2">
        <part name="c1a" ref="::comp::C1_i1">
          <attrVal ref="attr1" value="23"/>
        </part>
        <part name="c1b" ref="::comp::C1_i1">
          <attrVal ref="attr1" value="12"/>
        </part>
      </composite>
    </componentModule>
    

    Attribute attr1 shall be initialized to 23 for part c1a and to 12 for c1b.

  • Reported: UCM 1.2 — Thu, 5 Dec 2019 12:26 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    Set attribute values in assembly parts

    Add a new metaclass AttributeValue that allows the specification of a value for an attribute. This metaclass is referenced by metaclass AssemblyPart.

    Also update the DTD and XML schema.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

Named entities have no ID in the meta-model

  • Key: UCM13-1
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM DTD and XML schema specify an ID field for each named entity. Yet, such ID do not exist in the INamed metaclass of the ucm_base metamodel. Adding IDs in INamed entities would ease the importation of XML files into existing UCM models by enabling model mergers.

  • Reported: UCM 1.2 — Thu, 5 Dec 2019 10:37 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    Add an ID field in class INamed

    add a field “id” to class INamed

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

Inconsistency in number of bindings for technical policies

  • Key: UCM13-8
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Field “bindings” of technical policies is specified with cardinality [0…*] in the text, while it is displayed with cardinality [0…1] in diagram 31.

  • Reported: UCM 1.2 — Mon, 7 Sep 2020 10:08 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    change cardinality of field “bindings” of class TechnicalPolicy

    The correct cardinality is [0…1]. Change the text accordingly.

  • Updated: Mon, 4 Oct 2021 17:10 GMT

rename “executor” into “context” in the container model

  • Key: UCM13-10
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM container model specifies that a PortElementObject uses the name “executor” to refer to the ComponentObject it belongs to. The name “context” may be a better choice for this.
    Indeed, the methods of a PortElementObject use the ComponentObject to retrieve the references to the other PortElementObjects of the component. So, the ComponentObject can be seen as a context for the execution of PortElementObject methods.
    Using “context” would make UCM more consistent with CCM.

  • Reported: UCM 1.2 — Wed, 23 Sep 2020 16:34 GMT
  • Disposition: Resolved — UCM 1.3
  • Disposition Summary:

    replace “executor” by “context”

    In section 13, replace “executor” by “body” (1 replacement).
    In the rest of the document, replace all occurrences of “executor” by “context” (4 replacements).
    Update two diagrams that describe the UCM container model.

  • Updated: Mon, 4 Oct 2021 17:10 GMT
  • Attachments:

fix problems in the XMI file of the UCM metamodel

  • Key: UCM12-13
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    This issue corresponds to remarks from Pete Rivett regarding the XMI file of the UML metamodel.

    The namespace for UML is wrong xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"

    Remove xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
    And all eAnnotations (8)

    The package URI should conform to OMG’s standard URI="http://org.omg.ucm/1.0/metamodels/base/commons".
    It should be https://www.omg.org/spec/UCM/20190501/ucm_base.uml

    Since it’s a metamodel the topmost element should be the Package not the uml:Model

    The primitive types do not reference the standard ones:
    For example
    <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

    The URI should be
    https://www.omg.org/spec/UCM/20190501/ucm_base.uml

    There should be no xmi:type or reference elements such as the above.
    There should be no xmi:version.

  • Reported: UCM 1.1 — Mon, 24 Jun 2019 14:30 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    fix conformity issues in the XMI metamodel file

    Fixed the problems the issue points out.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

change the character base of the string type in the standard annotations

  • Key: UCM12-6
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The standard annotations (module ucm_std_ann) defines a set of properties, the type of which is a string (prop_str_t). The base character of this string is “char8”. As these properties are likely to contain text in natural language, it would be better to use wide characters (wchar) instead.

  • Reported: UCM 1.1 — Tue, 26 Feb 2019 13:11 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    set the character base to wchar in the standard annotations

    Issue UCM12-6 is addressed by changing the base character type of string prop_str_t from “char8” to “wchar”.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

enable the use of message send port type in the shared data connector

  • Key: UCM12-5
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The shared data connector defined in the standard UCM library involves two port types: sd_writer_pt and sd_reader_pt. In particular, sd_writer_pt is based on an interface that defines three methods: “write_data”, “publish_data” and “cancel_data”. The standard message connector (section 13.1.7) involves a simpler port type msg_emtr_pt, with a single method “push”.
    The shared data connector should support port type msg_emtr_pt, as its API (a single method “push”) is simpler. The shared data connector would then offer to alternative port types to publish data: sd_writer_pt and msg_emtr_pt.

  • Reported: UCM 1.1 — Tue, 26 Feb 2019 11:43 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    enable the use of message send port type in the shared data connector

    Add a new connector port sd_simple_writer with port type msg_emtr_pt in the declaration of the shared data connector. Change the XML and IDL declarations accordingly.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

clarify the UCM programming model and C++ mapping w.r.t. port element connection

  • Key: UCM12-4
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The programming model described in section 14.2 shows a set of methods to be implemented by programming language mappings. In particular, the signatures of connection methods are explicitly described (see figure 14.5 on page 77 for on_disconnect and on_connect). These methods are restrictive, as they force some "dynamic" programming: port elements are accessed from their names.
    Section 16.7 indicates the corresponding mapping to C++11, with the same method signatures.
    However, section 16.9 indicates there could actually be two approaches for a C++ mapping: one based on strongly typed methods, and the other based on generic methods. Section 16.7 describes the later one.

    Section 16.9 is so small it might be completely overlooked, while it states a very important point: both generic and strongly typed mappings are necessary. Generic API is nice as it provides flexibility when creating applications, but it prevents addressing real-time critical systems, as it manipulates strings (which cannot guarantee execution time). On the opposite, a strongly typed API completely suits cricital systems as it enables far more predictable execution time, but it also prevent flexibility in the implementation, and is almost always coupled with code generation.

    Section 16.9 shows that the UCM standard identified the two mapping approaches, and decided to allow both. But it is not explicit enough. The definition of the programming model in section 14.2 should explicitly address the two possibilities (generic and strongly typed). Section 16 should explicitly explain that UCM actually defines TWO standard mappings for C++11: one with generic API and the other with a strongly typed API.

  • Reported: UCM 1.1 — Mon, 25 Feb 2019 17:36 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    clarify the UCM programming model and C++ mapping w.r.t. port element connection

    Rename the “programming model” into “container model”, as the name was not approriate. Rewrite the container model section to focus on its structure and explain that most parts of the API depend on the programming language mappings.
    Be more explicit about the two C++ mapping strategies: generic and strongly typed.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

typos

  • Key: UCM12-11
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The document contains some typos.

    In section 9.2.8 (Abstract type declarations), the end of the first paragraph contains an error: “(§ Error: Reference source not found)”.

    In section 10 (XML syntax for UCM declarations), in the sentence that starts with “Basically, every UCM concept described in the meta-model (see section [9]) corresponds…”, the section number (9) is plain text while it should be a link to section 9.

    In section 13 (Specification of UCM platform capabilities), a reference to a document is missing in the second paragraph.

    In section 13.1.2.1 (From connectors to fragments), there are several typos.

    • in the first paragraph, “As states by the UCM metamodel"
    • in the second paragraph, “Ex: the fragments of DDS based connector implementation…”

    In section 14.1.2.2 (From technical policies to fragments), “As for the connector PortElements…” should be replaced by “Like for the connector PortElements…”.

    In section 14.2.1.4 (Connectable), in the first line of the first paragraph, “shallt” should be “shall”.

    In section 15.7 (UCM module mapping), the IDL code block is colored, while all code blocks in the document are written in black. Same thing in sections 15.8.2 (Atomic Component Implementation mapping), 15.8.4 (Port mapping), 15.8.5 (Technical Policy Mapping).

    In section 15.11 (Component Programming Model), in the second paragraph, “programing” should be spelled “programming”.

    In section 16.10.2 (Enumeration mapping), the C++ code block is colored while all code blocks in the document are written in black.

  • Reported: UCM 1.1 — Mon, 29 Apr 2019 10:11 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    fix the typos found in the document

    Fix the typos.

  • Updated: Tue, 8 Oct 2019 17:58 GMT

wrong constraint in technical aspect comp_exec_asp

  • Key: UCM12-3
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In the UCM specification document, contraint of technical aspect “comp_exec_asp” is “exactly_one”, which means a given atomic component implementation must have one and only one technical policy that specifies its execution. For example, either passive unprotected, passive protected or active protected
    However, in the XML file of the core library, technical aspect “comp_exec_asp” is specified with constraint “any_number”. This is inconsistent with the specification document

  • Reported: UCM 1.1 — Tue, 20 Nov 2018 17:35 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    set the constraint of technical aspect comp_exec_asp to “exactly_one” in file ucm_core.xml

    Replace file ucm_core.xml by its new version that fixes the declaration of technical aspect comp_exec_asp.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

Introduce name spaces to split declarations across several files

  • Key: UCM12-1
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Although it is not explicitly specified in the standard, UCM modules cannot be
    declared in several parts. Hence, a UCM module and all its submodules must be
    gathered in a single file; such a file may be difficult to read if there are
    many submodules.

    It would be nice to introduce the notion of name space in UCM. A UCM name space
    would be a specific kind of module that can contain any type of module. A UCM
    name space could be declared several times (each declaration in a separate
    file).

    Example:
    In file sys--components.xml

    <namespace name="sys">
      <componentModule name="components">
      […]
      </componentModule>
    </namespace>
    

    In file sys--contracts.xml

    <namespace name="sys">
      <contractModule name="contracts">
      […]
      </contractModule>
    </namespace>
    

    Currently, only the following declarations are allowed:

    <applicationModule name="sys">
      <componentModule name="components">
      […]
      </componentModule>
      <contractModule name="contracts">
      […]
      </contractModule>
    </applicationModule>
    

    This would enable split a large UCM model in several files while keeping a
    common naming scheme.

  • Reported: UCM 1.1 — Tue, 9 Oct 2018 15:55 GMT
  • Disposition: Resolved — UCM 1.2
  • Disposition Summary:

    add the notion of namespace

    Issue UCM12-1 is addressed by creating a new class named “Namespace” in the metamodel. This class derives from class “IModule”.
    The meta-model and the XML representation (DTD and schema) are updated.

  • Updated: Tue, 8 Oct 2019 17:58 GMT
  • Attachments:

value ranges are wrong for 8-bit integers

  • Key: UCM11-19
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The resolution of issue UCM11-2 introduced some typo in section 9.2.3.3.
    The table should contain

    INT8 -2 7 2 7 - 1 int8 (in IDL 4.2)

    instead of

    INT8 -2 8 2 8 - 1 int8 (in IDL 4.2)

    and

    UINT8 0 2 8 - 1 uint8 (in IDL 4.2)

    instead of

    UINT8 0 2 8 uint8 (in IDL 4.2)
  • Reported: UCM 1.0 — Mon, 9 Apr 2018 14:18 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    fix the value ranges for 8-bit integers

    The edition must come after UCM11-2.
    Write the correct value ranges: -2 7 .. 2 7 - 1 for int8 and 0 .. 2 8 - 1 for uint8.

  • Updated: Wed, 3 Oct 2018 14:18 GMT

there should be no returned error code for data consumers in the standard library

  • Key: UCM11-18
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Standard library model core.xml contains the following declaration:

    <interface name="message_intf">
    <method name="push">
    <param dir="in" name="message" type="message_type_t"/>
    <param dir="return" name="ecode" type="::core::return_codes::comm_ecode"/>
    </method>
    </interface>
    

    and

    <portType name="msg_emtr_pt">
    <portElement interface="api::message_intf" kind="required" name="emtr_pe"/>
    </portType>
    <portType name="msg_rcvr_pt">
    <portElement interface="api::message_intf" kind="provided" name="rcvr_pe"/>
    </portType>
    

    This indicates that message emitter and message receiver port types rely on the same interface message_intf. This interface has a unique method push with a return type for error codes. The error code makes sense for the emitter, as it let it know wether the communication has been successful or not. But it makes no sense for the receiver: the value of the error code must be set by the connector, not the receiving component.

    There is a similar problem with the request-reponse connector.

  • Reported: UCM 1.0 — Mon, 9 Apr 2018 13:58 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    remove return codes for data reception interfaces

    create separate interfaces for data emitter and data receiver for message and request-response interactions

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

names of standard library files should be consistent with module names

  • Key: UCM11-17
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM standard defines a set of standard libraries stored in 5 files (core.xml, execution.xml, interactions.xml, properties.xml and timer.xml). Inside these files, the names of the top level modules do not always match the file names (core, ext_comp_exec, interactions, std_ann, timer).
    Although the standard does not states that UCM files should be named after the module they contain, it would make more sense to do so.

    In addition, module names should be less generic, as UCM is designed to encourage the use of additional libraries.

    Hence the standard library files may be renamed as follows:

    • ucm_core.xml
    • ucm_ext_exec.xml
    • ucm_ext_interac.xml
    • ucm_std_ann.xml
    • ucm_timer.xml
  • Reported: UCM 1.0 — Mon, 9 Apr 2018 12:29 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    update library and example declarations

    Rename the modules of the standard library models:

    • core becomes ucm_core
    • ext_comp_exec becomes ucm_ext_exec
    • interactions becomes ucm_ext_interac
    • std_ann becomes ucm_std_ann
    • timer becomes ucm_timer

    Also add a new subsection to describe the standard port roles, introduced by UCM 1.1

    Update XML and IDL code blocks to match the new module names of the standard library models

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

remove class ProgrammingLanguages from the meta-model, as it is useless

  • Key: UCM11-1
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Class ProgrammingLanguages had been created to gather programming language declarations and avoid having them scattered in NonfunctionalAspectModule. In the actuality, it creates unnecessary complexity when creating tools without bringing real advantage. It is better to simply remove it and have its contents (class Language) directly linked with class NonfunctionalAspectModule, as illustrated in the attached diagram.

  • Reported: UCM 1.0b2 — Mon, 9 Oct 2017 15:37 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    remove class ProgrammingLanguages

    The change consists of having programming language declarations directly in Nonfunctional modules, instead of nesting them in the intermediate class ProgrammingLanguages.

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

improve the specification of task periods

  • Key: UCM11-15
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Configuration of component execution policies relies on type ucm_timeval_t, which is a structure with two fields: seconds and nanoseconds. It is thus not convenient to specify task periods in milliseconds: too many zeroes to write, which may lead to mistakes. It should be nice to have a more adequate data structure.

  • Reported: UCM 1.0 — Tue, 27 Mar 2018 15:56 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    new specification for task periods

    The new definitions are provided in the attached file ucm_ext_exec.xml

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

remove parameter "methods_to_trace" from port_trace technical policy

  • Key: UCM11-14
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Technical policy port_trace has a parameter named methods_to_trace to indicate which method calls should be logged. It is not very convenient to use, as it leads to list all method names in a single string. It would be better to simply remove it and have port_trace log the invocations of all port methods.

  • Reported: UCM 1.0 — Tue, 27 Mar 2018 15:32 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    remove parameter "methods_to_trace"

    Simply removed the parameter declaration from the XML and IDL codes. Also remove the associated data types.

  • Updated: Wed, 3 Oct 2018 14:18 GMT

allow extension relationship between Annotation Definitions

  • Key: UCM11-7
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Subclasses of IConfigurable (ConnectorDefinition, TechnicalPolicyDefinition, etc.) have an extension relationship. This should be applied to AnnotationDefinition too, to bring the same level of flexibility.

  • Reported: UCM 1.0b2 — Mon, 13 Nov 2017 10:29 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    add extension relationship for AnnotationDefinition

    Most UCM entities have an extension relationship. By adding it to AnnotationDefinition we ensure consistency.

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

Connectable interfaces does not support more that one portelement per port-type

  • Key: UCM11-16
  • Status: closed  
  • Source: MBDA Italia ( marco di ferrante)
  • Summary:

    Port-type can have 1..* PortElements, as clearly shown in Figure 9.22.
    So a component can provide and require a set of PortElementObjects as instances of couple PortName/PortElementName and this is correctly mapped in the component Port Mapping getter for provided portelement “get_<port_name>_<provided_port_element_name>".

    When looking for REQUIRED port elements and the interface to connect them to the related provided port element object, this Port/PortElement coupling seems lost.

    Infact:

    • ComponentObject::get_portElement (in string provided)
    • Connectable::on_connect (in string port_name, in PortElementObject required);
    • Connectable::on_disconnect (in string port_name);
    • Container::get_port_element (in componentId comp_instance, in string port_name)
    • Container::connect (in componentId instance, in string port_name, in PortElementObject to_port)
      support only one PortElementObject for Port.

    If the understanding of the UCM is correct they should be updated as

    • ComponentObject::get_portElement (in string port_name, in string port_element_name);
    • Connectable::on_connect (in string port_name, in string port_element_name, in PortElementObject required);
    • Connectable::on_disconnect (in string port_name, in string port_element_name);
    • Container::get_port_element (in componentId comp_instance, in string port_name, in string port_element_name);
    • Container::connect (in componentId instance, in string port_name, in string port_element_name, in PortElementObject to_port);
  • Reported: UCM 1.0 — Mon, 19 Feb 2018 14:09 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    update the programming model to explicitly manipulate port elements

    In the programming model APIs, replace parameter “port_name” by two parameters “port_or_policy” and “port_elem”.

    Document ptc/17-05-05 shall be replaced by file ucm.idl.

  • Updated: Wed, 3 Oct 2018 14:18 GMT

Bring more flexibility in composite component extensions

  • Key: UCM11-3
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Composite component implementations can extend other composite implementations. Parts and connections can be refined, with some limitations to guarantee consistency:

    • refined parts must be of the same component type
    • refined connections must be of the same connector definition or an extended connector definition

    This is actually too restrictive. The following should be allowed:

    • refined parts should be of the same component type OR a component type that refines the initial component type
    • refined connections should simply be consistent with the connected ports
  • Reported: UCM 1.0b2 — Mon, 23 Oct 2017 10:14 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    bring more flexibility in composite component extensions

    In component types, restrict port refinements: instead of allowing any refinement, refining ports must now reference the same port role.
    In composite component implementations, allow a part to reference any refinement of the component referenced by the inherited part, instead of restricting to the same component type. Also, allow connection refinement to reference any connector definition as long as it gives a consistent architecture.

  • Updated: Wed, 3 Oct 2018 14:18 GMT

Add support for 8-bit integers

  • Key: UCM11-2
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    IDL42-6 recently introduced support for 8-bit integers in IDL. UCM should follow this enhancement and support 8-bit integers.

  • Reported: UCM 1.0b2 — Mon, 23 Oct 2017 09:55 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    Add support for 8-bit integers

    add literals INT8 and UINT8 in enumeration PrimitiveIntegerKind, and replace literals SHORT, LONG, etc. by INT16, INT32, INT64, UINT16, UINT32 and UINT64 for consistency.

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

Create a DTD for the XML syntax

  • Key: UCM11-6
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    UCM 1.0 defines an XML schema, which is sufficient to validate file structures.
    However, XML provides a nice feature: entities. Entities allow automatic string substitution. Some of them are standard. For example: &nbsp;, &quot;, &gt;

    As UCM relies on absolute names to reference elements, XML files can become verbose:

      <policyDef applicability="on_component_only" aspect="::core::comp_exec::comp_trig_asp" extends="::core::comp_exec::self_exec_comp" name="prdc_self_exec_comp">
        <configParam name="psec_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
        <configParam name="psec_priority" type="contracts::priority_t"/>
        <configParam name="psec_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
      </policyDef>
    

    It would be nice to be able to write instead:

      <policyDef applicability="on_component_only" aspect="&ce;::comp_trig_asp" extends="&ce;::self_exec_comp" name="prdc_self_exec_comp">
        <configParam name="psec_period" type="&ucm_timeval_t;"/>
        <configParam name="psec_priority" type="contracts::priority_t"/>
        <configParam name="psec_offset" type="&ucm_timeval_t;"/>
      </policyDef>
    

    XML entities require the specification of a DTD.

  • Reported: UCM 1.0b2 — Mon, 23 Oct 2017 15:39 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    provide a new XML schema and DTD

    replace ptc/17-05-07 with ucm_base.dtd and ucm_base.xsd

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

Improve component port declaration

  • Key: UCM11-5
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Component ports in UCM are specified by 3 parameters:

    • a name
    • a définition
    • bindings to actual types if need be

    UCM defines a set of nested classes in the meta-model, which makes the XML syntax verbose. See for example:

    <compType name="Compare">
      <port name="in1">
        <typeSpec type="::core::messages::msg_rcvr_pt">
          <binding abstract="::core::messages::api::message_type_t" actual="::complex_types::image_t"/>
        </typeSpec>
      </port>
      <port name="in2">
        <typeSpec type="::core::messages::msg_rcvr_pt">
          <binding abstract="::core::messages::api::message_type_t" actual="::complex_types::image_t"/>
        </typeSpec>
      </port>
    </compType>
    

    Three nested XML tags are necessary: port, typeSpec and binding.

    The specification of data binding is nested in the port declaration. Although it is a clean way to specify bindings, it brings two issues:

    • users have to write the binding specification for each port; a binding cannot be written once and used for several ports, which would be simpler
    • it is difficult to implement efficient code generators: a naive generator will generate specific code for each port instead of for each unique binding; this leads to redundant code.

    It would be better to write something like this:

    <bindingSet name="binding1">
      <binding abstract="::core::messages::api::message_type_t" actual="::complex_types::image_t"/>
    </bindingSet>
    
    <compType name="Compare">
      <port name="in1" def="::core::messages::msg_rcvr_pt" binding="binding1"/>
      <port name="in2" def="::core::messages::msg_rcvr_pt" binding="binding1"/></compType>
    

    Also, when refining a component type, ports can be refined. By “refined”, one must understand “redefined”: UCM actually allows a complete port redefinition; no shared data or semantics is required between the original port and its refinement.

  • Reported: UCM 1.0b2 — Mon, 23 Oct 2017 13:53 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    Improve component port declaration

    introduce the notion of PortRole to restrict component port refinement: a component port can only be refined by a component port the port type of which references the same port role. For example, a message emitter port can refine a data producer port, but not a service client port.
    Also remove the notion of IPortSpec, PortTypeSpec and PortRoleSpec, and instead have a reference to the port type and binding in the port declaration.

  • Updated: Wed, 3 Oct 2018 14:18 GMT

Add cardinalities (i.e. min and max) for configuration parameters

  • Key: UCM11-4
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    It is impossible to declare optional configuration parameters or to specify that a configuration parameter can accept several values. See for example the following declaration of the standard technical policy for periodic component execution:

    <policyDef applicability="on_component_only" aspect="::core::comp_exec::comp_trig_asp" extends="::core::comp_exec::self_exec_comp" name="prdc_self_exec_comp">
      <comment>periodic self-executing component. It will invoke method run every period.</comment>
      <configParam name="psec_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
      <configParam name="psec_priority" type="contracts::priority_t"/>
      <configParam name="psec_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
    </policyDef>
    

    It has 3 mandatory parameters:

    • period
    • offset
    • priority

    While the period is obviously mandatory, the offset information might be optional. It would be nice to be able to specify that offset is not mandatory (min="0"):

    <policyDef applicability="on_component_only" aspect="::core::comp_exec::comp_trig_asp" extends="::core::comp_exec::self_exec_comp" name="prdc_self_exec_comp2">
      <configParam name="psec_period" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
      <configParam name="psec_priority" type="contracts::priority_t"/>
      <configParam min="0" name="psec_offset" type="::core::basic_svc::clock::api::ucm_timeval_t"/>
    </policyDef>
    

    Also, one could imagine some kind of complex policy with several different execution periods in order to create a complex execution pattern.

  • Reported: UCM 1.0b2 — Mon, 23 Oct 2017 12:33 GMT
  • Disposition: Resolved — UCM 1.1
  • Disposition Summary:

    add lower and upper cardinalities to configuration parameters

    Add fields “lower” and “upper” to configuration parameters, just like UML does for properties.

  • Updated: Wed, 3 Oct 2018 14:18 GMT
  • Attachments:

The annotation system is too flexible

  • Key: UCM-14
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Annotations can be associated with several kinds of entity: component types, methods, attributes, data types, ports, atomic component implementations, composite component implementations. It is impossible, when declaring an annotation definition, to specify which kind of entity it must be associated with. Consequently, annotations might be associated in an irrelevant manner.

  • Reported: UCM 1.0b1 — Mon, 5 Sep 2016 12:42 GMT
  • Disposition: Closed; No Change — UCM 1.0
  • Disposition Summary:

    won't fix annotations

    There is no simple way to specify which entity an annotation definition can apply to. Therefore, it is wise not to change the current situation: UCM tools may define extensions to the annotation system.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

Interfaces should be able to have annotation

  • Key: UCM-16
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Concrete data types can have annotations. Interface cannot: only methods and attributes can. It would be interesting to enable annotations in interfaces, just in case.

  • Reported: UCM 1.0b1 — Mon, 5 Sep 2016 15:36 GMT
  • Disposition: Closed; No Change — UCM 1.0
  • Disposition Summary:

    class Interface already inherits from IAnnotable through IConcreteTypeDeclaration

    Interfaces are already annotable.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

use the RFC 2119 vocabulary

  • Key: UCM-71
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Many sentences are not assertive enough: they use words like "can". The document should use "shall", "shall not", "may", "should" and "should not".

  • Reported: UCM 1.0b1 — Sat, 22 Apr 2017 20:32 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    use the RFC 2119 vocabulary and be more specific

    many occurrences of “can”, “will”, “could”, etc. are used in the normative specification and are thus too vague. They must be replaced by accurate words like “may”, “shall”, “shall not”, “should”, “should not”

  • Updated: Mon, 16 Oct 2017 15:14 GMT

update the IDL and C++ sections to match the new metamodel, programming model and xml names

  • Key: UCM-69
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Some XML sample codes are obsolete in the IDL and C++ section because some names changed. Some mapping explanations must be updated as well.

  • Reported: UCM 1.0b1 — Thu, 20 Apr 2017 16:52 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    update the IDL and C++ sections to match the new metamodel, programming model and xml names

    Update the XML, IDL and C++ code.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

improve the class diagram of reziable data type

  • Key: UCM-67
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    This diagram illustrates the definitions of NativeType, Sequence and StringType. It is difficult to read. It may be better to have several diagrams instead.

  • Reported: UCM 1.0b1 — Thu, 20 Apr 2017 15:17 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    replace the standard data type diagram by dedicated diagrams for string type, native type and sequence

    Instead of having a unique and complex class diagram for resizable data types, create three diagrams for string type, native type and sequence.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

Rewrite the references section

  • Key: UCM-65
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The “References” section mentions too many documents that only inspired UCM, and are not required for its application. The section should therefore be simplified to only mention relevant documents.

  • Reported: UCM 1.0b1 — Thu, 20 Apr 2017 13:54 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Rewrite the references section

    only mention IDL, XML, IDL to C++ and C++ as normative references.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

Harmonization with IDL4.1 and XTYPES1.2

  • Key: UCM-61
  • Status: closed  
  • Source: Real-Time Innovations ( Dr. Gerardo Pardo-Castellote, Ph.D.)
  • Summary:

    To the extent possible it is desirable to harmonize the type annotations and use between IDL4, XTYPES and UCM.
    The general concept is that IDL4 defines the general syntax and common annotations, and other specifications like XTYPES and UCM will "refer" to IDL4 and add annotations as needed for concepts not present in IDL4.

    The latest revision of XTYPES (version 1.2) ptc/17-03-06 already follows this approach.

    So it would be desirable that IDL4 does the same. In the cases where the annotation is not present in IDL4 but is present in XTYPES it is also desirable that UCM "reuses/references" the annotation defined in XTYPES. That way if this annotation is eventually moved to IDL4 we do not have a conflict.

    This means several annotations currently used in UCM should be changed as listed below:

    • @IndexType should be removed. Instead refer to @bit_bound (see IDL41 section 8.3.4.1)
    • @DefaultValue should be removed. Instead refer to @value (see IDL 41 section 8.3.1.5).
    • IDL4 annotations are all lower case. So @Range (used in UCM) should be @range.
    • IDL4 uses snake_case for builtin annotations names. So does XTYPES for the new annotations it introduces. It would be good if UCM follows the same convention instead of using CamelCase. For example @MemoryFootprint should be @memory_footprint and so on.
    • The syntax to define new annotations in IDL4 uses the "@annotation" keyword in lower case. It also does not use the "attribute" keyword anymore. UCM should do the same. So the declaration of MemoryFootprint in 14.4.1.1 should be changed to:
      @annotation memory_footprint {
          unsigned long max; 
      }
      
  • Reported: UCM 1.0b1 — Wed, 29 Mar 2017 17:21 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Align annotations with the existing IDL annotations

    use snake_case instead of CamelCase. Reuse IDL standard annotation instead of inventing new, redundant ones.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

Create a section for the IDL equivalent syntax

  • Key: UCM-56
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Some UCM aspects (e.g. component types) have an IDL equivalent. There should be a section describing how to use IDL to specify UCM.

  • Reported: UCM 1.0b1 — Tue, 28 Mar 2017 14:10 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Create a section for the IDL equivalent syntax

    Add the content of file ucm_idl_syntax.odt before chapter 10.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

Improve technical policies for ports

  • Key: UCM-48
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Technical policy definitions specify to what kind of element they apply: only components, ports of components, or either case. There is then two metaclasses ComponentTechnicalPolicy and ComponentPortTechnicalPolicy to distinguish between the two situations. This approach creates two problems:
    1- it is impossible to specify that a technical policy is meant to apply to all the interaction points of a component (both ports and policies that have port elements)
    2- it is impossible to make a ComponentPortTechnicalPolicy manage the interactions between the component and one of its policies

  • Reported: UCM 1.0b1 — Fri, 17 Mar 2017 15:58 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Merge component technical policy and component port technical policy

    Define three values for policy applicability: on_component_only (for services), on_some_ports (for interceptors) and on_all_ports (for interceptors that have to intercept all ports). The later value is useful for policies that control the component execution and thus have to intercept all communications. Classes ComponentTechnicalPolicy and ComponentPortTechnicalPolicy can be merged into a unique class TechnicalPolicy, which is simpler.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

the UCM standard platform should reorganized

  • Key: UCM-51
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    There should be only 3 standard component execution policies: unprotected_passive, protected_passive and protected_active (they more or less correspond to <nothing>, ppUnit and rtUnit in MARTE). protected_self-executing is actually not an execution policy, but a triggering policy, and should therefore be regrouped with the timers in the additional execution policies

  • Reported: UCM 1.0b1 — Tue, 21 Mar 2017 17:35 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    separate self-execution policy from component execution policy

    Associate the self-executing component policy to a component execution trigger aspect rather than a component execution aspect. Also associate the timer policies to the execution trigger aspect.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

wrong definition in section "symbols"

  • Key: UCM-18
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    the definition of UCM is the one of UML

  • Reported: UCM 1.0b1 — Tue, 6 Sep 2016 09:08 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    fix the symbol typo

    replace "UCM: unified modeling language"
    by "UML: unified modeling language"

  • Updated: Mon, 16 Oct 2017 15:14 GMT

class IPrimitiveDataType is missing

  • Key: UCM-29
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Although it is shown in figure 8 p.19, class IPrimitiveDataType is not described in the document. A subsection in section 9.2.3 must be added for it.

  • Reported: UCM 1.0b1 — Mon, 19 Sep 2016 11:44 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    add a section for IPrimitiveDataType

    Add a section to document the IPrimitiveDataType class

  • Updated: Mon, 16 Oct 2017 15:14 GMT

AssemblyParts should inherit from IAnnotable

  • Key: UCM-17
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Assembly parts should be able to have annotations, just in case.

  • Reported: UCM 1.0b1 — Mon, 5 Sep 2016 15:52 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    add inheritance to AssemblyPart

    Make class AssemblyPart inherit from both IAnnotable and INamed.
    The meta-model must be edited. The main document must be edited as well.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

class IinterfaceBase is now named IInterface

  • Key: UCM-15
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    This is a typo

  • Reported: UCM 1.0b1 — Mon, 5 Sep 2016 12:44 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    change the title of section 9.2.7.1

    The meta-model is correct. This is a typo in the text.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

Align UCM primitive types with IDL


The connection registration API may lead to portability issues

  • Key: UCM-50
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    UCM component bodies are supposed to have a method named on_startup() that takes a list of ports to connect as parameter. When creating a statically typed API (with an explicit list of PortElement), one has to decide which order to follow for the ports. For example, for a component C that has two port elements peA and peB, should we have on_startup(peA a, peB b) or on_startup(peB b, peA a) ?
    The standard cannot leaves this choice implementation-dependent, as it would prevent code portability.
    Also, port elements have two relationships named "executor", which is confusing.

  • Reported: UCM 1.0b1 — Tue, 21 Mar 2017 17:21 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Connect port elements using on_connect instead of on_startup

    Simplify the programming model by manking the Connectable interface mandatory, and remove parameters of method on_startup().
    This makes implementation work more portable.
    Also update the programming model diagrams to use SVG instead of PNG images.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

enable multiple refinement for component types and composite component implementations

  • Key: UCM-46
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    A given component type can refine only a single another component type. Same thing for composite component implementations. Enabling the refinement of several component types (or composite implementations) would help component definition reuse.

  • Reported: UCM 1.0b1 — Thu, 19 Jan 2017 16:41 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    allow multiple refinements for component types and composite component implementations

    allow multiple refinements for component types and composite component implementations by setting "refines" field cardinalities to [0...*]

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

update the xml syntax and diagrams and put shorter names

  • Key: UCM-45
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    As the UCM metamodel has been updated, the UCM XML schema must be updated, and consequently the XML code shown in section 10 must be updated as well.
    Also, the names used for the platform definitions are a bit long, and it would be better to have shorter names, in case users would like to write them by hand, and also because it would fit better in the pages.
    As a consequence, diagrams shall be updated accordingly.

  • Reported: UCM 1.0b1 — Tue, 29 Nov 2016 17:40 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Update the syntax and the names for the standard library

    Update the XML code blocks, with shorter names. Also remove the diagrams. Add the IDL equivalent syntax.
    This task also resolves issue UCM-51 by associating the self-executing component policy to the component trigger technical aspect instead of the component execution technical aspect.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

Create a section for the graphical guidelines

  • Key: UCM-44
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In document Beta 1, section 9 contains several small sections that describe the graphical guidelines for the creation of graphical, informal representation of UCM models. These sections have been removed during by issue #37. A new section should be added at the end of the document to explain the non-normative graphical guidelines

  • Reported: UCM 1.0b1 — Tue, 29 Nov 2016 17:36 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    Create a section for the graphical guidelines

    Create a new section describing the graphical guidelines and update diagrams according to these guidelines.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

Create a section for the XML syntax of UCM

  • Key: UCM-43
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    There should be a section that shows the UCM XML syntax. This should be a new section.

  • Reported: UCM 1.0b1 — Tue, 29 Nov 2016 17:29 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    New sections for the XML syntax

    A new small section that introduces the UCM XML schema, and a non-normative section with examples to help understand the syntax.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

remove sections that explain the graphical representation from section 9

  • Key: UCM-37
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Section 9 describes the meta-model, not concrete syntax.
    Remove sections 9.3.3.5, 9.3.4.5, 9.3.5.3, 9.4.3.3, 9.5.3.8, 9.5.4.4, 9.5.5.7

  • Reported: UCM 1.0b1 — Thu, 29 Sep 2016 16:14 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    remove sections that explain the graphical representation

    Remove sections 9.3.3.5, 9.3.4.5, 9.3.5.3, 9.4.3.3, 9.5.3.8, 9.5.4.4, 9.5.5.7

  • Updated: Mon, 16 Oct 2017 15:14 GMT

IAssembly may have no part

  • Key: UCM-34
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    current cardinality of field part for IAssembly is 1.... It would be better to allow empty IAssembly objects: set cardinality to 0....

  • Reported: UCM 1.0b1 — Wed, 21 Sep 2016 15:40 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    change cardinality of field part in class IAssembly

    change the cardinality of field part from [1...*] to [0...*]

  • Updated: Mon, 16 Oct 2017 15:14 GMT

add attribute delegations in composite component implementations

  • Key: UCM-1
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Composite component implementations have port delegations between their ports and ports of assembly parts. For consistency, there should be attribute delegations as well. The semantics of attribute delegation would be the following: when deploying a composite component, the initial values set for its attributes shall actually be set for the delegated attributes of its subcomponents. As composite component implementations have no existence at runtime, attribute delegation shall have no existence at runtime either.

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 14:37 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    create a new class for attribute delegation

    Create a class named AttributeDelegation in package ucm_components. This new class has three fields:

    • externalAttribute: Attribute [1]
    • part: AssemblyPart [1]
    • attribute: Attribute [1]

    Update class PortDelegation to follow the same structure. That is, replace field internalEndPoint by the two following fields:

    • part: AssemblyPart [1]
    • port: Port [1]

    Update class CompositeComponentImplementation to add a new field:

    • attributeDelegation: AttributeDelegation [0...*] (owned)
  • Updated: Mon, 16 Oct 2017 15:14 GMT

wrong inheritance for sequences and text not assertive enough

  • Key: UCM-4
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Class sequence inherits from IStandardDataType, not IStandardTypeBase (which does not exist)

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 15:07 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    replace IStandardTypeBase by IStandardDataType and put more precision in the text

    Fix the typo.
    Also be more assertive in the specification.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

missing inheritance for port delegation

  • Key: UCM-3
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    According to the meta-model, class PortDelegation inherits from INamed. This does not appear in the document

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 15:01 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    add inheritance in section 9.5.5.6

    The meta-model is correct. This is a typo.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

change field identifier of class INamed

  • Key: UCM-2
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Field identifier of class INamed should be renamed into name, which is more logical

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 14:41 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    change the name of field identifier of class INamed to name

    Edit the meta-model to rename field identifier of class INamed to name
    Update section 9.1.4.1

  • Updated: Mon, 16 Oct 2017 15:14 GMT

use UML for class diagrams

  • Key: UCM-10
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Class diagrams in section 9 do not exactly conform to the UML syntax. They should be recreated with the UML syntax.

  • Reported: UCM 1.0b1 — Fri, 26 Aug 2016 13:34 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    replace ecore diagrams of section 9 with UML class diagrams

    replace diagrams of figures 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 29 by UML class diagrams made with Papyrus. See attached file.

  • Updated: Mon, 16 Oct 2017 15:14 GMT
  • Attachments:

remove sections that explain the xml representation from section 9

  • Key: UCM-12
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Section 9 deals with the UCM meta-model, not with concrete syntax. The description of the XML schema must be put in a separate section, at the end of the document. Sections 9.3.2.2, 9.3.3.6, 9.3.4.6, 9.3.5.4, 9.4.3.4, 9.5.3.9, 9.5.4.5, 9.5.5.8 must be removed.

  • Reported: UCM 1.0b1 — Mon, 29 Aug 2016 15:25 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    remove sections that explain the xml representation from section 9

    Remove sections 9.3.2.2, 9.3.3.6, 9.3.4.6, 9.3.5.4, 9.4.3.4, 9.5.3.9, 9.5.4.5, 9.5.5.8.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

remove the examples from section 9

  • Key: UCM-11
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    this section is normative, and should not contain examples

  • Reported: UCM 1.0b1 — Fri, 26 Aug 2016 14:09 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    remove example text from section 9

    remove the examples

  • Updated: Mon, 16 Oct 2017 15:14 GMT

section for ConnectorPortConfiguration is missing

  • Key: UCM-6
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    The UCM meta-model contains a class named ConnectorPortConfiguration, which has no documentation. A section for it should be added.

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 15:58 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    add a section for ConnectorPortConfiguration

    This section is simply missing: the meta-model is up to date.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

wrong field type in AbstractTypeBinding

  • Key: UCM-5
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    field actualType of class AbstractTypeBinding should be IConcreteTypeDeclaration.

  • Reported: UCM 1.0b1 — Thu, 25 Aug 2016 15:26 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    replace ITypeDeclaration by IConcreteTypeDeclaration

    The meta-model is correct. This is only a typo in the document.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

remove sections that explain the IDL representation from section 9

  • Key: UCM-13
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Section 9 deals with the UCM meta-model, not with concrete syntax. The description of the IDL equivalent syntax must be put in a separate section, at the end of the document. Sections 9.3.2.3, 9.3.3.7, 9.3.4.7, 9.3.5.5, 9.4.3.5, 9.5.3.10, 9.5.4.6, 9.5.5.9 must be removed.

  • Reported: UCM 1.0b1 — Mon, 29 Aug 2016 15:30 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    remove IDL sections from section 9

    Remove sections 9.3.2.3, 9.3.3.7, 9.3.4.7, 9.3.5.5, 9.4.3.5, 9.5.3.10, 9.5.4.6, 9.5.5.9.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

there is no distinction between compositions and aggregations in the descriptions of classes

  • Key: UCM-28
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    In the text that describes the meta-model classes, compositions and aggregations are not clearly identified: the reader must refer to the class diagrams. It would be better to have the information in the diagrams and in the text.

  • Reported: UCM 1.0b1 — Fri, 9 Sep 2016 14:31 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    append "(owned)" to items that correspond to compositions

    For the moment, the only way to distinguish between agregations and composititions is to have a look at the class diagrams: the text itself does provide information.
    Append "(owned)" to items that correspond to compositions to help make the distinction between agregations and compositions.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

create an abstract class IItemBinding

  • Key: UCM-9
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    Ports of component types contain an IPortSpec, which is an abstract class that contains nothing, thus allowing future meta-model extensions without any restriction regarding the way ports are specified.
    On the other hand, class ConnectorDefinition contains ItemBinding, which explicitly associates an InteractionItem with an ITypeDeclaration. Although this will cover most situations, it is not as general as for component ports, since it implies that connector definitions depend on the notion of data type.
    There should be an intermediate abstract class IItemBinding that only contains InteractionItem, and that is extended by class ItemBinding.

  • Reported: UCM 1.0b1 — Fri, 26 Aug 2016 12:14 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    create class IItemBinding

    Create an abstract class named IItemBinding with the following field:

    • interactionItem: InteractionItem [1]

    Class ItemBinding will inherit class IItemBinding. Field itemBinding of class ConnectorDefinition will now reference IItemBinding.

  • Updated: Mon, 16 Oct 2017 15:14 GMT

enable extension for composite component implementation

  • Key: UCM-8
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    It would be nice to allow a composite component implementation to extend another one. This can be achieved by adding a field extends to the existing CompositeComponentImplementation class. Composite extensions would allow the declaration of additional assembly parts, port delegations, attribute delegations and connections without altering the elements declared in ancestor components.

  • Reported: UCM 1.0b1 — Fri, 26 Aug 2016 10:02 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    add composite component implementation refinement and update field names for extension mechanisms

    Add a field extends in class CompositeComponentImplementation. Also add a field refines in classes AssemblyPart and Connection. Rename fiels instanceOf of class AssemblyPart into componentDefinition, as an assembly part is not an instance.
    Fix inconsistencies in field names

  • Updated: Mon, 16 Oct 2017 15:14 GMT

make classes Connection and ConnectionEnd inherit from IConfigured

  • Key: UCM-7
  • Status: closed  
  • Source: THALES ( Thomas Vergnaud)
  • Summary:

    class ComponentTechnicalPolicy inherits from IConfigured, which allows the specification of values for configuration parameters. Connections and ConnectionEnd should also inherit from IConfigured, to enable the specification of configuration values as well.

  • Reported: UCM 1.0b1 — Fri, 26 Aug 2016 09:38 GMT
  • Disposition: Resolved — UCM 1.0
  • Disposition Summary:

    make classes Connection and ConnectionEnd inherit from IConfigured

    The meta-model must be edited to add inheritance to class IConfigured for classes Connection and ConnectionEnd.
    The main document must be updated in sections 9.5.5.4 and 9.5.5.5.

  • Updated: Mon, 16 Oct 2017 15:14 GMT