I generally agree with those measures, but 1 and 2 (estimate and deliver on time) are only really possible when:
* Developers and teams have quite some slack (c.f. 20% time)
* The code and architecture are of very high quality and well documented (i.e. no accidental complication)
* There are very few external interruptions
and probably a few other factors. So, for example, in most legacy projects, it's practically impossible to give any meaningful estimates (i.e. estimates that are correct within reasonable ranges most of the time).I wrote a few blog posts on estimating some time ago, those also touch the issues I mentioned here. For example: http://devteams.at/a_spectrum_of_effort_estimates