软件可靠性安全性技术 ss
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
……
2020/6/19
8
软件可靠性安全性 设计准则
2020/6/19
9
软件可靠性和安全性设计的一般性指导可参考 ➢ GJB/Z 102-1997 软件可靠性和安全性设计准则 ➢ Q/WE 871-1999 软件可靠性和安全性设计指南
二院制定的《武器系统软件可靠性安全性设计准 则》,则是结合二院以往地空导弹武器系统软件中实 际暴露的典型问题,总结整理归纳出的有关软件可靠 性和安全性设计的具体细则,适用于二院武器系统软 件开发中可靠性和安全性的设计。
4.5 余量的设计
应注意关键软件的余量设计,这些余量包括:存储量、 IO通道吞吐量及处理时间等。在同步时间要求较高的系统中, 处理时间的余量应不少于20%。如,某系统9ms通讯一次,则 该系统的处理时间应小于7.2ms。
余量设计为我们在软件测试时使用一些在线动态测试工 具,如CodeTest等,提供了必要的应用条件。
2020/6/19
5
Private Sub OpenFile() Dim i, N Open Trim(Text1.Text) For Input As #1 Input #1, N ReDim A#(1 To N) For i = 1 To N Input #1, A#(i) Next Close #1
A#=1,B#=0时结果如何? exam1
2020/6/19
3
软件可ቤተ መጻሕፍቲ ባይዱ性
软件可靠性:在一定条件下软件实现所要求功能的能力。 关于软件可靠性的误区:软件对一组条件下的运行,如 果是对的,则永远是对的,何有可靠性? 对软件可靠性误区的回答:对已认为满足了功能和性能 要求的软件,为何有的软件在实际的运行中会经常出错?追 其原因都是对运行中异常的操作、输入、事件无防范处理措 施,诸如人机交互界面软件对误操作经常死机,通讯软件对 外界干扰经常瘫痪等,这能说不是软件可靠性的问题吗?
2020/6/19
4
软件可靠性的一个示例
前面的exam1就是一个示例。我们再给一个示例。用Visual Basic编写一个读入给定数据文件的程序。用户输入的文件名存 放在text1.txt中,数据文件格式是:第一个数是整型数N(表明 以下存放了N个浮点数),后续以空格、逗号或换行为区分符存 放N个浮点数。OpenFile()子程序完成将数据文件中的N个浮点数 读出存放在变量数组A#()中。
C = E – N + 1 = RG + 1
上 图 中 , N=10, E=14, 所 以 RG=4, C=5。
在软件单元测试时,希望能选定最少的测试用例覆盖所有路径,这需要确定
模 块 中 的 独 立 路 径 数 ,“ 圈 复 杂 度 ” 就 是 其 独 立 路 径 数 。 如 在 上 图 中 , C = 5 , 其 五 条
独 立 路 径 分 别 为 : ABCEGJ, ABCEFIJ, ABCEFHJ, ABCDJ, ABCDDJ。
做 为 软 件 模 块 的 “ 圈 复 杂 度 ” 原 则 上 要 求 不 超 过 10。
2020/6/19
11
圈复杂度问题的示例
圈复杂度115的控制流图
2020/6/19
圈复杂度10的控制流图12
End Sub
'打开数据文件 '读入数据个数
'读入数据 '关闭数据文件
文件不存在或数据格式错误时结果如何? exam2
2020/6/19
6
软件安全性
软件安全性:对由于软件的缺陷造成人员伤亡、财产损 失等危险事件的防范能力。
关于软件安全性的误区:软件只是代码程序和相应文档 ,软件结果只是对与错,何有安全性?
2020/6/19
13
4.9.1 谨防实数取整的精度损失
实数取整的转换函数int()在C中是截取取整的,如果需 要四舍五入,则必须特殊处理。
例如: float f = 1.9; int k; k = (int)(f); 则 k 是 1,而不是 2。
2020/6/19
14
实数四舍五入后取整的方法
如果 f >= 0, 则 int(f + 0.5) 是四舍五 入后的取整结果;
软件可靠性安全性技术
几个基本术语
❖ 故障(Fault) ❖ 差错(Error) ❖ 失效(Failure) ❖ 缺陷(Defect) ❖ 失误(Mistake) ❖ 隐错(Bug)
2020/6/19
2
软件质量的一个示例
在一段Visual Basic 6.0编写的程序Division中,从文本框
1中输入数A#,从文本框2中输入数B#,计算C#=A#/B#从文本框3
对软件安全性误区的回答:对实时嵌入式软件而言,软 件的指令直接控制着硬件的动作,如果软件不对所控制硬件 的指令进行安全性保护,有何信心保证系统是安全的?由于 软件的错误造成重大财产损失、严重人员伤亡的实例已屡见 不鲜,这能说软件没有安全性的问题吗?
2020/6/19
7
软件安全性的实例
转塔设备的调转控制
2020/6/19
10
4.4 圈复杂度的限制
“ 圈 复 杂 度 ”( C y c l o m a t i c C o m p l e x i t y ) 反 映 的 是 软 件 模 块 本 身 内 在 的 结 构 复杂度。
结点
A
B 边
C
1
5 D
区域
E
4 F
G 2
H
3
I
J
记 : 结 点 数 N, 边 数 E, 区 域 数 RG, 圈 复 杂 度 C。 则
如果 f < 0,则 int(f – 0.5) 是四舍五入 后的取整结果。
2020/6/19
15
4.11 安全关键信息码的设计
安全关键的信息码应采用具有检错能力的编码。 禁止对关键信息用一位的逻辑判别,如用“0”来表示 “不起飞”,用“1”来表示“起飞”。对此具有检错能力 的编码可以为用二位的逻辑判别,如用“01”来表示“不起 飞”,用“10”来表示“起飞”。显然在有一位可能受干扰 的系统假设下,用一位的逻辑判别无法检测其是否受干扰, 而二位的逻辑判别则可以检测其是否受干扰,如“00”和 “11”就表示信号受到了干扰。
中输出,其程序如下:
Public A#, B#, C# Private Sub Division()
A# = Val(Text1.Text) '从文本框1中输入 B# = Val(Text2.Text) '从文本框2中输入 C# = A# / B# Text3.Text = Str(C#) ‘从文本框3中输出 End Sub
2020/6/19
8
软件可靠性安全性 设计准则
2020/6/19
9
软件可靠性和安全性设计的一般性指导可参考 ➢ GJB/Z 102-1997 软件可靠性和安全性设计准则 ➢ Q/WE 871-1999 软件可靠性和安全性设计指南
二院制定的《武器系统软件可靠性安全性设计准 则》,则是结合二院以往地空导弹武器系统软件中实 际暴露的典型问题,总结整理归纳出的有关软件可靠 性和安全性设计的具体细则,适用于二院武器系统软 件开发中可靠性和安全性的设计。
4.5 余量的设计
应注意关键软件的余量设计,这些余量包括:存储量、 IO通道吞吐量及处理时间等。在同步时间要求较高的系统中, 处理时间的余量应不少于20%。如,某系统9ms通讯一次,则 该系统的处理时间应小于7.2ms。
余量设计为我们在软件测试时使用一些在线动态测试工 具,如CodeTest等,提供了必要的应用条件。
2020/6/19
5
Private Sub OpenFile() Dim i, N Open Trim(Text1.Text) For Input As #1 Input #1, N ReDim A#(1 To N) For i = 1 To N Input #1, A#(i) Next Close #1
A#=1,B#=0时结果如何? exam1
2020/6/19
3
软件可ቤተ መጻሕፍቲ ባይዱ性
软件可靠性:在一定条件下软件实现所要求功能的能力。 关于软件可靠性的误区:软件对一组条件下的运行,如 果是对的,则永远是对的,何有可靠性? 对软件可靠性误区的回答:对已认为满足了功能和性能 要求的软件,为何有的软件在实际的运行中会经常出错?追 其原因都是对运行中异常的操作、输入、事件无防范处理措 施,诸如人机交互界面软件对误操作经常死机,通讯软件对 外界干扰经常瘫痪等,这能说不是软件可靠性的问题吗?
2020/6/19
4
软件可靠性的一个示例
前面的exam1就是一个示例。我们再给一个示例。用Visual Basic编写一个读入给定数据文件的程序。用户输入的文件名存 放在text1.txt中,数据文件格式是:第一个数是整型数N(表明 以下存放了N个浮点数),后续以空格、逗号或换行为区分符存 放N个浮点数。OpenFile()子程序完成将数据文件中的N个浮点数 读出存放在变量数组A#()中。
C = E – N + 1 = RG + 1
上 图 中 , N=10, E=14, 所 以 RG=4, C=5。
在软件单元测试时,希望能选定最少的测试用例覆盖所有路径,这需要确定
模 块 中 的 独 立 路 径 数 ,“ 圈 复 杂 度 ” 就 是 其 独 立 路 径 数 。 如 在 上 图 中 , C = 5 , 其 五 条
独 立 路 径 分 别 为 : ABCEGJ, ABCEFIJ, ABCEFHJ, ABCDJ, ABCDDJ。
做 为 软 件 模 块 的 “ 圈 复 杂 度 ” 原 则 上 要 求 不 超 过 10。
2020/6/19
11
圈复杂度问题的示例
圈复杂度115的控制流图
2020/6/19
圈复杂度10的控制流图12
End Sub
'打开数据文件 '读入数据个数
'读入数据 '关闭数据文件
文件不存在或数据格式错误时结果如何? exam2
2020/6/19
6
软件安全性
软件安全性:对由于软件的缺陷造成人员伤亡、财产损 失等危险事件的防范能力。
关于软件安全性的误区:软件只是代码程序和相应文档 ,软件结果只是对与错,何有安全性?
2020/6/19
13
4.9.1 谨防实数取整的精度损失
实数取整的转换函数int()在C中是截取取整的,如果需 要四舍五入,则必须特殊处理。
例如: float f = 1.9; int k; k = (int)(f); 则 k 是 1,而不是 2。
2020/6/19
14
实数四舍五入后取整的方法
如果 f >= 0, 则 int(f + 0.5) 是四舍五 入后的取整结果;
软件可靠性安全性技术
几个基本术语
❖ 故障(Fault) ❖ 差错(Error) ❖ 失效(Failure) ❖ 缺陷(Defect) ❖ 失误(Mistake) ❖ 隐错(Bug)
2020/6/19
2
软件质量的一个示例
在一段Visual Basic 6.0编写的程序Division中,从文本框
1中输入数A#,从文本框2中输入数B#,计算C#=A#/B#从文本框3
对软件安全性误区的回答:对实时嵌入式软件而言,软 件的指令直接控制着硬件的动作,如果软件不对所控制硬件 的指令进行安全性保护,有何信心保证系统是安全的?由于 软件的错误造成重大财产损失、严重人员伤亡的实例已屡见 不鲜,这能说软件没有安全性的问题吗?
2020/6/19
7
软件安全性的实例
转塔设备的调转控制
2020/6/19
10
4.4 圈复杂度的限制
“ 圈 复 杂 度 ”( C y c l o m a t i c C o m p l e x i t y ) 反 映 的 是 软 件 模 块 本 身 内 在 的 结 构 复杂度。
结点
A
B 边
C
1
5 D
区域
E
4 F
G 2
H
3
I
J
记 : 结 点 数 N, 边 数 E, 区 域 数 RG, 圈 复 杂 度 C。 则
如果 f < 0,则 int(f – 0.5) 是四舍五入 后的取整结果。
2020/6/19
15
4.11 安全关键信息码的设计
安全关键的信息码应采用具有检错能力的编码。 禁止对关键信息用一位的逻辑判别,如用“0”来表示 “不起飞”,用“1”来表示“起飞”。对此具有检错能力 的编码可以为用二位的逻辑判别,如用“01”来表示“不起 飞”,用“10”来表示“起飞”。显然在有一位可能受干扰 的系统假设下,用一位的逻辑判别无法检测其是否受干扰, 而二位的逻辑判别则可以检测其是否受干扰,如“00”和 “11”就表示信号受到了干扰。
中输出,其程序如下:
Public A#, B#, C# Private Sub Division()
A# = Val(Text1.Text) '从文本框1中输入 B# = Val(Text2.Text) '从文本框2中输入 C# = A# / B# Text3.Text = Str(C#) ‘从文本框3中输出 End Sub