This tutorial provides examples for user stories, conditions of satisfaction and how a minimum viable product can be defined.
Contents:
- User Stories
- Conditions of Satisfaction
- User Stories and Project Planning
- User Stories and Test-Driven Development
- Example User Stories
User Stories
A user story is an informal, general explanation of a software feature written from the perspective of the end user or customer. A user story is always of the following form:
As a <role>
I can <perform action>
so that I can <receive benefit>
User stories represent something the user/customer might want. There will be many ways to give the user/customer the benefit that they want.
We need to refine these in order to determine what to build. We call these refinements “conditions of satisfaction” (CoS)
Conditions of Satisfaction
A CoS should be a specific capability or behavior that the user expects, in the user’s terms. It should be visible to and verifiable by the user.
The CoS is a guide to the implementation team. It should be specific enough so that the implementation team has a clear idea of what they are building. There still may be many ways to implement a CoS. For example, a CoS probably would not specify any of the graphic or layout details; these would likely be left to the implementation team.
User Stories and Project Planning
In planning a project, need to assign priorities to each Condition of Satisfaction. Priorities tell us the order in which COS and their associated engineering tasks should be addressed, and how much effort should be devoted to each of them. There are many ways to describe priorities. For example, a user story might be described as Essential, Desirable, or Extension:
- Essential (E) means the project is useless without it.
- Desirable (D) means the project is less usable without it, but is still usable.
- Extension (X) describes a User story or CoS that is desirable, but may not be achievable within the scope of the project.
Minimum Viable Product (MVP)
An MVP is a product that consists of all essential conditions of satisfaction for all essential user stories. (Deciding which user stories are essential is a different project than deciding which conditions of satisfaction are essential to a user story.) Developers should prioritize those above others.
User Stories and Test-Driven Development
We model the development process as a cycle of refinements:
- User Stories
- Conditions of Satisfaction
- Testable behaviors
- Executable Tests
- Engineering Tasks (Code)
As we proceed down these refinements, we will likely go back and revisit design decisions that we made at earlier stages. This is the topic of Module 2.
Example
Other iterations of this class have worked on a “Fake Stack Overflow” (FSO) question-and-answer website. Here are some user stories that might apply to such a product:
User Story #1
As a knowledgeable developer on FSO, I want to be able to reply to questions with answers so that I can feel good about helping others in the way I was helped in the past.
These are possible conditions of satisfaction for this user story:
- 1.1 There should be a place on questions to post my reply with an answer (E)
- 1.2 Replies should be visible to anyone who views the question (E)
- 1.3 I should be able to format my reply with syntax highlighting. (D)
- 1.4 Replies should pop up in real-time without needing to reload the page (X)
User Story #2
As someone who responds to many questions on FSO, I want to be list my replies and how often they are upvoted so that I can use the feedback to improve my communication skills.
These are possible conditions of satisfaction for this user story:
- 2.1 I should be able to view a list of my replies and how many upvotes they have each received. (E)
- 2.2 I should be able to click on a reply from the list and it links me to the appropriate page. (D)
- 2.3 Other users should be able to see my replies and total number of upvotes (D)
- 2.4 I should be able to compare my total number of upvotes with all the other users on the site. (X)
References
- An Intoduction to the World of User Stories at Simplilearn
- User Stories @ Atlassian — the section on “Why create user stories?” is particularly good