blob: 7d47b6045d5c035ba34518b45ab362ed7ab8402b [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.4/uma.ecore"
xmlns:rmc="http://www.ibm.com/rmc" xmlns:epf="http://www.eclipse.org/epf"
epf:version="1.2.0" xmi:id="-JviMIao63C7w9C8W6iPJrw"
name="new_example,_t4QdAMNqEdu2IdAIaWZyAw" guid="-JviMIao63C7w9C8W6iPJrw" authors="Chris Sibbald"
changeDate="2007-02-23T10:23:26.346-0800">
<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&#xD;
lifecycle.&amp;nbsp; It shows the state of the use case model at two points in the lifecycle: early inception and towards&#xD;
the end of elaboration.&amp;nbsp; The purpose is to illustrate how one would&amp;nbsp;&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&amp;nbsp;&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.&amp;nbsp; This&#xD;
familiarity&amp;nbsp;simplifies understanding the principles without&amp;nbsp;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.&amp;nbsp; You have identified the key stakeholders and met with&#xD;
them to discuss their needs.&amp;nbsp; During your meetings, you identified a number of key actors,&amp;nbsp;use cases and&#xD;
supporting requirements for the ATM system.&amp;nbsp; You captured the use cases and actors, with names and brief&#xD;
descriptions only, in the use-case model.&amp;nbsp; An example of this work is given in the document &lt;a href=&quot;./resources/ATM%20UC%20Model%20Inception.doc&quot; target=&quot;_blank&quot;>ATM UC Model Inception.doc&lt;/a>.&#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/or highest risk items so 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.&amp;nbsp;&#xD;
As you are working through, you may identify some additional alternative flows.&amp;nbsp; Fight the urge to “dive-in” to&#xD;
the details on these alternative flows at this point, simply list them and come back later when you have a better&#xD;
understanding of the “big picture”.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Examples of the notes you took during this exercise are attached below.&amp;nbsp;(Note the choice of font is intentional to&#xD;
illustrate that these are notes, not formal documents).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;a href=&quot;./resources/Withdraw%20Cash%20Outline.doc&quot; target=&quot;_blank&quot;>Withdraw Cash Outline.doc&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;a href=&quot;./resources/Deposit%20Funds%20Outline.doc&quot; target=&quot;_blank&quot;>Deposit Funds Outline.doc&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;a href=&quot;./resources/Transfer%20Funds%20Outline.doc&quot; target=&quot;_blank&quot;>Transfer Funds Outline.doc&lt;/a>&#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.&amp;nbsp; Factoring this behavior out into an &amp;lt;&amp;lt;included&amp;gt;&amp;gt; use&#xD;
case will simplify communications, iteration planning,&amp;nbsp;and maintenance.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
You update the use case model accordingly: &lt;a href=&quot;./resources/ATM%20UC%20Model%20Elaboration.doc&quot; target=&quot;_blank&quot;>ATM&#xD;
UC Model Elaboration.doc&lt;/a>.&#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&#xD;
risk.&amp;nbsp; You start by detailing the common behavior captured in the use case: Validate User.&amp;nbsp; This use case&#xD;
captures key architectural requirements that will exercise a significant portion of the system (communications with the&#xD;
Bank, card reader interface, etc.).&amp;nbsp; 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 Specification is given below:&lt;br />&#xD;
&lt;br />&#xD;
&lt;a href=&quot;./resources/Use%20Case%20Spec%20-%20Validate%20User.doc&quot; target=&quot;_blank&quot;>Use Case Spec - Validate&#xD;
User.doc&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Note that there may still be some un-answered questions, but that’s OK.&amp;nbsp; Capture these directly in the use-case&#xD;
specification and get them answered (see Section 5.6 of the Validate User UC Specification, above for an example).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Continuing with another architecturally significant thread, you detail the basic flow and some key alternate flows of&#xD;
the use case: Withdraw Cash.&amp;nbsp; You know that if the team can implement this, much of the other functionality will&#xD;
be low risk.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
An example of the Withdraw Cash Specification is given below:&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;a href=&quot;./resources/Use%20Case%20Spec%20-%20Withdraw%20Cash.doc&quot; target=&quot;_blank&quot;>Use Case Spec - Withdraw Cash.doc&lt;/a>&#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 one can make better decisions on&#xD;
priorities.&amp;nbsp; Start by identifying actors.&amp;nbsp; Then for each actor, ask “What is the main purpose this actor&#xD;
would like to use the system?”.&amp;nbsp; This will lead to the identification of the use cases.&amp;nbsp; Capture the actors&#xD;
and use cases in the 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.&amp;nbsp; As you are working through this you may&#xD;
identify alternate flows (what can go wrong, what options are available, etc.).&amp;nbsp; 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.&amp;nbsp; For the high priority (based on value to the&#xD;
stakeholders) and/or high risk use cases 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;
&amp;nbsp;&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:GuidanceDescription>