Back to Homepage

Credit: public domain

Homework 6 - Verification Plans

Andrew Begel

The first software defect was reportedly discovered by Grace Hopper, a U.S. Navy Rural Admiral, while she was writing programs for the Harvard Mark II. She literally found a moth stuck between a relay in the machine, then taped it into the Mark II's log book with the explanation: "First actual case of bug being found." Now, long before that, there were defects in programs; defects are a part of developing software. We make mistakes, then we fix them.

What we don't do is ship them. No one wants to use software that doesn't do what it is intended to do. That defeats the core purpose of software: it does things reliably and fast.

What we do to prevent shipping defects is verify. But we have to do this in a way that actually decreases the likelihood that our users find defects. In every case, this means making a plan.

Because there are many ways to verify software, plans can vary. Some plans might be heavily focused on testing, whereas others might use formal verification. Others might just focus on shipping software and having users report failures. All of this depend what your team's tolerance for failure is.

Your job in this homework is to devise such a plan. Your plan should include:

The structure of your written plan is up to you. Organize it in a way that's helpful for you executing your plan.


Submit your plan to Canvas as a URL to a GitHub page.

You'll get full credit, minus any clear violations of the criteria below:

Notice that the grading scale is pretty picky: it requires a lot of very careful, precise thought about exactly what you should verify. This is the level of precision that good verification requires.

In preparing your plan, verify its comprehensiveness by referencing the criteria above before submitting this assignment.