<?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="-i-m_UCiyvP_of5odu9C2Bw"
    name="detailing_work_products,_F0wCwJklEd2Al9G_gP7uDg" guid="-i-m_UCiyvP_of5odu9C2Bw"
    changeDate="2008-10-13T06:05:13.890-0700" version="1.0.0">
  <mainDescription>&lt;p>&#xD;
    This guideline provides guidelines for detailing &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/work_product_826E4C22.html&quot;&#xD;
    guid=&quot;_H4JXwB_SEdq6CKKKq4D7YA&quot;>work product&lt;/a>s (&lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/artifact_F635D25.html&quot;&#xD;
    guid=&quot;_x7cUM9nmEdmO6L4XMImrsA&quot;>artifact&lt;/a>s, &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/outcome_797E7695.html&quot;&#xD;
    guid=&quot;_LNAAcB_iEdqAHrsQ7-jSbw&quot;>outcome&lt;/a>s and &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.default.uma_concept.base/guidances/termdefinitions/deliverable_BFE1A5A9.html&quot;&#xD;
    guid=&quot;_yFbWoNnmEdmO6L4XMImrsA&quot;>deliverable&lt;/a>s). For general detailing guidelines that are common to all method&#xD;
    elements, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/detailing_method_elements_general_B2500E20.html&quot;&#xD;
    guid=&quot;_jLqqIOFIEdumFeaOJSgmnQ&quot;>Guideline: Detailing Method Elements (General)&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p dir=&quot;ltr&quot;>&#xD;
    &lt;font size=&quot;4&quot;>Keep in mind the following guidelines when completing each of the&amp;nbsp;&lt;/font>work product-specific text&#xD;
    fields (for guidelines regarding the common fields, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.mdev.common.base/guidances/guidelines/detailing_common_method_element_fields_940D3CE0.html&quot;&#xD;
    guid=&quot;_zVLrkJZwEd2ireJkqESkdQ&quot;>Guideline: Detailing Common Method Element Fields&lt;/a>):&amp;nbsp;&amp;nbsp;&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;ul class=&quot;noindent&quot;>&#xD;
    &lt;li>&#xD;
        &lt;strong>Purpose&lt;/strong>: The Purpose field describes the reason for the method element.&amp;nbsp;For example, for a&#xD;
        Work Product:&amp;nbsp;&amp;nbsp; &#xD;
        &lt;ul>&#xD;
            &lt;li>&#xD;
                Why is the work product produced?&amp;nbsp;&#xD;
            &lt;/li>&#xD;
            &lt;li>&#xD;
                How will it be used?&lt;em>&amp;nbsp;&lt;/em>&amp;nbsp;&#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;
        Do not repeat text already stated in other fields, such as the brief description or the main description.&#xD;
    &lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;ul class=&quot;noindent&quot;>&#xD;
    &lt;li>&#xD;
        &lt;p style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;strong>Main description&lt;/strong>. This field is optional for work products.&amp;nbsp;It contains a detailed&#xD;
            description of the work product if the Brief description&amp;nbsp;and Purpose is insufficient.&amp;nbsp;If&#xD;
            the&amp;nbsp;work product&amp;nbsp;has significant state, include&amp;nbsp;a state machine (i.e., a description of the&#xD;
            states and their transitions) in the artifact's Main description.&#xD;
        &lt;/p>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;p style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;strong>Key Considerations&lt;/strong>: This field&amp;nbsp;is optional.&amp;nbsp; It contains useful material that does&#xD;
            not easily fit into any of the other sections, such as advice and guidance of a critical nature, as well as&#xD;
            warnings, cautions, pitfalls and dangers.&#xD;
        &lt;/p>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;p style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;strong>Impact of not having&lt;/strong>: List and briefly describe the consequences of not&amp;nbsp;producing this&#xD;
            work product. Consider this from the delivery practitioners’ point of view. If the work product was not&#xD;
            available, what would be the impact to the execution of the project? What information would the practitioners&#xD;
            not have that they need? Write a short description of the impact.&#xD;
        &lt;/p>&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Reason for not needing&lt;/strong>: List the conditions when the work product might not be needed, and why. Is&#xD;
        the information available somewhere else? Is it of secondary importance to other work products? Is the project&#xD;
        small enough that it is not relevant? Write a short description of the normal reasons why the work product may not&#xD;
        be needed.&lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Guidance&lt;/strong>: Guidance can be associated to a task to provide further details about the work product.&#xD;
        The type of guidance that is usually associated with a work product includes checklists, examples and&#xD;
        templates.&amp;nbsp;For information on these associations, see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../core.mdev.common.base/guidances/guidelines/defining_method_content_elements_21A491E3.html&quot;&#xD;
        guid=&quot;_XQqJkCAmEdy1y5bWsXfCCg&quot;>Guideline: Defining Method Content Elements&lt;/a>.&amp;nbsp;&lt;strong>&amp;nbsp;&lt;/strong>&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    For work-product-type-specific guidelines, see the following sections.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Detailing artifacts&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The following fields are artifact-specific:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Brief outline:&lt;/strong> This field is optional.&amp;nbsp;It describes the major sections or information topics&#xD;
        that are covered by the work product.&amp;nbsp;This information&amp;nbsp;should be generic,&amp;nbsp;in other words,&amp;nbsp;not&#xD;
        specific to any particular format or template.&lt;br />&#xD;
        &amp;nbsp;&amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Selected representation&lt;/strong>: This field is optional.&amp;nbsp;It is used when a particular representation&#xD;
        is decided on. For example, a particular company may mandate the use of a particular tool or format.&amp;nbsp;&lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Notation&lt;/strong>: This field is optional.&amp;nbsp;It describes any notations used by the work product. Either&#xD;
        &lt;strong>Brief outline&lt;/strong> or &lt;strong>Notation&lt;/strong> should be provided, or both [*** I got this last&#xD;
        sentence from the template, but I am not sure what&amp;nbsp;it means.&amp;nbsp; Should it be &quot;not both&quot;? ***]&amp;nbsp; This&#xD;
        field may also contain explanations of any diagrammatic or textual notations. Include notations that are important&#xD;
        or special terms, labels, headers, acronyms, etc. that are used in the artifact. Any items relating to how this is&#xD;
        implemented in a specific template should be included in the description for that template, not here. Note this&#xD;
        section should be general enough to apply regardless of the actual representation option selected, unless there are&#xD;
        multiple notations such as IDEF1X or UML, in which case an overview of each can be included (preferably as&#xD;
        contributions&amp;nbsp;from the related techniques).&lt;br />&#xD;
        &amp;nbsp;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Representation options&lt;/strong>: This field is optional.&amp;nbsp;Describe alternative representations for this&#xD;
        work product.&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h4>&#xD;
    Detailing deliverables&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    The following fields are deliverable-specific:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>External Description&lt;/strong>: This field is intended to be a description of the deliverable that the&#xD;
        client will read. It is usually copied into a Statement of Work or other agreement, or into sales and marketing&#xD;
        material with a client. The content of this field may require legal approval of some sort. Seek guidance from the&#xD;
        method authoring consultant. Keep to a description (what the deliverable is) rather than its use in an engagement.&#xD;
        Build on the purpose but differentiate between the what and the why of the deliverable. The description is about&#xD;
        what the deliverable is. The description must be understood by potential clients.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Packaging Guidance&lt;/strong>: This field is intended to give an overview of the notation for the&#xD;
        deliverable. For a root deliverable from which other will be derived, the packaging guidance should indicate the&#xD;
        preferred notations. Note the plural here in that there may be several notations. The packaging guidance should&#xD;
        provide a synopsis of them. For derived deliverables, variability can add details to notation and they can become&#xD;
        more focused. The packaging guidance must account for the availability (or not) of a complete set of input work&#xD;
        products. Depending on the configuration tailoring on a particular engagement, all input work product may not be&#xD;
        available. Be aware of the purpose and governance level of the deliverable being defined when outlining notation.&#xD;
        [*** Describing how the inputs are assembled into a deliverable including what particular sections may be relevant&#xD;
        and what the expected state of those inputs should be along. Explicit guidelines on the formatting may be better&#xD;
        included via a customization for that project of standard guidelines for a project that applies to all deliverables&#xD;
        as defined in the agreement. ***]&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Deliverable Parts:&lt;/strong>&amp;nbsp;Identify the work products that will be used to construct the deliverable.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;h3>&#xD;
    Detailing outcomes&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The following fields are outcome-specific:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        None at this time.&#xD;
    &lt;/li>&#xD;
&lt;/ul></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
