blob: 8c426112134d505477d9321dc2ea28c02f57556a [file] [log] [blame]
<?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.5/uma.ecore"
xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf"
epf:version="1.5.0" xmi:id="-JviMIao63C7w9C8W6iPJrw"
name="new_example,_t4QdAMNqEdu2IdAIaWZyAw" guid="-JviMIao63C7w9C8W6iPJrw" authors="Chris Sibbald"
changeDate="2008-09-03T17:28:43.928-0700" version="7.2.0">
<mainDescription>&lt;h1>&#xD;
Introduction&#xD;
&lt;/h1>&#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;h2>&#xD;
Early inception&#xD;
&lt;/h2>&#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;h2>&#xD;
Elaboration&#xD;
&lt;/h2>&#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;h1>&#xD;
Summary&#xD;
&lt;/h1>&#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>