Form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances