However, writing software without defects is not sufficient. In my experience, it is at least as difficult to write software that is safe – that is, software that behaves reasonably under adverse conditions.