Home      Discussion      Topics      Dictionary      Almanac
Signup       Login
User story

User story

Discussion
Ask a question about 'User story'
Start a new discussion about 'User story'
Answer questions from other users
Full Discussion Forum
 
Encyclopedia
In computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

 a user story is one or more sentences in the everyday or business language of the end user that captures what the user wants to achieve. User stories are used with Agile software development
Agile software development
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...

 methodologies for the basis of what features that can be implemented. Each user story is limited, and should fit on a small paper note/card to ensure that it does not grow too large. The user stories should be written by or for the customers of a software project and are their main instrument to influence the development of the software. User stories could also be written by developers to express non-functional requirements (security, performance, quality, etc.).

User stories are a quick way of handling customer requirements without having to create formalized requirement documents and without performing administrative tasks related to maintaining them. The intention of the user story is to be able to respond faster and with less overhead to rapidly changing real-world requirements.

A user story is an informal statement of the requirement as long as the correspondence of acceptance testing procedures is lacking. Before a user story is to be implemented, an appropriate acceptance procedure must be written by the customer to ensure by testing or otherwise determine whether the goals of the user story have been fulfilled. Some formalization finally happens when the developer accepts the user story and the acceptance procedure as a work specific order.

Creating user stories


When the time has come for creating user stories, one of the developers gets
together with a customer representative. The customer is responsible for
formulating the user stories. The developer may use a series of questions
to get the customer going, such as asking if some particular functionality
is desired, but must be careful not to dominate the idea creation process.

As the customer conceives the user stories, they are written down on a note
card (e.g. 3x5 inches or 8x13 cm) with a name and a description which the
customer has formulated. If the developer and customer find that the user
story is lacking in some way (too large, complicated, imprecise), it is
rewritten until it is satisfactory often using the INVEST
INVEST (mnemonic)
The INVEST mnemonic was created by Bill Wake as a reminder of the characteristics of a good quality user story, as may be used in a Scrum backlog or XP project....

 guidelines from the Scrum
Scrum (development)
Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering....

 project management framework. However, it is stressed in Extreme Programming (XP)
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

 that user
stories are not to be definite once they have been written down.
Requirements tend to change during the development period, which is handled
by not carving them in stone.

User stories generally follow the following template:
"As a , I want so that "

but the shorter version is commonly used as well:
"As a , I want "

Examples


As a user, I want to search for my customers by their first and last names.

As a non-administrative user,
I want to modify my own schedules but not the schedules of other users.

As a mobile application tester,
I want to test my test cases and report results to my management.

Starting Application
The application begins by bringing up the last document the user was working with.

As a user closing the application,
I want to be prompted to save if I have made any change in my data since the last save.

Closing Application
Upon closing the application, the user is prompted to save (when ANYTHING has changed in data
since the last save!).


alternatively...

As a user closing the application,
I want to be prompted to save anything that has changed since the last save
so that I can preserve useful work and discard erroneous work.

The consultant will enter expenses on an expense form. The consultant will enter items
on the form like expense type, description, amount, and any comments regarding the expense.
At any time the consultant can do any of the following options.
(1) Once this is completed the consultant will “Submit”. If the expense is under fifty (<50),
the expense will go directly to the system for processes.
(2) In the event the consultant has not finished entering the expense, the consultant may
want to “Save for later”. This instance should then be displayed on a list (queue) for
consultant with the status of “Incomplete”.
(3) In the event the consultant decides to clear the data and close the form the consultant
will “Cancel and exit”. This instance will not be saved anywhere.

Usage


As a central part of many agile development methodologies, such as in XP
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

's planning game, user stories define what
is to be built in the software project. User stories are prioritized by the
customer to indicate which are most important for the system and will be broken
down in tasks and estimated by the developers.

When user stories are about to be implemented the developers should have
the possibility to talk to the customer about it. The short stories may be
difficult to interpret, may require some background knowledge or the
requirements may have changed since the story was written.

Every user story must at some point have one or more acceptance tests
attached, allowing the developer to test when the user story is done and
also allowing the customer to verify it. Without a precise formulation of
the requirements, prolonged nonconstructive arguments may arise when the
product is to be delivered.

Benefits


XP
Extreme Programming
Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

 and other agile methodologies favour face-to-face communication over comprehensive documentation and
quick adaptation to change instead of fixation on the problem. User stories
achieve this by:
  • Being very short. They represent small chunks of business value that can be implemented in a period of days to weeks.
  • Allowing developer and the client representative to discuss requirements throughout the project lifetime
  • Needing very little maintenance
  • Only being considered at the time of use
  • Maintaining a close customer contact
  • Allowing projects to be broken into small increments
  • Being suited to projects where the requirements are volatile or poorly understood. Iterations of discovery drive the refinement process.
  • Making it easier to estimate development effort
  • Require close customer contact throughout the project so that the most valued parts of the software get implemented.

Limitations


Some of the limitations of user stories in agile methodologies:
  • They can be difficult to scale to large projects.
  • They are regarded as conversation starters.

User stories and use cases


While user stories, use case
Use case
In software engineering and systems engineering, a use case is a description of steps or actions between a user and a software system which leads the user towards something useful...

s and usage scenarios all serve the purpose to capture specific user requirements in terms of interactions between the user and the system, there are major differences between them.
User Stories Use Cases
  • Provide a small-scale and easy-to-use presentation of information. Are generally formulated in the everyday language of the user and contain little detail, thus remaining open to interpretation. They should help the reader understand what the software should accomplish.
  • Can be accompanied by Acceptance Testing procedures for clarification of behavior where stories appear ambiguous.
  • Describe a process and its steps in detail, and may be worded in terms of a formal model. A use case is intended to provide sufficient detail for it to be understood on its own. A use case has been described as “a generalized description of a set of interactions between the system and one or more actors, where an actor is either a user or another system”.
  • May be delivered in a stand-alone document.

  • See also

    • Acceptance testing
    • Extreme Programming
      Extreme Programming
      Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

    • Requirement
      Requirement
      In engineering, a requirement is a singular documented physical and functional need that a particular product or service must be or perform. It is most commonly used in a formal sense in systems engineering, software engineering, or enterprise engineering...

    • Scrum
      Scrum (development)
      Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering....

    • Use case
      Use case
      In software engineering and systems engineering, a use case is a description of steps or actions between a user and a software system which leads the user towards something useful...

    • Agile software development
      Agile software development
      Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...

    • INVEST mnemonic
      INVEST (mnemonic)
      The INVEST mnemonic was created by Bill Wake as a reminder of the characteristics of a good quality user story, as may be used in a Scrum backlog or XP project....


    External links