Writing use cases
Today I wanted to start writing the detailed use cases after having sketched most of the wireframe. I’ve been doing my usual research and here are the interesting documents I found for ‘use case’:
- Wikipedia Use Cases
- Writing Effective Use Cases (Alistair Cockburn)
- As for any first version of a product, no matter how much I believe in its success, I prefer investing the least time possible when starting and instead focus on getting it built. When the application prooves to be successful, a complete rebuild can be made, inflicting a higher cost than just upgrading it, but that’s negligeable since it would pay for itself.
- I don’t have a complete knowledge of UML to say that it would be a perfectly solid one. I’d rather concentrate on learning more about it instead of playing with it.
Here is a sample of the first 3 use cases I wrote.
<usercases>
<usecase>
<name>Use Case 1</name>
<description>Register User</description>
<sitting>Instant</sitting>
<primaryactor>User</primaryactor>
<scope>System, Beanstream API</scope>
<level>User goal</level>
<stakeholders>
<stakeholder>User</stakeholder>
<interest>Getting a membership access</interest>
<stakeholder>System</stakeholder>
<interest>Saving all valid user data and creating account</interest>
<stakeholder>Company</stakeholder>
<interest>Getting paid</interest>
</stakeholders>
<minimalguarantee>Sufficient validation to detect wrong inputs and failed payments</minimalguarantee>
<successguarantee>Beanstream API has acknowledged the purchase, the user's account is created</successguarantee>
<scenario>
<step>User selects membership plan</step>
<step>System gets billing information from user</step>
<step>System sends data to Beanstream API</step>
<step>Beanstream API bills user</step>
<step>System creates user account</step>
<step>System writes cookie and session for user</step>
<step>System forwards user to account</step>
</scenario>
<extensions>
<extension>
<extends>2</extends>
<xcase>User enters invalid billing information</xcase>
<step>System alerts user of the error(s)</step>
<step>System gets new billing information from user</step>
</extension>
<extension>
<extends>4</extends>
<xcase>Beanstream API transaction fails</xcase>
<step>System alerts user of the error(s)</step>
<step>System gets new billing information from user</step>
</extension>
</extensions>
</usecase>
<usecase>
<name>Use Case 2</name>
<description>Log User</description>
<sitting>Instant</sitting>
<primaryactor>User</primaryactor>
<scope>System</scope>
<level>User goal</level>
<stakeholders>
<stakeholder>User</stakeholder>
<interest>Accessing his account</interest>
<stakeholder>System</stakeholder>
<interest>Identifying and authorizing the user</interest>
</stakeholders>
<preconditions>
<precondition>User must have a valid account</precondition>
</preconditions>
<minimalguarantee>Sufficient validation for existing account and right credentials</minimalguarantee>
<successguarantee>System has authorized access, user gets access to account</successguarantee>
<scenario>
<step>System gets credentials from user</step>
<step>System writes cookie and session</step>
<step>System logs access datetime</step>
<step>System redirects user to account</step>
</scenario>
<extensions>
<extension>
<extends>0</extends>
<xcase>System validates session</xcase>
<step>System redirects to account</step>
</extension>
<extension>
<extends>1</extends>
<xcase>User enters invalid credentials</xcase>
<step>System alerts user of the error(s)</step>
<step>System gets new credentials from user</step>
</extension>
</extensions>
</usecase>
<usecase>
<name>Use Case 3</name>
<description>Reset Password</description>
<sitting>Instant</sitting>
<primaryactor>User</primaryactor>
<scope>System</scope>
<level>User goal</level>
<stakeholders>
<stakeholder>User</stakeholder>
<interest>Retrieving access to his account</interest>
<stakeholder>System</stakeholder>
<interest>Making sure the request comes from the real account holder</interest>
</stakeholders>
<preconditions>
<precondition>User must have a valid account</precondition>
</preconditions>
<minimalguarantee>Sufficient validation to check existing account</minimalguarantee>
<successguarantee>System resets password</successguarantee>
<scenario>
<step>System gets email address from user</step>
<step>System sends confirmation email to user</step>
<step>User follows email's link</step>
<step>System resets password</step>
<step>System emails new password to user</step>
<step>System logs action</step>
</scenario>
<extensions>
<extension>
<extends>1</extends>
<xcase>User enters invalid email</xcase>
<step>System alers user with error(s)</step>
<step>System gets new email address from user</step>
</extension>
<extension>
<extends>3</extends>
<xcase>User follows invalid link</xcase>
<step>System alers user with error(s)</step>
<step>System gives option to manually enter the confirmation code</step>
</extension>
<extension>
<extends>3</extends>
<xcase>User enters invalid confirmation code</xcase>
<step>System alers user with error(s)</step>
<step>System gives option to manually re-enter the confirmation code</step>
</extension>
</extensions>
</usecase>
</usecases>
Trackbacks
Use this link to trackback from your own site.

