| The scope, complexity, and pervasiveness of computer-based and controlled systems continue to increase dramatically. The consequences of these systems failing can range from the mildly annoying to catastrophic, with serious injury occurring or lives lost, human-made and natural systems destroyed, security breached, businesses failed, or opportunities lost. As software assumes more of the responsibility of providing functionality and control in systems, it becomes more complex and more significant to the overall system performance and dependability.
It would be ideal if the processes by which software is conceptualized, created, analyzed, and tested had advanced to the state that software is developed without errors. Given the current state-of-the-practice, fewer errors are introduced, but not all errors are prevented. So even if we have the best people and use the best practices and tools, we are still imperfect beings, and it would be very risky to assume that the software we develop is error-free. This book examines the means to protect against software design faults and tolerate the operational effects of these introduced imperfections. |