合同设计和快速失败

时间:2013-08-03 08:25:44

标签: design-by-contract fail-fast

快速失败 -

  

快速失败是系统或模块相对于其的属性   对失败的反应。快速失效系统可立即设计   在其界面报告可能发生的任何故障或情况   导致失败。快速失效系统通常设计为停止正常   操作而不是试图继续可能有缺陷的过程。   这样的设计经常在一个点的几个点检查系统的状态   操作,所以可以及早发现任何故障。一个故障快速模块   传递处理错误的责任,但没有检测到它们,   到更高的系统设计水平。

按合同设计 -

  

按合同设计(DbC),也称合同编程,   按合同编制和按合同设计编程是一种方法   设计软件的方法。它规定了软件设计者   应定义正式,精确和可验证的接口规范   对于软件组件,它扩展了普通的定义   具有前置条件,后置条件和不变量的抽象数据类型。   根据这些规范称为“合同”   用一个概念性的比喻来说明条件和义务   商业合同。

我的问题是两个术语中的相似和差异是什么。 我认为两者都是用于软件设计。

快速失败更多是对系统故障的响应,而设计合同更多是系统的保证,最低和期望。

但我如何实际定义它们之间的差异和相似性。

感谢您的帮助。!

2 个答案:

答案 0 :(得分:0)

相似点:

  • 两者都可以通过断言实现
  • 两者都是XML设计所固有的

的差异:

  • 按合同设计不会处理意外错误
  • 快速失败无法处理冗余检查
  • 按合同设计不能处理不良要求
  • 快速失败无法处理需求映射

<强>参考

答案 1 :(得分:0)

它们是互斥的。 Java迭代器快速失败,但也按合同设计。快速失败只是意味着,炸弹,希望不会发生更糟糕的事情(例如抛出异常)。虽然失败安全之类的东西通常意味着当失败发生时,确保没有更糟糕的事情发生。您可以通过隔离系统组件或通过处理故障情况来执行此操作,以便不会发生任何错误(例如,会话复制/故障转移)