Requirements¶
User Stories¶
- Role-Goal-Benefit
- Role: Describle a specific role
- Goal: An achievable goal
- Benefit: The value that the goal might hold
- Role can be non-human entities
- Limitations
- Definition of Done
- Engineering Tasks
- Effort Estimate
- Should be within an iteration e.g., 2 weeks in Scrum
Easily verifiable so the client knows what the expect, and the person fulfilling the user story can be validated that they’ve completed the task.
As clear as possible, without ambiguities
INVEST
- I - Independence
- All user stories should be independent of each other
- N - Negotiable
- V - Valueable
- E - Estimable
- S - Small
- T - Testability
Consider the following value statement in the context of a user story for developing a data analysis system:
‘As a quantitative researcher, I want to be able to calculate the correlation between two variables, so that I can determine how correlated these variables are.’
Which INVEST guideline is most violated by this user story?
- Independent
- Negotiable
- Valuable correct
- Estimable
- Small
- Testable
The benefit in this value statement is simply repeating the goal, and therefore violates the principle of a user story being Valuable. A better value statement would have included the benefit of determining correlation between two variables
Example¶
Use case: As a prof. I want to create repositories so students can work
Role - Prof Goal - Create repositories Benefit - Students can work
Limitations: Need: Repo names, student id’s Definition of done:
- Runnable as single command
- Automated test cases
- Programmatically verifiable
- Engineering notes:
- Should use GitHubManager class
- Cost estimate:
- 1.5 units/days
Decomposing User Stories¶
Role: Player Goal: Move Mario Benefit: Dodge/Attack the enemy
Limitations: Keyboard input Notes: Use existing Level class Cost: 3
- +1 - Key Control
- +1 - Handling movement
- +1 - Handling collissions
DOD:
- Key input controls mario’s movement
- Mario is able to move through the level
- When mario colides enemey, one of them should be hit
I: Independent - NO N: Negotiable - YES V: Valuable - YES E: Estimable - YES S: Small - NO T: Testable - YES
- Find entities that can be decompose
- Link the entities decomposed
- Find the actions involved; bind actions
- Prototype
- Formalize; like UML
- Start implementation
- Entities can be found in Defintion of Done
- Key, Mario, Level, Enemies
- Both mario and enimies are both figures
- Key Level Figure Mario Enemy