Backlog Refinement and Estimation
Introduction
Backlog Refinement, also called Backlog Grooming in some circles, is the process of refining a user story in preparation for sprint planning which includes estimation of the effort required to complete user stories. During backlog refinement *acceptance *criteria for the story are defined and a sketch of the solution design is specified. Both of those items need to be detailed in a user story for you to be able to estimate the effort.
Software development work is notoriously difficult to estimate. Agile methods recommend relative estimation techniques such as Planning Poker. After a story has been analyzed and designed it can be estimated. The team must come to a consensus on the estimate or discuss and vote again until consensus is reached.
Learning Outcomes
- Write effective acceptance criteria statements
- Specify the necessary design changes and additions to implement of a user story
- Explain the process of story estimation
- Apply Planning poker for story estimation
Study Resources
For your study of this topic, use these resources
Video Lessons
- Agile at Work: Refining the backlog (2:57)
- Agile Estimating and Planning: Planning Poker - Mike Cohn (5:31)
Web Articles and Blogs
- These web articles are required reading
- Some additional resources
Wikipedia
Class Lecture
Example Acceptance Criteria and Solution Tasks
User Story
As a User, I want to add a new task with a title, description, and due date so that I can keep track of my responsibilities.
Acceptance Criteria
- The user can access a “Create New Task” form from their dashboard.
- The form includes fields for title, description, and due date.
- The title field is required and limited to 100 characters.
- The description field is optional and limited to 500 characters.
- The due date field is required and must be a valid future date.
- The user receives an error message if they try to submit the form with invalid data.
- Upon successful submission, the new task appears in the user’s task list.
- The user receives a confirmation message after successfully adding a task.
Solution Tasks:
- Database:
- Design and create a ’tasks’ table in the PostgreSQL database with appropriate fields (id, user_id, title, description, due_date, created_at, updated_at).
- Create necessary indexes for efficient querying.
- Backend (Flask):
- Implement a new API endpoint for task creation (e.g., POST /api/tasks).
- Create a database model for tasks.
- Implement input validation for the task creation form data.
- Write logic to insert the new task into the database.
- Implement error handling for invalid inputs.
- Write unit tests for the task creation functionality.
- Frontend (React):
- Design and implement a “Create New Task” form component.
- Add form validation on the client-side (e.g., required fields, character limits).
- Implement a date picker for the due date field.
- Create a function to send the form data to the backend API.
- Implement error message display for invalid inputs.
- Add a success message component for task creation confirmation.
- Update the task list component to include the newly created task.
- Write unit tests for the new React components.
- Integration and Testing:
- Integrate the frontend form with the backend API.
- Perform end-to-end testing of the task creation process.
- Test edge cases (e.g., submitting empty forms, invalid dates).
- Ensure proper error handling and display of error messages.
- Documentation:
- Update API documentation to include the new task creation endpoint.
- Add user guide information about creating new tasks.
Exercises
Homework Exercises
- Sprint 2/3 plan - team
- For each potential Sprint 2/3 user story:
- Refine the story by defining acceptance criteria and solution tasks at an appropriate level of detail.
- As you create acceptance criteria, update your acceptance test plan.
- As a team perform planning poker on that story.
- Modify the Trello card with the points for this story; put it in the title of the card, such as “Register for a League (8)” means the Register for a League user story was assigned 8 story points
- For each potential Sprint 2/3 user story:
