Computer software reliability has never been so important. Computers are used in areas as diverse as air traffic control, nuclear reactors, real-time military, industrial process control, security system control, biometric scan-systems, automotive, mechanical and safety control, and hospital patient monitoring systems. Many of these applications require critical functionality as software applications increase in size and complexity. This book is an introduction to software reliability engineering and a survey of the state-of-the-art techniques, methodologies and tools used to assess the reliability of software and combined software-hardware systems. Current research results are reported and future directions are signposted. This text will interest: graduate students as a course textbook introducing reliability engineering software; reliability engineers as a broad, up-to-date survey of the field; and researchers and lecturers in universities and research institutions as a one-volume reference.