What Does "Done" Mean?

Definition of "done"

To be complete with a new feature, you must have the following pieces completed:

  • The actual code that performs the action, fixes the problem, etc. per bug report/specification
  • One or more JUnit test cases that prove that your code is doing what you say it is.
    • In the case of a bug fix, if there is an existing JUnit test case that covers the component, adding a new test that makes sure the bug doesn't re-appear.
    • In the case of a new component, a whole new JUnit test case to test/exercise the component is required.
    • You may need one or more Action Sequences to prove your component works as advertised.
    • Your JUnit test cases must also demonstrate the components' ability to handle boundary cases (exceptions, invalid inputs, missing outputs, etc.)
  • Documentation on the new feature
    • In the case of a new component, you're required to document all the inputs and outputs of the component, what it produces, and what the boundary cases are.
    • In UI tools, changes to the user interface need to be documented - field descriptions and interactions are required.
    • For bug fixes, make sure that in existing documentation, the behavior that was fixed is explicitly called out.