Software Design/Mistake tolerance

Mistake tolerance is a software and an interface quality. In the context of Software Design project, it means the software or the interface operates normally even when it is misused: for example, some function is called with an argument outside of the sensible range, or some functions are called in a wrong order. It can be viewed as a specific type of fault tolerance, where the source of errors are humans misusing the software or the interface.

A robust interface is hard or impossible to misuse in the first place. For example, a function may accept a class instead of a primitive type to reduce or eliminate the probability of passing a wrong argument. An interface may enforce the order in which some functions are called by defining the function that has to be called later in the class returned from the function that has to be caller earlier.