Software Quality Plan

This week's course materials all discuss software quality and the need for a software quality plan while working on a project. This plan will be part of your final report.

Software quality is a complex topic in software engineering. It encompasses many ideas and activities, including software testing, verification and validation, code reviews, quality assurance, code audits and program analysis, and much more. There are highly formal educational programs and certifications in software quality techniques, and in quality assurance in general.

Agile development processes typically de-emphasize many of the formal techniques in favor of lightweight approaches such as unit testing. Agile methods rely on frequent customer interactions to validate that the code is meeting the customer's needs; problems are immediately addressed in the next iteration. Agile emphasizes many practices intended to ensure high quality is baked in early, reducing many sources of bugs: pair programming, test-driven development, aggressive refactoring, simplicity, etc.

At the end of the day, though, a good "definition of done" should include some aspects of software quality assurance beyond simply following the practices agreed upon for your agile process. Any good project should have a plan in place for ensuring software quality before releasing it into the wild.

For this section of your paper, discuss the elements of your software quality plan, how you will implement those elements (e.g., if automated testing tools will be used, what tools? what will be tested?), and what aspects of code quality are being addressed by each element (defect detection, coding standards, verification, validation, etc.) Here are some possible elements to include in your quality plan:

  • Unit testing
  • User interface testing (automated or otherwise)
  • Integration testing
  • Code reviews
  • User acceptance testing
  • Code metrics
  • Static or dynamic program analysis

If you are unsure of what any of these are, Wikipedia is a decent source of definitions.

Your plan should list activities that you will be doing along with how each contributes to the quality of your product. This could be a table, a bulleted list, paragraphs for each activity, etc. We are only looking for a page or two on this - we don't need your test scripts, for example!

There is no particular rubric for this document, other than our usual expectations that it communicates clearly what you intend to do, and that it is free of spelling and grammar errors. As with other documents, we will return it to you for revision if we feel it isn't up to standard.

“Any sufficiently advanced bug is indistinguishable from a feature.” - Rich Kulawiec