按合同设计,快速失败



快速故障-

快速故障是系统或模块相对于其对故障的响应。故障快速系统设计用于在其接口上报告可能导致失败。故障快速系统通常被设计为停止正常运行操作,而不是试图继续一个可能有缺陷的过程。这样的设计通常在操作,因此任何故障都可以及早检测到。故障快速模块传递处理错误但不检测错误的责任,提升到下一个更高的系统设计级别。

合同设计-

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

我的问题是在这两方面的相似之处和不同之处是什么。我认为两者都是为了软件设计。

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

但我该如何定义它们之间的区别和相似性呢。

谢谢你的帮助。!

它们是互斥的。Java迭代器是故障快速的,但也是按合同设计的。快速失败只是意味着,全力以赴,希望不会发生更糟糕的事情(例如抛出异常)。而类似故障保护的东西,通常意味着当故障发生时,确保没有更糟糕的事情发生。您可以通过隔离系统组件或通过拥有一些可以处理故障的东西来做到这一点,这样就不会发生任何糟糕的事情(例如会话复制/故障转移)

相似性:

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

差异:

  • 合同设计不处理意外错误
  • 快速失败无法处理冗余检查
  • 合同设计不能处理糟糕的需求
  • 故障快速无法处理需求映射

参考

  • Liskov替换原理与测试驱动开发|有效的软件设计

相关内容

  • 没有找到相关文章

最新更新