<?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.6/uma.ecore" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmi:id="_S8KCcMP2EdmWKcx6ixEiwg" name="analysis_mechanism,_0gvqoMlgEdmt3adZL5Dmdw" guid="_S8KCcMP2EdmWKcx6ixEiwg" changeDate="2008-02-09T01:19:23.000-0800" version="1.0.0">
  <mainDescription>&lt;p>&#xD;
    An Analysis Mechanism is a conceptual representation of an &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.tech.common.extend_supp/guidances/concepts/arch_mechanism_2932DFB6.html&quot;&#xD;
    guid=&quot;_mzxI0A4LEduibvKwrGxWxA&quot;>Architectural Mechanism&lt;/a>. Over time, Analysis Mechanisms are refined into &lt;a&#xD;
    class=&quot;elementLink&quot; href=&quot;./../../../core.tech.common.extend_supp/guidances/concepts/design_mechanism_CE197B4E.html&quot;&#xD;
    guid=&quot;_w2ACwA4LEduibvKwrGxWxA&quot;>Design Mechanism&lt;/a>s&amp;nbsp;and, later, into &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.tech.common.extend_supp/guidances/concepts/implementation_mechanism_C92E670B.html&quot;&#xD;
    guid=&quot;_0LcUkA4LEduibvKwrGxWxA&quot;>Implementation Mechanism&lt;/a>s.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Analysis Mechanisms&amp;nbsp;allow the developer to focus on understanding the requirements without getting distracted by&#xD;
    the specifics of a complex implementation. They are a way of abstracting away the complexity of the solution, so people&#xD;
    can better comprehend the problem.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Analysis Mechanisms are described in simple terms:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Name:&lt;/strong> Identifies the mechanism.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Basic attributes:&lt;/strong> Define the requirements of the mechanism.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    You can identify Analysis Mechanisms top-down, from previous knowledge, or bottom-up, meaning that you discover them as&#xD;
    you proceed.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    In the top-down mode, you are guided by experience -- you know that certain problems are present in the domain and will&#xD;
    require certain kinds of solutions. Examples of common architectural problems that might be expressed as mechanisms&#xD;
    during analysis are: persistence, transaction management, fault management, messaging, and inference engines. The&#xD;
    common aspect of all of these is that each is a general capability of a broad class of systems, and each provides&#xD;
    functionality that interacts with or supports the basic application functionality. The Analysis Mechanisms support&#xD;
    capabilities required in the basic functional requirements of the system, regardless of the platform that it is&#xD;
    deployed upon or the implementation language. Analysis Mechanisms also can be designed and implemented in different&#xD;
    ways. Generally, there will be more than one design mechanism that corresponds with each Analysis Mechanism. There may&#xD;
    also be more than one way of implementing each design mechanism.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The bottom-up approach is where Analysis Mechanisms ultimately originate. They are created as the you see, perhaps&#xD;
    faintly at first, a common theme emerging from a set of solutions to various problems. For example: There is a need to&#xD;
    provide a way for elements in different threads to synchronize their clocks, and there is a need for a common way of&#xD;
    allocating resources. &lt;a class=&quot;elementLink&quot;&#xD;
    href=&quot;./../../../core.tech.common.extend_supp/guidances/concepts/analysis_mechanism_8369C159.html&quot;&#xD;
    guid=&quot;_0gvqoMlgEdmt3adZL5Dmdw&quot;>Analysis Mechanism&lt;/a>s, which simplify the language of analysis, emerge from these&#xD;
    patterns.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Identifying an Analysis Mechanism means that you identify a common, perhaps implicit&amp;nbsp;subproblem, and you give it a&#xD;
    name. Initially, the name might be all that exists. For example, the system will require a persistence&#xD;
    mechanism.&amp;nbsp;Ultimately, this mechanism will be implemented through the collaboration of various classes, some of&#xD;
    which do not deliver application functionality directly, but exist only to support it. Very often these support classes&#xD;
    are located in the middle or lower layers of a layered architecture, thereby providing a common support service to all&#xD;
    application-level classes.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    If the subproblem that you identify is common enough, perhaps a pattern exists from which the mechanism can be&#xD;
    instantiated, probably by binding existing classes and implementing new ones, as required by the pattern. An Analysis&#xD;
    Mechanism produced this way will be abstract, and it will require further refinement throughout design and&#xD;
    implementation work.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    You can see examples of how Architectural Mechanisms can be represented in &lt;a class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../core.tech.common.extend_supp/guidances/examples/architectural_mechanism_attributes_B0ECA2F7.html&quot;&#xD;
    guid=&quot;_eQ_s8Om5Edupia_tZIXEqg&quot;>Example: Architectural Mechanism Attributes&lt;/a>.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
