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