Abstract
Software safety and software risk management are two of the most important facets of modern software engineering. To understand safety requires that we understand first what is not safe. This paper examines the concept of failure in software engineering and describes an approach to failure-driven software design (FDSD).