Along with the Definition of Ready, the Definition of Done is one of the fundamental states defined within the Agile software development life cycle. The Definition of Done is the soul of the entire Scrum process. The definition explicitly identifies a User Story "done state”.
The Definition of Done defines a common terminology to be used between all members (internal and external) of the team. Once defined, no one ever has to ask if something is "DONE-done" ever again!
The team agrees on, and displays prominently somewhere in the team room, a list of criteria that must be met before a product increment "often a user story" is considered "done". Failure to meet these criteria at the end of a sprint normally implies that the work should not be counted toward that sprint's velocity.
Provides Explicit Accountability
- Every user story moved into the "Done" category meets a minimum agreed-upon standard of completion
- Creates an Overwhelming Sense of Clarity and Power
- Prevents User Story Thrashing
Limits the Risk of Misunderstanding and Conflict
- Between the development team, quality assurance, and the product owner
Guides Pre-Implementation Activities
- Discussion, estimation, design
Here is a solid article that has a great formal definition from the Agile Alliance on the Definition of Done
- Code Updated to satisfy all requirements and acceptance criteria
Code Properly Formatted and follows applicable standards
- Code self-documented
- Code Review Performed
- Exit Three Amigos Completed
Unit, Integration, and Acceptance Tests Added/Updated
- Pass successfully
- Provide adequate code coverage
- Documentation Created (Architectural / Design ) and made available as appropriate
- Performance concerns have been identified, analyzed, and addressed
- Security concerns have been identified, analyzed, and addressed
- Metrics have been identified and addressed
- Code Accepted by QA
User Story Status Updated
- Set to "Done"