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(平均失效时间)

为系统故障间隔的算术平均(平均)时间,是从外部观察角度进行的,是直接的
在这里插入图片描述

Residual defect rates (残余缺陷率)

每千行代码中遗留的bug的数量,是从内部观察角度进行的,是间接的
欢迎关注公众号BBIT
让我们共同学习共同进步!

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值