<?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.4/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.2.0" xmlns:rmc="http://www.ibm.com/rmc"
    rmc:version="7.2.0" xmi:id="-zfl87vJBFdinDB02ArLXOQ"
    name="new_concept,_HZGFsKrPEdu6T6WyNqBzqQ" guid="-zfl87vJBFdinDB02ArLXOQ" changeDate="2008-02-14T08:48:12.640-0500"
    version="7.2.0">
  <mainDescription>&lt;h3 align=&quot;left&quot;>&#xD;
    Modeling Components&#xD;
&lt;/h3>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    The UML component is a modeling construct that provides the following capabilities:&#xD;
&lt;/p>&#xD;
&lt;div align=&quot;left&quot;>&#xD;
    &lt;ul>&#xD;
        &lt;li>&#xD;
            Group classes to define a larger granularity part of a system&#xD;
        &lt;/li>&#xD;
        &lt;li>&#xD;
            Separate the visible interfaces from internal implementation&#xD;
        &lt;/li>&#xD;
        &lt;li>&#xD;
            Execute instances run-time&#xD;
        &lt;/li>&#xD;
    &lt;/ul>&#xD;
&lt;/div>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    A component includes &lt;strong>provided&lt;/strong> and &lt;strong>required&lt;/strong> interfaces that form the basis for wiring&#xD;
    components together. A &lt;strong>provided interface&lt;/strong> is one that is either implemented directly by the component&#xD;
    or one of its realizing classes or subcomponents, or it is the type of a provided port of the component. A&#xD;
    &lt;strong>required interface&lt;/strong> is designated by a usage dependency of the component or one of its realizing&#xD;
    classes or subcomponents, or it is the type of a required port.&#xD;
&lt;/p>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    A component has an external view (or &lt;em>black box&lt;/em> view) through its publicly visible properties and operations&#xD;
    .Optionally, a behavior such as a protocol state machine may be attached to an interface, a port, and the component&#xD;
    itself to define the external view more precisely by making dynamic constraints in the sequence of operation calls&#xD;
    explicit. The wiring between components in a system or other context can be structurally defined by using dependencies&#xD;
    between component interfaces (typically on component diagrams).&#xD;
&lt;/p>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    Optionally, you can make a more detailed specification of the structural collaboration by using parts and connectors in&#xD;
    composite structures to specify the role or instance-level collaboration between components. That is the component's&#xD;
    internal view (or &lt;em>white-box&lt;/em> view) through its private properties and realizing classes or subcomponents. This&#xD;
    view shows how the external behavior is realized internally. The mapping between external and internal views is by&#xD;
    dependencies on components diagrams or delegation connectors to internal parts on composite structure diagrams.&#xD;
&lt;/p>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    A number of UML standard stereotypes exist that apply to components, including &amp;lt;&amp;lt;subsystem&amp;gt;&amp;gt; to model&#xD;
    large-scale components, and &amp;lt;&amp;lt;specification&amp;gt;&amp;gt; and &amp;lt;&amp;lt;realization&amp;gt;&amp;gt; to model components with&#xD;
    distinct specification and realization definitions, where one specification may have multiple realizations.&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    The recommendation is to&amp;nbsp;use components as the representation for design subsystems.&#xD;
&lt;/p>&#xD;
&lt;h3 align=&quot;left&quot;>&#xD;
    UML Definitions -- A History&#xD;
&lt;/h3>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    The definition of &lt;em>component&lt;/em> with the UML has changed over time with the release of different versions. The&#xD;
    version of UML you use may be constrained by the capabilities of the modeling tools you use. That is why the&#xD;
    definitions from 1.3 to 2.0 are provided here.&#xD;
&lt;/p>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    UML 2.0 defined &lt;em>component&lt;/em> as the following:&#xD;
&lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;blockquote>&#xD;
        &lt;p align=&quot;left&quot;>&#xD;
            ...a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its&#xD;
            environment.&#xD;
        &lt;/p>&#xD;
        &lt;p align=&quot;left&quot;>&#xD;
            A component defines its behavior in terms of provided and required interfaces. As such, a component serves as a&#xD;
            type whose conformance is defined by these provided and required interfaces (encompassing both their static as&#xD;
            well as dynamic semantics).&#xD;
        &lt;/p>&#xD;
    &lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;p align=&quot;left&quot;>&#xD;
    UML 1.5 defined &lt;em>component&lt;/em> as the following:&#xD;
&lt;/p>&#xD;
&lt;blockquote>&#xD;
    &lt;blockquote>&#xD;
        &lt;div align=&quot;left&quot;>&#xD;
            A modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of&#xD;
            interfaces. A component is typically specified by one or more classes or subcomponents that reside on it and&#xD;
            may be implemented by one or more artifacts (e.g., binary, executable, or script files).&#xD;
        &lt;/div>&#xD;
        &lt;div align=&quot;left&quot;>&#xD;
            &lt;p>&#xD;
                In UML 1.3 and earlier versions of the UML, the component notation was used to represent files in the&#xD;
                implementation. Files are no longer considered components by the latest UML definitions. However, many&#xD;
                tools and UML profiles still use the component notation to represent files.&#xD;
            &lt;/p>&#xD;
            &lt;p>&#xD;
                &lt;br />&#xD;
                &lt;br />&#xD;
                &amp;nbsp;&#xD;
            &lt;/p>&#xD;
        &lt;/div>&#xD;
    &lt;/blockquote>&#xD;
&lt;/blockquote></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
