This chapter highlights the qualitative aspects of failure prevention which are necessary to mitigate systematic failures (which include software bugs and ambiguities). The relationship of faults to errors to failures is explained. Design cycle activities are outlined. The static analysis of code is also explained. The chapter concludes with a checklist for software QA activities and tasks.