阅读要求质量第一段中的“代码完成2”,我发现:
是否指定了相互竞争的属性之间可接受的权衡--例如,健壮性和正确性之间的权衡?
(以上是大型复选框列表中的一点,以检查需求的质量)
因此,我在网络、学术书籍等方面发现了很多关于健壮性和正确性的定义。
例如:
在“面向对象的软件建设,第二版,Bertrand,Prentice,1997”书中:
尽管如此,目前还不清楚这两种情况可能发生冲突的原因和情况。
我的问题是:为什么这两个属性在竞争中?
发布于 2018-03-07 08:25:28
在许多情况下,这两种情况可能发生冲突。例如,鲁棒性可能涉及到在重载下的弹性。如果对请求的近似(即不正确)响应的计算速度要比精确(正确)响应快得多,那么重要的是要知道系统是应该交付一个大致的结果,还是完全不能传递。
发布于 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”可能不是。正确性成为疑问,因为你不确定它是千禧年还是超级大,但如果你坚持右上/下大小写,你又失去了稳健性,因为一些错误的输入是行不通的。
https://softwareengineering.stackexchange.com/questions/367191
复制相似问题