============ Requirements ============ User Stories ============ 1. 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 2. Limitations 3. Definition of Done 4. Engineering Tasks 5. 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 1. Find entities that can be decompose 2. Link the entities decomposed 3. Find the actions involved; bind actions 4. Prototype 5. Formalize; like UML 6. 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