有什么更好的方式描述软件“愚蠢的证明”的过程?


13

对我来说,白痴证明只是意味着确保用户即使尝试也不会破坏软件。例如,如果从文本框中读取一个值并将其转换为双精度型,则基础软件具有白痴证明,如果用户键入非双精度型值,则该值不会中断。

我最近写了一份开发进度表,其中一项被命名为“白痴证明UI”。我正在开发此软件的人员开玩笑地冒充该术语,但我可以看到此术语实际上会使人们感到不安。

有什么更好的说法呢?


23
调用它,ID-10T打样
贾罗德荨麻

2
大声笑,我在搜寻ID-10T时意识到了1337。我失败了……
sooprise

13
这个问题让我想起了我最喜欢的一句话:“今天的编程是软件工程师之间的竞赛,他们努力构建更大,更好的防白痴程序,而Universe试图生产更大,更好的白痴。到目前为止,Universe取得了胜利。 ”
〜Rich

3
基础工程怎么样?
jk。

4
“任何事情都不能做到万无一失,因为愚蠢的人真是太聪明了。”
M.Sameer

Answers:


27

如果您将“防白痴用户界面”作为计划项目包括在内,那么您只是在尝试随后向软件中添加质量。当然,任何设计良好的系统都将验证其输入并为用户提供明确的指导,这并不是作为单独的项目(如在不可避免的紧急情况发生时会被删除)放在日程表上的。

或者,如果必须是离散项(我知道某些组织如何考虑日程安排),则应将“白痴证明用户界面”更改为“输入验证库”,并移至日程安排的前面。


2
+1。如果您想在事后添加任何类型的输入验证,那么您已经迷失了很多。作为规范中的一个重点,最好是“该软件必须在任何地方优雅地处理无效输入”。究竟如何“优雅地”处理无效输入,很大程度上取决于软件在该特定点正在做什么。对于非常简单的UI(可能是ATM),甚至有可能使无效输入成为不可能
CVn

14
+1。防止白痴不是一项任务。防白痴是良好设计的结果。
S.Lott

4
防止白痴是一个持续的过程-因为宇宙不断制造越来越愚蠢的白痴
Steven A. Lowe

尽管听起来可能是错误和多余的,但要考虑到界面设计人员和Beta测试人员都知道该软件的蓝图和总体设计,并且可能只是没有意识到(忽略)对他们而言似乎显而易见的事实完全让普通用户感到困惑。可以称之为“测试和调试UI设计决策”。输入验证是一回事,让用户了解应该在哪里输入什么是另一回事。
SF。

对所有支持者:...无论您做什么,都将永远忘记某些事情。软件是如此复杂,以至于几乎没有一支团队可以使一切“完美”。这就是为什么必须进行测试的原因。检测缺陷和遗漏,甚至没有人想到的事情。这样的“白痴证明用户界面”正是所需要的。
dagnelies,2011年

10

我认为用户输入验证是一个专业术语。如果在内部文档中使用白痴打样,我没有发现任何问题。


3
您让我参加了“用户输入验证”。无论在何处使用,白痴打样都是一个非专业术语。
罗伯特·哈维

2
无论您做什么,都不要以书面形式。
JeffO 2011年

6

强化是一个好词。如果有人要求,请告诉他们,通常是为理想情况编写的首次传递软件,并且像钢制工具一样,软件也需要“硬化”为真正的客户日常使用。

健壮性是另一个好词-您正在使代码健壮性来应对实际客户将面临的挑战。

这两个词听起来很酷,而且很实用,不要责怪用户或程序员,不要直言不讳。


顺便说一句,这是Metrowerks的吉祥物Arnold,他曾经用热处理炉,锻造,铁砧和小铁锤帮助我们Mac程序员强化和增强我们的代码:


强化通常是指底层硬件的容错能力-或对伽玛射线的抵抗力;-)健壮性可能意味着很多事情
Steven A. Lowe

@Steven:恩,是的。但这是为了与可能是非技术人员的交流,而问题实际上是关于如何“旋转”任务,使任务对那些人来说是可口的。
Bob Murphy

那讲得通; 非技术受众可能已经看过“强化”笔记本电脑的电视广告。因此,他们认为将您的软件放到混凝土上3英尺是可以的;-)
Steven A. Lowe

@Steven:是的,如果他们看过最新的东芝笔记本电脑商业广告,他们还将意识到,如果他们没有给您时间和资源来加强软件,它将带来Zombie Apocalypse。B ^)
Bob Murphy

4

防御性编程

这就是我所教的。回到我们不得不用木头削减自己的碎片的时候。

如果要成为PC,则将其称为“预期”编程。


4

当我学习时,我们称其为“ 防弹”

不过,我所阅读的大多数其他委婉说法也适用。



3

“白痴打样”应同时包括

  • 设计用户界面,使其易于使用,并引导用户以程序员期望的方式输入数据;以及

  • 测试UI,以确定是否可以通过输入意外的数据值来破坏接口。

这两个步骤都可能合理地出现在开发进度表上,在该进度表上,用户体验专家对设计进行了审查,而测试人员对交付的代码进行了审查,以确保正确处理无效数据(无论对您的应用程序而言“正确”的含义)。


您没有回答所提出的问题。
罗伯特·哈维

@罗伯特-我相信我做到了。说“傻瓜校对”的更好方法是“复习设计以提高用户友好性”或“测试接口处理无效数据”,具体取决于您指的是“傻瓜校对”的含义。
贾斯汀·凯夫

好的,那很有道理。
罗伯特·哈维

2

防止白痴不仅涉及简单的输入验证。我什至不会在定义中包括这样的东西。

输入验证是一个过程,在其中您要清理和验证用户数据以消除非法/无意义的值。应该始终使用程序外部的任何信息来完成此操作,以消除明显的内容并保护自己免受攻击(例如sql注入攻击)。

我认为防白痴是一组逻辑,可以防止用户通过其他合法方式意外对他/她自己造成重大损害。

例如,rm拒绝命令rm -rf /和关闭变体与验证或正确性无关。这是一个完全有效的命令。不幸的是,这是一条命令,可以并且可以清除Unix / Linux中所有磁盘上的所有数据。愚蠢的证明会拒绝此命令,并建议rm -rf --i-really-mean-this /;如果处于交互模式,则提示用户输入警告后的肯定响应。

任何对系统有害的东西都应该防止白痴。任何可能引起潜在尴尬的事情都可能成为候选人(例如“即使您在文本中提到了一封邮件,您是否也确定要发送不带附件的电子邮件?”,以及“您确定要将这封电子邮件发送给整个公司?”)

防白痴是QA(试图成为最好的白痴)与Development(试图预见所有这些情况并围绕它们进行设计)之间的合作。

至于更友好的同义词,我可以建议“破坏性代码路径分析”或“为关键操作启用用户反馈”。无论您如何称呼它,您都应该在设计过程中尽早开始。


1

“健全性检查”往往经常会运作良好...


3
对我而言,“健全性检查”与“声明”大致相同:确保内部状态正确。与外部输入验证不完全相同。
梅森惠勒

@Mason,我认为它是在所有点上检查系统状态以寻找有意义的有效输入。例如,除了检查垃圾输入之外,还检查结束日期是否在开始日期之后。我也确实看到了您的观点并同意您的看法。
马龙


1

“错误处理”或“输入验证”将是我用来描述的其他术语。我可以看到防弹药是另一个名词,因为它的想法是使软件足够强大,足以处理几乎所有内容。坚如磐石将是另一个语,我可以想象有人也想在这里使用。


1

“最坏的情况证明”。因为,作为开发人员,我们都知道,如果可以做到,那么就可以做到。因此,您只需要准备好使用软件来处理最坏的情况。

安全措施不仅是保护用户免受外部网络入侵的一种方法,而且还可以保护自己。我们生活在用户不完善的不完美世界中。


1

镀金是我谈论以任何方式(GUI或其他方式)改善最终用户界面体验时所用的礼貌(且非常积极的一面)。

正如您所说,白痴验证是该过程的最大组成部分,同时还涉及设计或工作流程的改进(请考虑最终用户的反馈确认)。

这里的想法是,您可以在工作环境中自由使用该术语,尽管它可能需要一些时间(因此通常会花费一些钱),但它被管理层和用户视为有价值的过程(一旦完成)。

与这个(通常是周期结束)过程相关的许多其他术语使听起来像这样:

  • 暗示用户(通常是管理人员;-)很傻
  • 很难实现
  • 净资产很少

通过将黄金与流程(金属通常等同于“价值”而不是“成本”)关联起来,我已经看到,在某些经理的心态中,流程已从费用变为投资。

就像公开声明,在完成此操作之前,那块笨拙的钢铁还不是珠宝。但是一旦镀上它……那么它就很有价值。


我了解了这个词对您的受众的作用。对于大多数经理来说,镀金是该项目的第一要务。换句话说,不需要的部分。
吉尔伯特·勒布朗克

奇怪-我认为“镀金”一词的含义是您在浪费时间做无法提供任何功能改进的事情。确保有效的输入等确实可以改善功能,因此(根据我的定义)不是镀金。
克里斯·

细节是镀金并不能改善软件内部。它只会改善它的外观。我特别在涉及非技术人员时使用它,因为它与周期流程结束的特定部分无关。人们将其理解为,一旦完成镀金,它的美观,易用和具有附加值。它不仅是一个软件。
moliad 2011年

以我的经验,镀金通常用来描述带有不必要功能的软件,即作为bloatware的同义词。
Mark Booth,

是的,只是做了一点研究,发现该词有时在文学中使用这种方式(感谢评论)。有趣的是,在我工作过的许多地方,从这个意义上讲,白痴打样被认为是镀金的(这实际上取决于您猜测的工作类型)。
moliad 2011年

1

Poka-Yoke最常用于制造过程,但我认为非常合适:

“ [poka yo-ke]是日语术语,意思是“失败保护”或“防错”

它最初被描述为baka-yoke,但因为这意味着“防呆”(或“防白痴”)的名称更改为较温和的poka-yoke。

更广泛地讲,该术语可以指代设计到产品中以防止用户错误操作的任何行为整形约束。”


1

在大型商店中,通用术语也是质量保证(QA)

它是一个通用的模糊目的术语,您可以在发布周期内塑造出自己的特定含义。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.