【本章学习建议】
根据考试大纲,本章主要考查系统架构设计师单选题,预计考2分左右,案例分析偶尔会考到,对应第二版教材第9章,侧重于概念知识,考查知识点多来源于教材。
13.1 软件可靠性基本概念
13.1.1 软件可靠性定义
软件可靠性(Software Reliability)是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
软件可靠性和硬件可靠性区别:
(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。
(2)物理退化:软件不存在物理退化现象,硬件失效主要是由于物理退化所致。
(3)唯一性:软件是唯一的,每个复制版本都一样,而两个硬件不可能完全一样。
(4)版本更新周期:硬件较慢,软件较快。
13.1.2 软件可靠性的定量描述
软件可靠性的定量描述:
(1)规定时间:自然时间、运行时间、执行时间(占用CPU)。
(2)失效概率:软件运行初始时刻失效概率为0,随着时间增长单调递增,不断趋向于1。
(3)可靠度:软件系统在规定的条件下、规定的时间内不发生失效的概率。等于1-失效概率。
(4)失效强度:单位时间软件系统出现失效的概率。
(5)平均失效前时间(MTTF):平均失效等待时间,系统从开始运行到发生第一次故障所经历的平均时间。
(6)平均恢复前时间(MTTR):平均修复时间,从出现故障到修复成功的时间。
(7)平均故障间隔时间(MTBF):平均失效间隔时间,失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。(系统两次连续故障之间的平均时间)。MTBF=MTTF+MTTR。
系统可用性=MTTF/(MTTF+MTTR)*100%。
13.1.3 可靠性目标
可靠性目标是指客户对软件性能满意程度的期望。通常用可靠度、故障强度和平均失效时间(MTTF)等指标来描述。
13.1.4 可靠性测试的意义
可靠性测试的意义:
(1)软件失效可能造成灾难性的后果。
(2)软件的失效在整个计算机系统失效中的比例较高。
(3)软件可靠性技术很不成熟,加剧了软件可靠性问题的重要性。
(4)软件可靠性问题是造成软件费用增长的主要原因之一。
(5)系统对于软件的依赖性越来越强,软件对生产活动和社会生活的影响越来越大,从而增加了软件可靠性问题在软件工程领域乃至整个计算机工程领域的重要性。
可靠性测试的目的:
(1)发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。
(2)为软件的使用和维护提供可靠性数据。
(3)确认软件是否达到可靠性的定量要求。
13.1.5 广义的可靠性测试与狭义的可靠性测试
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。