防御性设计

维基百科,自由的百科全书

防御性设计也称为防守设计,是在专案设计阶段的应急方案。防御式设计是考虑使用者可能会错误使用的所有情形,用设计手法避免错误使用,或是降低错误使用的机会。例如,假如某一个接头需要以特定的方向插到插座中,而且这个非常重要,会设法设计此接头,让接头必需依正确的方向才能插入插座中。电源插头多半会依此方式设计,避免火线和中心线插反。

软体工程中的防御式设计称防御性编程。著名的摩菲定理说明了为何需要防御式设计。防御式设计是和契约式设计相反的一种设计方式,契约式设计的作法会假设所有向伺服组件提出运作请求的客户组件,都会符合运作时需要的前置条件。不过若其假设太过冒险(例如多通道的客户端-伺服器系统,或是分散式计算),就比较适合使用和契约式设计相反的防御性编程。

应用

电脑软体

软体实现的决策以及软体设计的一些作法可以让软体更安全,找到使用者的错误。

  • 资料输入画面进行输入的基本检查,例如数字栏位只能填数字、正负号及一个小数点等。
  • 检查输入值是否合理。例如工作场所受伤个案数(或是受伤人数)可能为0,但不可能是负数,而且一定会是整数。每名员工一周工作的总工时可能为0,也可能有分数或小数,但不可能超过168小时,也不可能超过其出席天数乘以24。
  • 若文字处理器要载入一个已储存的文件,需要进行扫描,确认其格式正确,没有损坏。若文件已损坏,程式应该告知使用者,让使用者可以选择要接受部份正确的文件,或是拒绝使用该文件。不论选择哪一个,程式都应该要继续执行,不会因为文件损坏就自动结束程式。

电子

许多电子连接器会考虑防御式设计,故意设计成非对称。

相关条目

参考资料