<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:GuidanceDescription 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="-JviMIao63C7w9C8W6iPJrw" name="new_example,_t4QdAMNqEdu2IdAIaWZyAw" guid="-JviMIao63C7w9C8W6iPJrw" authors="Chris Sibbald" changeDate="2008-09-03T05:28:43.000-0700" version="7.2.0">
  <mainDescription>&lt;h3>&#xD;
    Introduction&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    This example illustrates how the use-case model and associated use-case specification will evolve during the lifecycle.&#xD;
    It shows the state of the use case model at two points in the lifecycle: early inception and towards the end of&#xD;
    elaboration. The purpose is to illustrate how one would identify, outline and detail requirements so as to maximize&#xD;
    stakeholder value and minimize risk early in the project, as well as to minimize re-work later.&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The example uses an Automated Teller Machine as the example system, because it is familiar to most people. This&#xD;
    familiarity simplifies understanding the principles without getting lost in domain specific terminology.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Early inception&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Assume you have just started on the project as the Analyst. You have identified the key stakeholders and met with them&#xD;
    to discuss their needs. During your meetings, you identified a number of key actors, use cases, and supporting&#xD;
    requirements for the ATM system. You captured the use cases and actors, with names and brief descriptions only, in the&#xD;
    use-case model. An example of this work is given in the document &lt;strong>ATM UC Model Inception&lt;/strong>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Prior to committing significant time to detailing these use cases now, you recognize that a &quot;breadth before depth&quot;&#xD;
    approach can save you valuable time and permit you to identify the highest value and highest risk items so that you can&#xD;
    concentrate on those first.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    You hold a brainstorming session with the stakeholders and outline the basic flow of each of the main use cases. As you&#xD;
    are working through, you may identify some additional alternative flows. Fight the urge to &quot;dive-in&quot; to the details on&#xD;
    these alternative flows at this point, simply list them and come back later when you have a better understanding of the&#xD;
    &quot;big picture&quot;.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Examples of the notes you took during this exercise are attached (&lt;strong>Withdraw Cash Outline&lt;/strong>,&#xD;
    &lt;strong>Deposit Funds Outline&lt;/strong> and &lt;strong>Transfer&lt;/strong> &lt;strong>Funds Outline&lt;/strong>).&lt;br />&#xD;
    &lt;b>Note:&lt;/b> the choice of font is intentional to illustrate that these are notes, not formal documents.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Reviewing your notes, you recognize that there is some behavior that is common to most of the use cases, namely the&#xD;
    steps required to validate the Bank Customer. Factoring this behavior out into an &amp;lt;&amp;lt;included&amp;gt;&amp;gt; use case&#xD;
    will simplify communications, iteration planning, and maintenance.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    You update the use case model accordingly: &lt;strong>ATM UC Model Elaboration&lt;/strong>.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Elaboration&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    With a better understanding of the system, you can now prioritize your effort to maximize value and minimize risk. You&#xD;
    start by detailing the common behavior captured in the use case: Validate User. This use case captures key&#xD;
    architectural requirements that will exercise a significant portion of the system (communications with the Bank, card&#xD;
    reader interface, and so on). Implementing this one key scenario will go a long way to reducing risk.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    An example of the Validate User use-case specification is attached: &lt;strong>Use Case Spec - Validate User.&lt;/strong>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Note that there may still be some un-answered questions, but that's OK. Capture these directly in the use-case&#xD;
    specification and get them answered (see Section 5.6 of the &lt;strong>Validate User UC Specification&lt;/strong>, for an&#xD;
    example).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Continuing with another architecturally significant thread, you detail the basic flow and some key alternative flows of&#xD;
    the use case: Withdraw Cash. You know that if the team can implement this, much of the other functionality will be low&#xD;
    risk.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    An example of the Withdraw Cash use-case specification is attached:&amp;nbsp;&lt;strong>Use Case Spec - Withdraw&#xD;
    Cash&lt;/strong>.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Summary&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    By following a breadth before depth approach to outlining and detailing use cases, you can make better decisions on&#xD;
    priorities. Start by identifying actors. Then for each actor, ask &quot;What is the main purpose this actor would like to&#xD;
    use the system?&quot;. This will lead to the identification of the use cases. Capture the actors and use cases in the&#xD;
    use-case model along with a brief description.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Prioritize the use cases, and then draft the main scenario or basic flow. As you are working through this you may&#xD;
    identify alternate flows (what can go wrong, what options are available, and so on). Capture these, along with a brief&#xD;
    description.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Review the use-case model and reprioritize and assess risk. For the high priority (based on value to the stakeholders)&#xD;
    or high risk use cases,&amp;nbsp;detail the main scenario and the critical alternate flows.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    If you follow this approach, you will increase the likelihood of delivering value early, minimizing risk, and&#xD;
    minimizing re-work.&lt;br />&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:GuidanceDescription>
