The key to software projects is early feedback and creating predictability. This means we can see problems long before they appear and create predictability that will give the team a sustainable pace.
One way of creating predictability is by using the sprint concept from Scrum. Instead of having one long waterfall of specification, implementation, test, and release, you define a three week long time box where you take the highest prioritized features from the backlog and finalize those. This is called a sprint, and each sprint is a set of features from the backlog that are most prioritized by the product owner.
The following graph displays a Sprint burndown chart from a project I once ran as the Scrum Master:
On the Y axis is the amount of work left to do in the sprint, and on the X axis are the number of days until the sprint is finished. On day 7, there was a sprint refinement meeting where the decision was made to bring in another story from the backlog into the sprint...