First Things First

In order to deliver working software at the end of each iteration and a complete set of features at the end of a release cycle it's important to prioritize features logically to allow testing to begin as early as possible. For example, in one release cycle we added document upload functionality to our citizen access application. The complete set of features included:
  1. Upload Document
  2. List Documents
  3. View Document
  4. Delete Document
The release cycle included 3 iterations of development and testing. The logical order in which to develop these features would be as they appear above. By developing the upload feature in the first iteration, it could be tested while developers worked on subsequent features. By the same logic, it makes sense to develop the list documents feature before developing the delete document feature (it's hard to test a delete document feature if the software doesn't allow the user to upload a document and see the list of uploaded documents).

A development team that doesn't understand the value of frequent delivery of working software will work on all features simultaneously, or in an order that does not allow for testing of discrete features independently. In that case, testers would have to wait until the end of the final iteration before getting their hands on any of the features to test--an inefficient use of resources and a way to ensure inadequate testing and unacceptable quality.


Popular posts from this blog

Severity, Priority, Impact and Likelihood - Managing Defects and Risks

Enterprise Agile Framework: The Entrepreneurial Operating System (EOS)

Chatbot Code of Ethics