<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmlns:rmc="http://www.ibm.com/rmc"
    rmc:version="7.5.0" xmi:id="-V60xni_uGxBI53smjBJx8Q"
    name="umf_naming_conventions,_EU58MMVkEdysMqkA3CCYsg" guid="-V60xni_uGxBI53smjBJx8Q"
    changeDate="2008-11-04T12:44:20.343-0800" version="7.2.0">
  <mainDescription>&lt;p>&#xD;
    The &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.mdev.common.extend_umf/guidances/concepts/umf_C03950A8.html&quot;&#xD;
    guid=&quot;_nrrn4GqHEdun45RPFGeYnA&quot;>Unified Method Framework (UMF)&lt;/a>&amp;nbsp;defines a naming convention for each library&#xD;
    element: &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/method_plugin_190B9F5E.html&quot;&#xD;
    guid=&quot;_D4TLgMaGEduMlb2cQZNTYw&quot;>method plug-in&lt;/a>s, &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/method_configuration_C2B8FA8A.html&quot;&#xD;
    guid=&quot;__V7pAMaEEduMlb2cQZNTYw&quot;>method configuration&lt;/a>s, plug-in projects, configuration projects and tag groups.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The UMF naming convention divides the element names into name parts, where each name part is separated by a dot&#xD;
    (‘.’).&amp;nbsp;For example, the plug-in name &quot;core.tech.com.base&quot; has&amp;nbsp;four name parts.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The benefits of UMF's naming convention is that it takes advantage of Method Composer support for a hierarchical&#xD;
    library view where a new level is introduced for each name part. The resulting hierarchy is defined to optimize&#xD;
    configuration of the method.&amp;nbsp;The most important categorization for someone configuring the process is listed&#xD;
    first: the plug-in or configuration type.&amp;nbsp; &lt;a class=&quot;elementLinkWithUserText&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/licensing_level_746E1470.html&quot;&#xD;
    guid=&quot;_47cn8PU3EdyNMvgj607huw&quot;>Licensing level&lt;/a> is applied as a suffix and no suffix means open source (in other&#xD;
    words, open source method elements do not have a licensing level suffix).&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    UMF plug-in naming conventions&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    UMF plug-in naming convention: &amp;lt;&lt;strong>plug-in&#xD;
    type&lt;/strong>&amp;gt;.[&amp;lt;&lt;strong>context&lt;/strong>&amp;gt;].&amp;lt;&lt;strong>descriptive name&lt;/strong>&amp;gt;.&amp;lt;&lt;strong>plug-in&#xD;
    part&lt;/strong>&amp;gt;[_&amp;lt;&lt;strong>part qualifier&lt;/strong>&amp;gt;][-&amp;lt;&lt;strong>source/licensing level&lt;/strong>&amp;gt;]&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Where:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Plug-in type&lt;/strong>:&amp;nbsp; The following are the possible values for the plug-in type.&amp;nbsp; For more&#xD;
        information on the plug-in types, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/concepts/practice_lib_plugin_types_3EA8002F.html&quot;&#xD;
        guid=&quot;__428YO6cEdygKbJMUVNEtg&quot;>Concept: Practice Library Plug-In Types&lt;/a>. &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                core = Core&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                practice = Practice&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                process = Process&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                publish = Publish&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                meth_mgmt = Method Management&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;br />&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Context&lt;/strong>: Not required (some plug-ins are &quot;context-free&quot; meaning that they are not specific to any&#xD;
        &lt;a class=&quot;elementLink&quot; href=&quot;./../../../core.mdev.common.base/guidances/termdefinitions/context_AF8B381C.html&quot;&#xD;
        guid=&quot;_Kemu0PHZEdyO9sYxKNWf8A&quot;>context&lt;/a>).&amp;nbsp;&amp;nbsp;The following are some examples of contexts:&amp;nbsp; &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                gen = general purpose (&lt;em>general purpose&lt;/em> means applies across multiple contexts.&amp;nbsp; This is NOT&#xD;
                the same as context-free)&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                tech = technology&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                bus = business&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                mgmt = management&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                legacy = legacy&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                mdev&amp;nbsp;= method development&amp;nbsp;&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                sdpl = solution deployment&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;p>&#xD;
        Note: If you would like to implement &quot;nested&quot; contexts, you can break the context name into multiple &quot;parts&quot;, where&#xD;
        each of those parts are separated by a dot (period) so that Method Composer creates a hierarchical view of the&#xD;
        related plug-ins. For example: You could define an authoring&amp;nbsp;(auth)&amp;nbsp;context that is a sub-context of&#xD;
        method development (mdev).&amp;nbsp;In such a case,&amp;nbsp;the name of the context would be&#xD;
        &quot;mdev.auth&quot;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
    &lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Descriptive name&lt;/strong>: The following conventions apply to the Descriptive name part of of a plug-in&#xD;
        name:&#xD;
    &lt;/li>&#xD;
    &lt;li style=&quot;LIST-STYLE-TYPE: none&quot;>&#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                Actual names will vary, but the name should be descriptive of what the plug-in contains, should be pretty&#xD;
                close to the presentation name for the plug-in, using &lt;a class=&quot;elementLink&quot;&#xD;
                href=&quot;./../../../core.mdev.common.extend_umf/guidances/guidelines/umf_approved_acronyms_A0328F22.html&quot;&#xD;
                guid=&quot;_EQiuAPTiEdysQswc_A-Z6g&quot;>UMF Approved Acronyms&lt;/a>.&amp;nbsp;&amp;nbsp;&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                For example:&amp;nbsp;Descriptive name:&amp;nbsp;pracitice_auth;&amp;nbsp;Presentation name: Practice Authoring.&lt;br />&#xD;
                &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Plug-in part&lt;/strong>: The following are the possible values for the plug-in part.&amp;nbsp; For more&#xD;
        information on the plug-in parts, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/concepts/practice_lib_plugin_types_3EA8002F.html&quot;&#xD;
        guid=&quot;__428YO6cEdygKbJMUVNEtg&quot;>Concept: Practice Library Plug-In Types&lt;/a>. &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                base = base plug-in&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                assign = assign plug-in&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                extend = extend plug-in&lt;br />&#xD;
                &amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Part qualifier&lt;/strong>: Not required. This can be used to provide some additional information about the&#xD;
        plug-in part.&amp;nbsp; This is most applicable for Extend plug-ins, where the part qualifier can be used to indicate&#xD;
        the reason for the extension.&amp;nbsp; For example, UMF-specific extensions to an existing plug-in may be indicated&#xD;
        with a &quot;_umf&quot; part qualifier (e.g., &quot;&amp;lt;some plug-in&amp;gt;.extend_umf&quot;).&amp;nbsp;&amp;nbsp; Another exmple of a qualifier&#xD;
        is &quot;gbl&quot; for globalization&quot;.&lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Source/licensing level suffix&lt;/strong>.&amp;nbsp; Can be used to indicate the company that the plug-in applies&#xD;
        to and/or the licensing level of the plug-in. Open source plug-ins do not include a licensing level in their&#xD;
        names.&lt;br />&#xD;
        Note: The use of a hyphen (-) rather than a dot or perioed (.) is intentional because the&#xD;
        source/licensing&amp;nbsp;level&amp;nbsp;is not intended to be another hierarchical level.&amp;nbsp; Do no use a hyphen in any&#xD;
        other place in the name&amp;nbsp;except to separate the actual plug-in name from the suffix.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Figure 1 provides examples of UMF plug-in names that use these conventions:&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure 1: Example: Method authoring practice naming conventions&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;img style=&quot;WIDTH: 685px; HEIGHT: 514px&quot; height=&quot;514&quot; alt=&quot;umf_plugin_name_examples&quot;&#xD;
    src=&quot;./resources/umf_plugin_name_examples.jpg&quot; width=&quot;600&quot; />&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Notice the following points shown in Figure 1:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        All practices are grouped together because the first part of their names is “practice”&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        All the practices that support a specific context are grouped under the content name (“mdev” in this example)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        All plug-ins that support method authoring are grouped together because a new name level was introduced in the&#xD;
        descriptive name (“auth” in this example)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        All plug-in “parts” for a practice are grouped together because the practice descriptive name is the same&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The reason for the extension is included as part of the Extend plug-in name, separated from the word &quot;extend&quot; with&#xD;
        an underscore and not a&amp;nbsp;hyphen. For example: practice.mdev.auth.practice_auth.extend_umf and&#xD;
        practice.mdev.auth.practice_auth.extend_umf-ibm&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The licensing level is separated from the rest of the plug-in name with a hypen.&amp;nbsp; For example:&#xD;
        practice.mdev.auth.practice_auth.extend_umf-ibm and practice.mdev.auth.practice_auth.extend_umf-ibm_int.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;h3>&#xD;
    UMF plug-in project naming conventions&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Plug-in projects should be named exactly the same as the plug-ins they contain. See the earlier section on plug-in&#xD;
    naming conventions for more information.&#xD;
&lt;/p>&lt;br />&#xD;
&lt;h3>&#xD;
    UMF configuration naming conventions&lt;br />&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    UMF configuration naming convention: &amp;lt;&lt;strong>configuration&#xD;
    type&lt;/strong>&amp;gt;[.&lt;strong>context&lt;/strong>].&amp;lt;&lt;strong>descriptive name&amp;gt;[-&amp;lt;source/licensing level&amp;gt;]&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Where:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Configuration type&lt;/strong>: The following are the possible values for the&amp;nbsp;configuration&#xD;
        type.&amp;nbsp;For more information on UMF configuration types, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/concepts/practice_lib_config_types_B96A959A.html&quot;&#xD;
        guid=&quot;_1gchoO6dEdygKbJMUVNEtg&quot;>Concept: Practice Library Configuration Types&lt;/a>. &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                publish = Publish Configuration&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                zconstruct = Process Construction Configuration&lt;br />&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Context&lt;/strong>: Same as for plug-ins.&lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Descriptive name&lt;/strong>: The following conventions apply to the Descriptive name part of of a&#xD;
        configuration name:&amp;nbsp;&amp;nbsp; &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                For Publish configurations, the &lt;a class=&quot;elementLink&quot;&#xD;
                href=&quot;./../../../core.mdev.common.base/guidances/concepts/practice_config_CC7754F2.html&quot;&#xD;
                guid=&quot;_0H9aAO7EEdy9EOwDlaw7Kw&quot;>Practice Configuration&lt;/a>&amp;nbsp;name being published&amp;nbsp;makes a&amp;nbsp;good&#xD;
                descriptive name&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                For Process Construction configurations, the name of the plug-in that contains the process makes a good&#xD;
                descriptive name&lt;br />&#xD;
            &lt;/li>&#xD;
        &lt;/ul>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Source/licensing level&lt;/strong>: Same as for plug-ins.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    The following are some examples of UMF&amp;nbsp;configuration names that use these conventions:&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure&amp;nbsp;2 provides an&amp;nbsp;example of UMF onfiguration names that use these conventions.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure 2: Example: UMF configuration naming conventions&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;img height=&quot;465&quot; alt=&quot;umf_config_name_examples&quot; src=&quot;./resources/umf_config_name_examples.jpg&quot; width=&quot;600&quot; />&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Notice the following points shown in Figure 2:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        All configurations of the same type are grouped together because the first part of the configuration name is the&#xD;
        configuration type&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        All configurations that support a specific context are grouped under the content name (“mdev” in this example)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The publish configurations for a specific configurations are easy to spot because the configuration name is in the&#xD;
        descriptive name&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The configuration to be used as the default configuration when constructing a process in a plug-in is easy to spot&#xD;
        because the owning plug-in name is in the descriptive name&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The unique identifier suffix is used to indicate the licensing level of the configurations (e.g., -ibm for&#xD;
        commercial content and -ibm_int for internal IBM content)&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h3>&#xD;
    UMF configuration project naming conventions&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    UMF configuration project naming convention: &lt;strong>configs[-&lt;/strong>&amp;lt;&lt;strong>descriptive&#xD;
    name&amp;gt;][-&amp;lt;source/licensing level&amp;gt;]&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Where:&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Descriptive name: This is optional (i.e., you may only have one tag group per licensing level).&amp;nbsp; If you use one,&#xD;
    the descriptive name should be a name that represents a specific set or category of configurations.&amp;nbsp; For example:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        mdev: Method Development&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        mdev.auth: Method Aurhoring (s sub set of method development)&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        mdev.meth_mgmt: Method Development Method Management&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Source/licensing level: Same as for plug-ins.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure&amp;nbsp;3 provides some examples of UMF&amp;nbsp;configuration project names that use these conventions.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure 3: Example: UMF configuration project naming conventions&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;img style=&quot;WIDTH: 682px; HEIGHT: 537px&quot; height=&quot;537&quot; alt=&quot;umf_config_proj_name_examples&quot;&#xD;
    src=&quot;./resources/umf_config_proj_name_examples.jpg&quot; width=&quot;600&quot; />&#xD;
&lt;/p>&lt;br />&#xD;
&lt;h3>&#xD;
    UMF tag group naming conventions&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    UMF tag group naming convention: &lt;strong>tags-&lt;/strong>&amp;lt;&lt;strong>descriptive name&amp;gt;[-&amp;lt;source/licensing&#xD;
    level&amp;gt;]&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Where:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Descriptive name: A name that represents a specific set or category of tags.&amp;nbsp; For example: mdev: Method&#xD;
        Development&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Source/licensing level: Same as for plug-ins.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    Figure&amp;nbsp;4 provides some examples of UMF&amp;nbsp;tag group names that use these conventions.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Figure 4: Example: UMF tag group naming conventions&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;img height=&quot;39&quot; alt=&quot;umf_tag_group_name_examples&quot; src=&quot;./resources/umf_tag_group_name_examples.jpg&quot;&#xD;
    width=&quot;124&quot; />&lt;br />&#xD;
    &amp;nbsp;&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
