Failure-Driven Design