健壮性与安全性
什么是健壮性与安全性?
如何衡量健壮性与安全性?
健壮性:系统或组件在存在无效输入或压力环境时一颗正确运行的程度。
健壮性编程关注异常终止和异常活动的处理。
健壮性原则:严于律己(满足specification),宽以待人(接受各种输入)
健壮性编程原则(把用户当做小孩)
1.用户会修改代码,而且自己写的还不对
2.用户不会看specification(所以我们应该在他操作错误时返回明确的错误信息帮助其改正)
3.危险行为,我们不应当将信息暴露给用户,以至于产生漏洞,使用户专注于自己的代码部分
4.使不可能发生的事情真的不可能发生。(指异常)
安全性:正确实现规格说明的能力
比较健壮性:
1.安:不会有不准确结果,无结果优于不准确。
2.健:总是尝试做一些事情,确保软件运行,即使有时会产生不准确的结果。
总;健壮性增加了对常见错误和非严重错误的容错性。而正确性在遇到任何不完美输入时会引发错误
例子:
健壮性:对第三方和用户更为友好。(在出现错误会提醒给他们第二次机会,而不是直接崩)
正确性:对开发者友好1.专注一种模式,所有要求都满足。
2.因为单一所以易于理解,易于维护
内外兼修
外部接口,(UI,输入文件,配置,API等):使其健壮起来,尽可能的友善(就像公司前台),即使别人输入的一堆垃圾我们也要微笑面对。
内部模式:越简单越好,最好100%的有用状态。使用不变量和断言使命令安全。抛出excpetion(大的不是具体的以保证最快抛出)
及对外健壮,对内正确
可靠性:系统在任何需要的规定条件下执行所需功能的能力
可靠性 = 健壮性 + 正确性
软件灾难的条款
error:在开发过程中的错误决定
defect:使程序偏离原来的目的
fault:在代码中错误或者缺失该有的功能
failure:在在运行过程中fault的体现,在运行过程中与希望的行为相悖
通常 error - > defect/fault/bug - >failure
例子
注意:
1.并非所有缺件缺陷都是编码错误引起的,如遗漏需求
2.不是否有缺陷(defects)都必然导致失败
3.在环境改变时缺陷会变为failure
4.单个缺陷可能会产生各种各样的失败现象
提高健壮性和正确性
1.健壮性安全性编程。(断言,防御性编程,代码审查,形式验证)
2.发现failure的症状(信息转储,栈追踪,执行日志,测试)
3.找出潜在fault(debug,bug定位)
4.修复errors
如何衡量健壮性和正确性
1.MTBF:平均故障间隔时间,相邻两次故障之间的平均工作
2.MTBF的计算历来与系统failure的定义
a.导致系统不可使用的failure
b.出现failure,但是系统仍可以运行
MTBF:可修复
MTTF:不可修复系统的平均失效时间
Residual defect rates:每千行代码的产生bug数
1 - 10 正常工业软件
0.1 - 1高质量代码
0.01 - 0.1最好,严格安全的代码
接下来是本章的结构图
谢谢观看
原文地址:https://www.cnblogs.com/hitycy/p/10880550.html