Elsayed has produced a wonderful book for those who need to understand the theory and practice of the field of reliability engineering, with one striking exception. He does not treat the reliability of software-intensive systems or cross over the border from the firm terrain of hardware-focused systems to mushy software. There is hope for him to produce another volume, applying his mastery of understanding and explanation of reliability theory. His recent work has pointed out the underlying theoretical foundation of reliability engineering, namely that there are long periods of systems operations having a constant failure rate. Fortunately, this model can be applied equally well to software and digital hardware components [1].

The book consists of ten quite technical chapters and 13 appendices. There are many problems that help readers understand the mathematics, and Appendix M provides solutions to selected problems. The first three chapters present fundamental, but important, background information. I especially liked the treatment of estimation for failure time included in chapter 4. It was a good review of my graduate work. Chapter 5 carefully and skillfully shows how to do the reliability calculations, and contains a rich set of illustrative examples in the text as well as at the end of the chapter. Chapter 10 concludes with a rich set of case histories.

Chapter 1 defines reliability and the hazard function needed to understand the application of various probability distributions, such as the Weibull model and the exponential model. They appear in many of the following chapters, too. The mean time to failure is well covered in Section 1.7, with a description of its nuances. There are 40 examples at the end of chapter 1 that illustrate the points covered.

Chapter 2 explains how to evaluate systems reliability, with 28 problems to work through. Chapter 3 explains the importance of failures and time in the availability of systems. It includes 35 problems.

Chapter 4 includes material on the modern Bayesian approaches to estimation, along with the traditional least squares approaches. The treatment of variance-covariance matrices is exceptionally well done. This chapter offers 18 problems. Chapter 5 explains how the gamma function can be used to refine estimates and focuses on the notion of censoring the surviving units in a set of tests. Here, there are 32 problems to illustrate the concepts.

Chapter 6 has models for accelerated life testing using various statistical models to understand how best to approach a particular complex system, and concludes with 28 problems that support the text. Chapter 7 explains how to find the expected number of failures and considers renewal reliability processes. In this chapter, analysis is done in the time domain and readers also learn how to use the Laplace transform. The examples on pages 444 and 445 show the power of having a constant failure rate, which is critical to simplifying the fundamental reliability analysis. Confidence intervals are also treated. There are 22 problems to help readers understand the mathematics for this chapter.

Chapter 8 discusses preventive maintenance and inspections, with constant interval replacement policy, optimal age replacement policy, downtime minimization with preventive maintenance, and replacement. There are 21 problems for this chapter. Chapter 9 provides a mathematical basis for warranty models. This is the best and most complete treatment of warranty optimization I have read; 23 problems clarify the analysis.

Chapter 10 provides nine case histories with step-by-step explanations, including mathematical formulations.

I recommend this book for graduate courses, as it is clear and complete, and treats a vital 21st century problem. The book is expensive, but it is worth every penny for those who need to understand reliability engineering in depth. I look forward to the author applying this theory and analysis to software components, software systems, and software-intensive systems.