Failure: Software does not deliver the service expected by the user (e.g., mistake in requirements, confusing user interface)
Fault (BUG): Programming or design error whereby the delivered system does not conform to specification (e.g., coding error, interface error)