软件构造 7-1 健壮性与安全性

Posted hitycy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件构造 7-1 健壮性与安全性相关的知识,希望对你有一定的参考价值。

健壮性与安全性

什么是健壮性与安全性?

如何衡量健壮性与安全性?

 

 

健壮性:系统或组件在存在无效输入或压力环境时一颗正确运行的程度。

健壮性编程关注异常终止和异常活动的处理。

 

健壮性原则:严于律己(满足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最好,严格安全的代码

 

 接下来是本章的结构图

技术图片

 

 

 谢谢观看

 

以上是关于软件构造 7-1 健壮性与安全性的主要内容,如果未能解决你的问题,请参考以下文章

软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结

软件构造第七章第一节 健壮性和正确性的区别

软件构造正确性和健壮性

软件构造 第七章第一节 健壮性和正确性的区别

软件构造第一章 软件构造基础

关于软件构造最后一部份(PPT212)的复习