During the 18 months since the publication of the 1st edition the practice of software quality and the availability of tools and guidance for its implementation has increased dramatically. The emphasis on the need for formal methods has increased and calls for certification of safety critical software are now common. In particular this 2nd edition: -Expands the treatment of static analysis and includes a com prehensive but simple example in order to illustrate clearly the functions of each analyser in Chapter 8. -Describes formal requirements languages more fully in Chapter 6. -Updates the compendium of available guidelines and standards in Chapter 5. -Expands the description of the many high level languages in Chapter 9. -Improves and expands the exercise into a 49 page case study consisting of a documentation hierarchy for a safety system in Chapter 14. It is seeded with deliberate errors and ambiguities and now includes guidance in finding them.