blob: 43ac08275e99a6591f5310f1f56a6ed34f7e0c8e [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:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-JviMIao63C7w9C8W6iPJrw"
name="new_example,_t4QdAMNqEdu2IdAIaWZyAw" guid="-JviMIao63C7w9C8W6iPJrw" authors="Chris Sibbald"
changeDate="2007-07-20T13:55:59.251-0700">
<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 &lt;a class=&quot;elementLink&quot; href=&quot;./../../../openup/tasks/find_and_outline_requirements_90D272B9.html&quot; guid=&quot;_P9cMUPV_EdmdHa9MmVPgqQ&quot;>Find and Outline Requirements&lt;/a> and &lt;a class=&quot;elementLink&quot; href=&quot;./../../../openup/tasks/detail_requirements_9747F71E.html&quot; guid=&quot;_0e1mIMlgEdmt3adZL5Dmdw&quot;>Detail Requirements&lt;/a> so as to maximize stakeholder value and minimize risk early in&#xD;
the project, as well as to minimize re-work later.&#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 “breadth before depth”&#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 “dive-in” 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;
“big picture”.&#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 “What is the main purpose this actor would like to&#xD;
use the system?”. 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>
<attachments>resources/atm_uc_model_inception.doc|resources/withdraw_cash_outline.doc|resources/deposit_funds_outline.doc|resources/transfer_funds_outline.doc|resources/atm_uc_model_elaboration.doc|resources/use_case_spec_validate_user.doc|resources/use_case_spec_withdraw_cash.doc</attachments>
</org.eclipse.epf.uma:GuidanceDescription>