The third edition of the highly successful Achieving Quality Software provides a concise and readable description of the main quality issues which arise in the use of software, particularly in safety-related applications. Current safety principles are described using the `safety life-cycle'. A full picture of current guidance and standards is given. The traditional methods used to enhance software quality are detailed and their limitations emphasized. Tools and techniques are fully explained. Documentation control, languages and programming standards, review, test, static analysis and fault tolerance are all covered. Moreover, formal mathematical methods are addressed, with examples, and their benefits and limitations are explained; the controversial areas of metrics and failure rate measurement are outlined; comprehensive checklists and a case study are provided, together with a glossary and bibliography; a fully worked example of source code static analysis is provided. Achieving Quality Software is suitable for all engineers involved with programmable safety-related systems, especially hardware design engineers and software engineers. Not only quality and design engineers in software-related organizations, but graduate students on software and safety and reliability courses will find this book invaluable.