天天看点

HIT 软件构造 健壮性 正确性

健壮性

定义

系统在不正常输入和不正常外部环境下仍能够表现正常的程度

面向健壮性的编程

  1. 处理未期望的行为和终止
  2. 即使终止执行,也要准确/无歧义地向用户展示全面的错误信息
  3. 封闭实现细节(不给用户获得库、数据结构、指针的途径)

Robustness principle (Postel’s Law)

Be conservative in what you do, be liberal in what you accept from others

(做事情要保守,接受别人的东邪要大方)

正确性

定义

程序按照spec加以执行的能力,是最重要的质量指标

举例比较

错误类型 健壮性方法 正确性方法
浏览器发出包含空格URL 去掉空格 返回HTTP404错误
视频文件有环帧 自动跳过 raise “Corrupt video file” error.
配置文件使用了非法字符 内部检查常用前缀,忽略它们 “bad configuration” error.
奇怪格式额日期输入 尝试解析按照其他格式 invallid date error

正确性和健壮性的权衡

  1. 对外的接口倾向于健壮
  2. 对内的实现倾向于正确

编程的正确姿态

Step 0:使用断言、防御式编程、代码评审等

Step 1:观测失效症状(信息转储、堆栈信息跟踪、运行日志、测试)

Step 2:bug定位,debug

Step 3:fix

Error -> Fault -> Failure

explanation

error是程序员犯的错误,defect是程序的缺陷,fault是代码中的错误,failure是失效、运行时的外在表现error -> defect/fault/bug -> failure

tip

  1. 并不是所有的软件缺陷都是编码错误导致的(比如需求缺口)
  2. 并不是所有的软件缺陷都会导致运行失效
  3. 环境变化时defect可能变成运行失效
  4. 一个单一的缺陷可能导致广泛的失败症状

衡量正确性和健壮性

MTBF(平均失效时间)

为系统故障间隔的算术平均(平均)时间,是从外部观察角度进行的,是直接的

HIT 软件构造 健壮性 正确性

Residual defect rates (残余缺陷率)

每千行代码中遗留的bug的数量,是从内部观察角度进行的,是间接的

欢迎关注公众号BBIT

让我们共同学习共同进步!

HIT 软件构造 健壮性 正确性

继续阅读