Difference between revisions of "User story"

From Pearl Language
Jump to navigation Jump to search
m (→‎Legend: += cellpadding="10")
m (→‎Story Template: refactored table + cellpadding="10")
Line 43: Line 43:
===Story Template===
===Story Template===
Slightly different from the “As a ''role'' I want to ''function'' so that I ''value''.”
Slightly different from the “As a ''role'' I want to ''function'' so that I ''value''.”
{|rules="rows"
{|rules="rows" cellpadding="10"
|-
|-
|When I
|When I
|''situation''
|'''am in the city''' ''(situation)''
|am in the city
|-
|-
|I want to
|I want to
|''feature'' (verb sentence)
|'''withdraw cash''' ''(feature as verb sentence)''
|withdraw cash
|-
|-
|so that I
|so that I
|''value'', ''benefit''
|'''can buy some ice cream and quench my thirst'''. ''(value, benefit)''
|buy some ice cream and quench my thirst.
|}
|}



Revision as of 08:04, 3 June 2015

…{{{context}}}

✣  ✣  ✣

{{{wish full}}}

The cost of a story includes providing the capability and maintaining a healthy codebase for future work.
Martin Fowler

Therefore:

Use the story splitter to make all user stories similar-sized items.

✣  ✣  ✣



✣  ✣  ✣

Use a formal specification language

Leslie Lamport on Distributed Systems and Precise Thinking:

The benefit of using [a formal specification language] is that it teaches you to think rigorously, to think precisely, and the important point is the precise thinking. So what you need to avoid at all costs is any language that's all syntax and no semantics.
Leslie Lamport

Template

Legend

color meaning
black To be implemented in the current variant of the user story.
red Issues that must be researched and resolved before you can start with implementation.
grey Items that will not be implemented in the current variant of the user story (out of scope).

Verb-sentences, please

When composing the title of a user story, use verb-sentences and active language. The verbs are the actions and activities users can do with your product. The nouns are the objects or parts that make up your product.

For example:

  • To send a message.
  • To delete a message.
  • To close a partnership.

Context

Describe the context or situation in which this story shows its value at best.

Gist

Describe the essence, the ‘gist’ of the user story in its context.

Story Template

Slightly different from the “As a role I want to function so that I value.”

When I am in the city (situation)
I want to withdraw cash (feature as verb sentence)
so that I can buy some ice cream and quench my thirst. (value, benefit)

Ready to Build

Describe the user’s adventure as a narrative, a story, until everyone can back brief the story crystal clear, lucid way. In short, make sure the user story is ready to build.

Issues

Issues that need to be resolved before the user story can be declared ready to build. Color open issues red. Color them black when resolved. For example:

  • How many daily withdrawals are allowed?
  • What is the maximum amount someone can withdraw and on what does it depend?
    • Maximum daily withdrawal amount is minimum(account balance, credit limit, cash in ATM).
  • Offer a loan when the withdrawal amount exceeds the account balance.

To do

Describe what needs to be done to get (a path through) the story ready to build, especially to split them into similar-sized items.

Seeing is believing

Tersely describe in steps how the path through the user story will be demonstrated. Pay special attention to edge cases. Steps in grey are excluded from the current revision of the story, and are used to illustrate what the complete story looks like.

Design

Describe the conceptual technical design of the story. Include any diagrams that clarify its implementation direction.

Acceptance

When appropriate, use specification by example and behavior-driven development in conduction with #Seeing is believing to obtain crystal clear acceptance criteria.

Scope

Explicitly specify what is in scope, and especially what is out of scope for this revision of the story.

In scope

  • To be discussed.

Out scope

  • To be discussed.

Decisions

List any decisions and their rationale.

  • To be discussed.

Assumptions

List any assumptions on which the story, its design and decisions is based.

  • To be discussed.

Junk items

Junk can be items that are added while in a hurry. The need to be rewritten as good stories later to get them ready to build, but were initially just tossed into the bin so to remember. Others are things like “Upgrade Linux server” that could be rewritten as a story, but there is little benefit to do that. Also, items like that tend to be well understood and are often short-lived.

A little bit of junk on your wishlist is totally fine, especially when it won’t be there long.


User out of sight

Sometimes, the functionality being described starts to get a little too distant from real users and writing user stories when real users are nowhere to be found feels artificial or even silly.

Borrowing from feature driven development, you can write these stories remote from real users in this format:

action the result [by|for|of|to] object

For example:

  • Estimate the closing price of stock
  • Generate a unique identifier for a transaction
  • Change the text displayed on a kiosk
  • Merge the data for duplicate transactions

All verb-based sentences with at least one noun. Each noun represents an object in your system. Multiple nouns in a single sentence indicate a relationship between the objects.

This can be a particularly good syntax when developing something like an Application Programming Interface (API) and object-oriented systems. It works equally well on other types of back-end functionality.

FDD

Also, check out feature driven development. It also uses verb-sentences and is well suited for object oriented development. See e-mail on June 2, 2015, from Mike Cohn, titled “Not Everything Needs to Be a User Story: Using FDD Features”.

Sources