首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >健壮性与正确性竞争

健壮性与正确性竞争
EN

Software Engineering用户
提问于 2018-03-07 08:22:23
回答 3查看 5K关注 0票数 17

阅读要求质量第一段中的“代码完成2”,我发现:

是否指定了相互竞争的属性之间可接受的权衡--例如,健壮性和正确性之间的权衡?

(以上是大型复选框列表中的一点,以检查需求的质量)

因此,我在网络、学术书籍等方面发现了很多关于健壮性和正确性的定义。

例如:

在“面向对象的软件建设,第二版,Bertrand,Prentice,1997”书中:

  • 正确性:系统在规范、设计和实现方面不受缺陷影响的程度。
  • 稳健性:系统在无效输入或有压力的环境条件下继续工作的程度。

尽管如此,目前还不清楚这两种情况可能发生冲突的原因和情况。

我的问题是:为什么这两个属性在竞争中?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2018-03-07 08:25:28

在许多情况下,这两种情况可能发生冲突。例如,鲁棒性可能涉及到在重载下的弹性。如果对请求的近似(即不正确)响应的计算速度要比精确(正确)响应快得多,那么重要的是要知道系统是应该交付一个大致的结果,还是完全不能传递。

票数 36
EN

Software Engineering用户

发布于 2018-03-07 08:50:39

正如你所说的,这两个只是例子。事实上,所有这类非功能性需求都可能相互冲突。在“构建进化架构”一书中,有一个包含大约100个这样的"-ilities“的表(它们也经常被称为)。

对于软件架构师来说,考虑这两者之间的潜在冲突是一种练习。基本上,您可以决定哪些对您的项目是重要的,然后跟踪这些冲突。

为了回到您的精确示例,并查看维基百科中robustness一词的定义:

在计算机科学中,健壮性是指计算机系统在执行1时处理错误和处理错误输入的能力。

从定义中可以看出,健壮性涉及错误。另一方面,您想要有正确性,这基本上意味着没有错误。

为了使冲突更加明显,让我们考虑一个简单的输入字段。从正确性要求来看,用户的任何错误输入都最容易被拒绝。但是健壮性要求您能够处理这个输入,这可能不是完全正确的。

让我们回到你的书中:现在什么是可以接受的交易?假设您编写了一个科学应用程序,用户可以输入一个电压值,包括电压大小。因此,正确的输入应该类似于"10 kV“或"200 mV”。可接受的权衡可能包括允许输入像“10千伏”,“10千伏”,甚至仅仅是"10“,为了正确起见,将这些输入映射到一个有效的电压值。请注意,这仍然是一个权衡,而不是一个“最好的两个世界”的事情。考虑大写和小写:"10 kV“和"10 KV”可能不错,但"10 mV“和"10 MV”可能不是。正确性成为疑问,因为你不确定它是千禧年还是超级大,但如果你坚持右上/下大小写,你又失去了稳健性,因为一些错误的输入是行不通的。

票数 17
EN

Software Engineering用户

发布于 2018-03-07 19:42:46

一个实际的例子是XHTMLHTML

  • 浏览器(在严格模式下)拒绝语法错误的XHTML。这将确保不向用户显示不正确的结果,并有助于查找错误。
  • 浏览器试图继续解析HTML代码,即使它有非常明显的问题。这通常允许用户查看页面,即使内容有一点损坏。

因此,XHTML的目标是正确性,而HTML的目标是健壮性。目前HTML似乎更受欢迎,但双方都有很好的论据。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/367191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档