Measuring Progress
Working software is the primary measure of progress
Fundamentally, there is no more valid measure for progress, than the working software itself. This only leaves open to discussion, the definition of “working software”
Defining “Working Software”
The criterion for defining working software is obviously open to debate. A common definition is:
Software can be called “working software” when it meets a defined set of business requirements and can be demonstrated to do so through testing.
This is one reason why Agile processes put so much value on testing, these tests show very early on in the process that software is meeting business requirements, without the need to create a fully functional user testable application. These tests also allow demonstration at a fairly low level of granularity that code is meeting requirements, where a user facing application is dependent on too many factors to easily establish correctness.
So How Do We Measure Progress?
Based on this definition, our best way to measure progress and velocity on projects is to evaluate defined business requirements, against the code that is provided to meet those requirements.