<?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" xmi:id="-BQLZ5GRUNrMdU6XeZAfe9Q" name="use_case,_KudM0NcJEdqz_d2XWoVt6Q" guid="-BQLZ5GRUNrMdU6XeZAfe9Q" changeDate="2007-03-30T23:45:40.660+0330" version="1.0.0">
  <mainDescription>&lt;h1>&#xD;
    Explanation&#xD;
&lt;/h1>&#xD;
&lt;p>&#xD;
    A use case describes the interactions between one of more &lt;a class=&quot;elementLink&quot; href=&quot;./../../../openup/guidances/concepts/actor_411726C.html&quot; guid=&quot;_zGqO0MDpEduTGJ8i4u8TMw&quot;>Actor&lt;/a>s and the system in order to provide an observable result of value for the&#xD;
    initiating actor.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The functionality of a system is defined by different use cases, each of which represents a specific goal (to obtain&#xD;
    the observable result of value) for a particular actor.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    In an automated teller machine shown in Figure 1, the Bank Customer can withdraw cash from an account, transfer&#xD;
    funds between accounts, or deposit funds to an account. These correspond to specific goals that the actor has in using&#xD;
    the system.&#xD;
&lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
        &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
                &lt;p class=&quot;picturetext&quot;>&#xD;
                    Figure 1: ATM use case example.&#xD;
                &lt;/p>&#xD;
            &lt;/blockquote>&#xD;
        &lt;/blockquote>&#xD;
    &lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&#xD;
&#xD;
&lt;p class=&quot;picturecenter&quot; align=&quot;center&quot;>&#xD;
     &lt;img height=&quot;321&quot; alt=&quot;automated teller machine and actors&quot; src=&quot;./resources/im_uc.gif&quot; width=&quot;456&quot; />&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Each use case is associated with a goal of one of the actors. The collection of use cases constitutes all the possible&#xD;
    ways of using the system. You should be able to determine the goal of a use case simply by observing its name.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    A use case describes the interactions between the actor(s) and the system in the form of a dialog between the actor(s)&#xD;
    and the system, structured as follows:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
    &lt;li>&#xD;
        The actor &amp;lt;&amp;lt;does something&amp;gt;&amp;gt;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The system &amp;lt;&amp;lt;does something in response&amp;gt;&amp;gt;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The actor &amp;lt;&amp;lt;does something else&amp;gt;&amp;gt;&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The system…&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;p>&#xD;
    Each dialog of this form is called a “Flow of Events”.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Because there are many flows of events possible for achieving the goal (for example, the flow may differ depending upon&#xD;
    specific input from the actor), and there are situations in which the goal cannot be achieved (for example, a required&#xD;
    network connection is currently unavailable), each use case will contain several flows, including one “Basic Flow of&#xD;
    Events” and several “Alternative Flows”.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The Basic Flow of Events specifies the interactions between the actor(s) and the system for the ideal case, where&#xD;
    everything goes as planned, and the actor’s goal (the observable result of value) is met.  The basic flow&#xD;
    represents the main capability provided by the system for this use case.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    As the name implies, Alternative Flows specify alternative interactions associated with the same goal.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Closely related to use cases is the concept of a scenario.  A scenario is a &lt;b>specific&lt;/b> flow of&#xD;
    events, for a &lt;b>specific&lt;/b> set of inputs to the system, states of the system, and states of the system’s&#xD;
    environment.  Scenarios are closely related to test cases.&#xD;
&lt;/p>&#xD;
&lt;h1>&#xD;
    Properties of Use Cases&#xD;
&lt;/h1>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;Name&quot; name=&quot;Name&quot;>Name&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    Each use case should have a name that clearly describes the main goal of the use case. The name may have to be several&#xD;
    words long to be understood. Typically the name is a verb phrase, for example: Withdraw Cash. &lt;br/>&#xD;
	&lt;b>Note:&lt;/b> No two use cases can&#xD;
    have the same name.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;Brief Description&quot; name=&quot;Brief Description&quot;>Brief Description&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    The brief description of the use case should reflect its purpose. &#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;XE_use_case__flow_of_events&quot; name=&quot;XE_use_case__flow_of_events&quot;>&lt;/a>&lt;a id=&quot;XE_flow_of_events__guidelines_for&quot; name=&quot;XE_flow_of_events__guidelines_for&quot;>&lt;/a>&lt;a id=&quot;Flow of Events - Contents&quot; name=&quot;Flow of Events - Contents&quot;>Flow of&#xD;
    Events -- Contents&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    The &lt;b>flow of events&lt;/b> should describe the interactions between the actor(s) and the system clearly enough for an&#xD;
    outsider to easily understand. The flow of events should represent &lt;i>what&lt;/i> the system does, not &lt;i>how&lt;/i> the&#xD;
    system is design to perform the required behavior.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Follow these guidelines for the contents of the flow of events:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Describe how the use case starts and ends.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Describe what data is exchanged between the actor and the use case.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Do not describe the details of the user interface, unless it is necessary to understand the behavior of the system.&#xD;
        Specifying user interface details too early will limit design options. &#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Describe the flow of events, not only the functionality. To enforce this, start every action with &quot;When the actor&#xD;
        ... &quot;.  &#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Avoid vague terminology.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Detail the flow of events. Specify what happens when, for each action. Remember this text will be used to identify&#xD;
        test cases.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    If you have used certain terms in other use cases, be sure to use the exact same terms in this use case, and&#xD;
    that the meaning of the terms is consistent. To manage common terms, put them in a &lt;a class=&quot;elementLink&quot; href=&quot;./../../../openup/workproducts/glossary_5D300778.html&quot; guid=&quot;_Wn7HcNcEEdqz_d2XWoVt6Q&quot;>Glossary&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;Flow of Events - Structure&quot; name=&quot;Flow of Events - Structure&quot;>Flow of Events -- Structure&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    The two main parts of the flow of events are &lt;b>basic flow of events&lt;/b> and &lt;a id=&quot;XE_flow_of_events__alternative_flow&quot; name=&quot;XE_flow_of_events__alternative_flow&quot;>&lt;/a>&lt;b>alternative flows of&#xD;
    events&lt;/b>. The basic flow of events should cover what &quot;normally&quot; happens when the use case is performed. The&#xD;
    alternative flows of events cover behavior of optional or exceptional character in relation to the normal behavior, and&#xD;
    also variations of the normal behavior. You can think of the alternative flows of events as detours from the basic flow&#xD;
    of events, some of which will return to the basic flow of events and some of which will end the execution of the use&#xD;
    case.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The straight arrow in Figure 2 represents the basic flow of events, and the curves represent alternative paths in&#xD;
    relation to the normal. Some alternative paths return to the basic flow of events, whereas others end the use&#xD;
    case.&#xD;
&lt;/p>&#xD;
&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
        &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;p class=&quot;picturetext&quot;>&#xD;
                Figure 2: Typical structure of a use case flow of events&#xD;
            &lt;/p>&#xD;
        &lt;/blockquote>&#xD;
    &lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&#xD;
&#xD;
&lt;p align=&quot;center&quot;>&#xD;
    &lt;img height=&quot;212&quot; alt=&quot;Arrows representing flow of events&quot; src=&quot;./resources/ucstrct.gif&quot; width=&quot;231&quot; />&#xD;
&lt;/p>&#xD;
&#xD;
&lt;p>&#xD;
    To clarify where an alternative flow of events fits in the structure, you need to describe the following for each&#xD;
    detour to the basic flow of events:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        Where the alternative flow can be inserted in the basic flow of events&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The condition that needs to be fulfilled for the alternative behavior to start&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        How and where the basic flow of events is resumed, or how the use case ends&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p>&#xD;
    It might be tempting, if the alternative flow of events is very simple, to just describe it in the basic flow of events&#xD;
    section (using some informal &quot;if-then-else&quot; construct). This should be avoided. Too many alternatives will make the&#xD;
    normal behavior difficult to see. Also, including alternative paths in the basic flow of events section will make the&#xD;
    text more pseudo-code like and harder to read.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Both the basic and alternative flows may be further structured into subflows. In doing this, your main goal should be&#xD;
    readability of the text. A guideline is that a subflow should be a segment of behavior within the use case that has a&#xD;
    clear purpose, and is &quot;atomic&quot; in the sense that you do either all or none of the actions described. &#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;XE_use_case__flow_of_events&quot; name=&quot;XE_use_case__flow_of_events&quot;>&lt;/a>&lt;a id=&quot;XE_flow_of_events__guidelines_for&quot; name=&quot;XE_flow_of_events__guidelines_for&quot;>&lt;/a>&lt;a id=&quot;Special Requirements&quot; name=&quot;Special Requirements&quot;>Special&#xD;
    Requirements&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    In the Special Requirements of a use case, you describe all the requirements on the use case that are not covered by&#xD;
    the flow of events. These are typically non-functional requirements that will influence the design model. See also the&#xD;
    discussion on non-functional requirements in &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/concepts/requirements_8006414F.html&quot; guid=&quot;_0Wh-sMlgEdmt3adZL5Dmdw&quot;>Concept: Requirements&lt;/a>. &#xD;
&lt;/p>&#xD;
&lt;h2>&#xD;
    &lt;a id=&quot;XE_postcondition__guidelines_for&quot; name=&quot;XE_postcondition__guidelines_for&quot;>&lt;/a>&lt;a id=&quot;XE_precondition__guidelines_for&quot; name=&quot;XE_precondition__guidelines_for&quot;>&lt;/a>&lt;a id=&quot;preconditions and Postconditions&quot; name=&quot;preconditions and Postconditions&quot;>Preconditions and Post-conditions&lt;/a>&#xD;
&lt;/h2>&#xD;
&lt;p>&#xD;
    A precondition is the state of the system and its surroundings that is required before the use case can be&#xD;
    started. Post-Conditions are the states the system can be in after the use case has ended. It can&#xD;
    be helpful to use the concepts of precondition and post-condition to clarify how the flow of events starts&#xD;
    and ends. However, only use them if the audience for the description of the use case agrees that it is helpful.&#xD;
	Figure 3 shows an example.&#xD;
&lt;/p>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
    &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
        &lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
            &lt;p>&#xD;
                Figure 3: Illustration of preconditions and resulting post-conditions&#xD;
            &lt;/p>&#xD;
        &lt;/blockquote>&#xD;
    &lt;/blockquote>&#xD;
&lt;/blockquote>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p align=&quot;center&quot;>&#xD;
    &lt;img height=&quot;278&quot; alt=&quot;examples marked with circles on arrow diagram&quot; src=&quot;./resources/ucprepst.gif&quot; width=&quot;344&quot; />&#xD;
&lt;/p>&lt;br class=&quot;picturetext&quot; />&#xD;
&lt;br />&#xD;
    &lt;p class=&quot;exampleheading&quot;>&#xD;
        Examples&#xD;
    &lt;/p>&#xD;
    &lt;p class=&quot;example&quot;>&#xD;
        &lt;b>A precondition for the use case Cash Withdrawal in the ATM machine:&lt;/b> The customer has a personally&#xD;
        issued card that fits in the card reader, has been issued a PIN number, and is registered with the banking system.&#xD;
    &lt;/p>&#xD;
    &lt;p class=&quot;example&quot;>&#xD;
        &lt;b>A post-condition for the use case Cash Withdrawal in the ATM machine:&lt;/b> At the end of the use case,&#xD;
        all account and transaction logs are balanced, communication with the banking system is reinitialized, and the card&#xD;
        is returned to the customer.  &#xD;
    &lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;h1>&#xD;
    Level of detail necessary in use cases&#xD;
&lt;/h1>&#xD;
&lt;p>&#xD;
    There will often be use cases in your model that are so simple that they do not need a detailed structured description&#xD;
    of the use case (that is, a step-by-step outline is quite enough). The criteria for making this decision is that you don't see&#xD;
    disagreement among different readers on what the use case means, and that designers and testers are comfortable with&#xD;
    the level of detail provided by the step-by-step format. Examples are use cases that describe simple data entry or retrieval&#xD;
    in your system.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    For more information on possible formats and the level of detail captured for each use case see &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/guidelines/use_case_formats_FF4AE425.html&quot; guid=&quot;_qq0GMAXkEduj_7BEUj1JfQ&quot;>Guideline: Use Case Formats&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h1>&#xD;
    Example &lt;a id=&quot;The Scope of a Use Case&quot; name=&quot;The Scope of a Use Case&quot;>Use Case&lt;/a>&#xD;
&lt;/h1>&#xD;
&lt;p>&#xD;
    For an example of a completed use-case specification see &lt;a class=&quot;elementLinkWithType&quot; href=&quot;./../../../openup/guidances/examples/use_case_spec_CD5DD9B1.html&quot; guid=&quot;_JLOiIMNvEdu2IdAIaWZyAw&quot;>Example: Use-Case Specification&lt;/a>.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
