Software engineers typically implement their projects by using Iterative Enhancement, which means:
- They implement the project in stages.
- Each stage adds more functionality.
- Each stage must be testable by running the application.
- The final stage implements all the required functionality.
- They test each stage as they implement it, rather than doing all the testing at the end.
An Iterative Enhancement Plan is a list (in ordinary English) of the stages.
- Each stage's description explains what functionality must be supplied at that stage.
- The description must refer only to the project's functionality, not the project's code.
- The description should make plain what test(s) one would do to test that stage.