from design models to implementation.
Note: failures are anticipated and checked for with assertions while errors are unanticipated.