




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第十一章第十一章 软软 件件 可可 靠靠 性性第一节第一节 软件可靠性的基本概念软件可靠性的基本概念-(6)一、软件的环境条件一、软件的环境条件-(8)三、三、 软件的故障软件的故障 -(11) 四、影响软件可靠性因素四、影响软件可靠性因素-(15)第二节第二节 软软 件件 可可 靠靠 性性 的基的基 本本 特特 征征 量量-(21)二、时间的度量二、时间的度量-(10)第三节第三节 软件可靠性的数学模型软件可靠性的数学模型-(29)一、软件可靠性建模概述一、软件可靠性建模概述-(29)二、二、J - M (JelinskiMoranda) 模型模型-(36)三、三、Halstead模型模型
2、-(45)四、四、GO (Goel一一Okumoto) NHPP模型模型-(50)2 随着计算机软件的飞速发展,随着计算机软件的飞速发展,软件可靠性已变软件可靠性已变得越来越重要得越来越重要。据统计,计算机系统中,由于软件。据统计,计算机系统中,由于软件错误引起的故障占所有故障的错误引起的故障占所有故障的65。第十一章第十一章 软软 件件 可可 靠靠 性性 究其原因究其原因是软件太复杂了,一个小小的程序,是软件太复杂了,一个小小的程序,其可能的路径可以是天文数字,以致于在软件开发其可能的路径可以是天文数字,以致于在软件开发过程中难以对其作穷尽的测试,或者说难于完全排过程中难以对其作穷尽的测试,
3、或者说难于完全排除软件缺陷。除软件缺陷。3图图11-1简单程序的控制流程图简单程序的控制流程图 为了说明软件的复杂性,让我们考虑一个为了说明软件的复杂性,让我们考虑一个由由10至至20条条高级语言构成的程序,其控制流程图如图高级语言构成的程序,其控制流程图如图11-1所示。所示。4 图图11-111-1中每个结点或圆圈代表一段可能以转移语中每个结点或圆圈代表一段可能以转移语句结束的顺序执行语句,每条弧代表两段程序间的控句结束的顺序执行语句,每条弧代表两段程序间的控制转移。程序含有一个最少重复制转移。程序含有一个最少重复20次的循环语句,而次的循环语句,而在循环体内,则有一些嵌套的条件语句。在循
4、环体内,则有一些嵌套的条件语句。 假设程序中所有判断都假设程序中所有判断都是相互独立的,由于有是相互独立的,由于有5条条贯贯穿循环体的路径:穿循环体的路径:即即 cdefhm; 图图11-1简单程序的控制流程图简单程序的控制流程图 c defim; cdegjm; cdegkm; cdlm。5 可见,软件可靠性问题在软件工程实践中极为重要,可见,软件可靠性问题在软件工程实践中极为重要,对软件可靠性问题的研究在国际上已十分活跃。对软件可靠性问题的研究在国际上已十分活跃。 图图11-1简单程序的控制流程图简单程序的控制流程图 那么从点那么从点A到点到点B的所有独立路径数为:的所有独立路径数为: 如
5、果考虑程序输入如果考虑程序输入数据的变化,那情况就更为复杂了。数据的变化,那情况就更为复杂了。 亿。或,约为1614119201010555 6 广义的可靠性广义的可靠性是指一切旨在避免、减少、处是指一切旨在避免、减少、处理、度量软件故障(错误、缺陷、失效)的分析、理、度量软件故障(错误、缺陷、失效)的分析、设计、测试方法、技术和实践活动。设计、测试方法、技术和实践活动。第一节第一节 软件可靠性的基本概念软件可靠性的基本概念 关于关于 软件可靠性的确切定义,国际学术界曾经软件可靠性的确切定义,国际学术界曾经有过长期的争论。对软件可靠性定义的理解有有过长期的争论。对软件可靠性定义的理解有广义广义
6、和狭义两种:和狭义两种:广义的可靠性:广义的可靠性: 与之相关的内容有软件可靠性度量、软件可靠与之相关的内容有软件可靠性度量、软件可靠性设计、软件可靠性建模、软件可靠性测试和软件性设计、软件可靠性建模、软件可靠性测试和软件可靠性管理等。可靠性管理等。7狭义的可靠性:狭义的可靠性: 狭义的可靠性狭义的可靠性是指在工程上软件在规定的运是指在工程上软件在规定的运行环境中和规定的时间内无故障运行的行环境中和规定的时间内无故障运行的概率概率(可(可靠度)。靠度)。 与之相关的内容有软件可靠性度、软件失效与之相关的内容有软件可靠性度、软件失效强度和软件平均失效时间等。强度和软件平均失效时间等。8一、软件的
7、环境条件一、软件的环境条件 例如计算机型号、字长、内存容量、外存介质例如计算机型号、字长、内存容量、外存介质的数量及容量、输入和输出设备的数量、通信网络、的数量及容量、输入和输出设备的数量、通信网络、操作系统和数据管理系统、编译程序及其他支持软操作系统和数据管理系统、编译程序及其他支持软件等。件等。环境条件还包括环境条件还包括软件的输入分布。软件的输入分布。软件的输入软件的输入有外部和内部输入。有外部和内部输入。 环境条件包括与程序存储有关的环境条件包括与程序存储有关的计算机及其计算机及其操作系统操作系统。 这些因素对程序的运行有很大的影响,但在这些因素对程序的运行有很大的影响,但在使使用中一
8、般没有变化用中一般没有变化。9 程序运行一次所需的输入数据构成程序输入空间程序运行一次所需的输入数据构成程序输入空间的一个元素,这个元素是一个多维向量。全部输入向的一个元素,这个元素是一个多维向量。全部输入向量的集合构成程序的输入空间。量的集合构成程序的输入空间。 程序在启动运行时,需要给变量赋值程序在启动运行时,需要给变量赋值,即给程序即给程序提供输入数据提供输入数据,输入的数据可能由输入的数据可能由外部设备输入外部设备输入,也,也可能由早已存储在可能由早已存储在计算机内计算机内等待读取。等待读取。 一组输入数据经过程序处理后得到一组输出数据,一组输入数据经过程序处理后得到一组输出数据,这些
9、输出数据构成一个输出向量,全部输出向量的集这些输出数据构成一个输出向量,全部输出向量的集合构成程序的输出空间。合构成程序的输出空间。 程序输入空间的元素数量非常庞大,程序运行程序输入空间的元素数量非常庞大,程序运行中每个元素被选用的概率各不相同,形成一定的中每个元素被选用的概率各不相同,形成一定的概率概率分布分布,我们称此为程序运行剖面,程序的不同的运行,我们称此为程序运行剖面,程序的不同的运行状态,对应于不同的运行剖面。状态,对应于不同的运行剖面。10二、时间的度量二、时间的度量1. 日历时间日历时间软件的测试和运行以日、周、月、年等为计时单位。软件的测试和运行以日、周、月、年等为计时单位。
10、2. 时钟时间时钟时间 软件从运行开始到运行结束以时、分、秒为计时单软件从运行开始到运行结束以时、分、秒为计时单位。其中包括等待时间和其他辅助时间,但不包括停机位。其中包括等待时间和其他辅助时间,但不包括停机占用时间。占用时间。3. 执行时间执行时间 计算机在执行程序时,实际占用中心处理器(计算机在执行程序时,实际占用中心处理器(CPU)的的时间,又称时间,又称CPU时间。以时间。以CPU时间为可靠性度量的时间时间为可靠性度量的时间。 例如,某软件在一周内运行例如,某软件在一周内运行48小时,小时,CPU工作的时间工作的时间是运行时间的是运行时间的2/3,则日历时间是一周;时钟时间是则日历时间
11、是一周;时钟时间是48小时,小时,CPU时间是时间是32小时。小时。11 软件可靠性工程的主要目标是保证软件可靠性工程的主要目标是保证提高软件可靠提高软件可靠性性。为达到这一目标,显然首先要弄清软件为什么会。为达到这一目标,显然首先要弄清软件为什么会出现故障。只有这样,才有可能在软件开发过程中减出现故障。只有这样,才有可能在软件开发过程中减少导致软件故障的隐患,且一旦出现什么故障,有可少导致软件故障的隐患,且一旦出现什么故障,有可能采取有效措施加以清除。能采取有效措施加以清除。 三、三、 软件的故障软件的故障 弄清软件弄清软件故障机理故障机理是软件可靠性分析的根本目标。是软件可靠性分析的根本目
12、标。由于软件内部逻辑复杂,运行环境动态变化,且不同由于软件内部逻辑复杂,运行环境动态变化,且不同的软件差异可能很大,因而软件的软件差异可能很大,因而软件故障机理可能有不同故障机理可能有不同的表现形式。的表现形式。 譬如有的故障过程比较简单,易于追踪分析,而譬如有的故障过程比较简单,易于追踪分析,而有的故障过程可能非常复杂,难于甚至不可能加以详有的故障过程可能非常复杂,难于甚至不可能加以详尽描述和分析。尤其是运行于高度复杂实时环境中的尽描述和分析。尤其是运行于高度复杂实时环境中的大型软件大型软件。121软件缺陷软件缺陷 软件开发中残留的内在缺陷称为软件缺陷软件开发中残留的内在缺陷称为软件缺陷。这
13、些缺陷。这些缺陷可以在软件生存期的各个阶段被引入。可以在软件生存期的各个阶段被引入。 软件故障机理可描述为:软件故障机理可描述为:软件缺陷、软件错误和软件缺陷、软件错误和软件故障软件故障。 缺陷缺陷 错误错误 故障故障(失效失效) 在软件开发的各阶段,软件始终离不开人的参与,在软件开发的各阶段,软件始终离不开人的参与,而人难免会犯错误,这样就必然给软件留下不良的痕迹。而人难免会犯错误,这样就必然给软件留下不良的痕迹。 例如一段程序进行某些数据处理,若在处理过程例如一段程序进行某些数据处理,若在处理过程中就产生软件错误,则说明这段程序存在缺陷或缺少中就产生软件错误,则说明这段程序存在缺陷或缺少一
14、个程序段。一个程序段。13 软件缺陷软件缺陷是一个是一个静止的静止的现象,只在一定的输入条件现象,只在一定的输入条件下才能被激活导致软件错误,而且软件错误也不一定导下才能被激活导致软件错误,而且软件错误也不一定导致软件故障。致软件故障。比如容错软件中的错误就可以被检测出来比如容错软件中的错误就可以被检测出来并可纠正或避免,而不导致故障。并可纠正或避免,而不导致故障。 软件缺陷在一定条件下暴露并导致系统在运行中出软件缺陷在一定条件下暴露并导致系统在运行中出现可感知的不正常、不正确、不按规范执行的内部状态,现可感知的不正常、不正确、不按规范执行的内部状态,则认为软件出现则认为软件出现“错误错误”,
15、简称出错出错。2软件错误软件错误 软件错误是由于软件缺陷造成的。软件错误是由于软件缺陷造成的。一个错误可能一个错误可能是多个故障源是多个故障源。例如,在求最大值的程序中,设计人例如,在求最大值的程序中,设计人员由于疏忽将求得的平均值作为最大值,这就是一个员由于疏忽将求得的平均值作为最大值,这就是一个软件错误。软件错误。 所谓不正确的内部状态,是指在此状态下,当正常所谓不正确的内部状态,是指在此状态下,当正常的算法继续下去时,就会发生软件故障。的算法继续下去时,就会发生软件故障。14 在对错误不作任何纠正和恢复的情况下,导致系统在对错误不作任何纠正和恢复的情况下,导致系统的输出不满足用户提供的正
16、式文件上指明的要求,或双的输出不满足用户提供的正式文件上指明的要求,或双方协议的条款,称为方协议的条款,称为软件的一次故障软件的一次故障。3软件故障软件故障 软件故障是由于软存错误造成的一种外部表现,它是软件故障是由于软存错误造成的一种外部表现,它是动态的、程序执行过程中出现的行为表现。动态的、程序执行过程中出现的行为表现。 综上所述,软件缺陷是人为错误。当一个软件缺陷综上所述,软件缺陷是人为错误。当一个软件缺陷被激活时,便产生一个或多个软件错误;当软件错误不被激活时,便产生一个或多个软件错误;当软件错误不加以纠正时,便不可避免地产生软件故障。同一个软件加以纠正时,便不可避免地产生软件故障。同
17、一个软件缺陷下可能产生不同的软件故障。缺陷下可能产生不同的软件故障。15 软件可靠性因素软件可靠性因素是指软件生存期内影响软件可靠性的是指软件生存期内影响软件可靠性的因素。显然,有许许多多因素可以影响软件可靠性,包括因素。显然,有许许多多因素可以影响软件可靠性,包括技术的、社会的、经济的、甚至文化的,因为在软件生存技术的、社会的、经济的、甚至文化的,因为在软件生存期的各个阶段均有人的干预,而人的行为受到各方面因素期的各个阶段均有人的干预,而人的行为受到各方面因素的影响。的影响。 四、影响软件可靠性因素四、影响软件可靠性因素 从从技术角度技术角度来看,影响软件可靠性的因素主要包括来看,影响软件可
18、靠性的因素主要包括以下几个方面:以下几个方面: 软件可靠性定义相对于运行环境而言,同一软件在软件可靠性定义相对于运行环境而言,同一软件在不同运行剖面下,其可靠性行为可能极不相同。不同运行剖面下,其可靠性行为可能极不相同。1. 运行环境运行环境(剖面剖面)让我们考虑一个极端例子。让我们考虑一个极端例子。 我们知道,软件故障是软件缺陷在一定输入情况下我们知道,软件故障是软件缺陷在一定输入情况下被激活的结果。于是可以将软件输入域划分为两个部分被激活的结果。于是可以将软件输入域划分为两个部分( (G和和F) ) :16 G 中的输入不会激活软件的缺陷,中的输入不会激活软件的缺陷,F 中的输入恒激中的输
19、入恒激活软件缺陷。如果运行剖面不包含活软件缺陷。如果运行剖面不包含F中的输入,则软件中的输入,则软件不会出现故障,其可靠性恒为不会出现故障,其可靠性恒为1。 反之,如果运行剖面反之,如果运行剖面不包含不包含G中的输入,则每一输中的输入,则每一输入情况下均出现故障。如果没有容错措施,则导致软件入情况下均出现故障。如果没有容错措施,则导致软件故障,故障,软件可靠性恒为软件可靠性恒为0。 17 如果软件只含一条指令,那么谈论软件可靠性问如果软件只含一条指令,那么谈论软件可靠性问题便失去意义。随着软件规模的增大,软件可靠性问题便失去意义。随着软件规模的增大,软件可靠性问题愈显突出。题愈显突出。2.软件
20、规模软件规模 软件工程实践的一个侧面可以反映这一点,即单元软件工程实践的一个侧面可以反映这一点,即单元测试一般由编程人员本人进行,而综合测试则需独立的测试一般由编程人员本人进行,而综合测试则需独立的测试人员。软件可靠性增长模型也主要应用于综合测试测试人员。软件可靠性增长模型也主要应用于综合测试阶段。阶段。 在我们考虑软件可靠性问题时,软件一般是在我们考虑软件可靠性问题时,软件一般是指中型指中型以上软件以上软件(40005000条以上语句条以上语句),这时可靠性问题难,这时可靠性问题难以对付。以对付。18 软件内部结构一般比较复杂,且动态变化,对可软件内部结构一般比较复杂,且动态变化,对可靠性的
21、影响也不甚清楚。靠性的影响也不甚清楚。3. 软件内部结构软件内部结构 关于软件可靠性设计技术的外延并不明确,但一般关于软件可靠性设计技术的外延并不明确,但一般是指软件设计阶段中采用的用以保证和提高软件可靠性是指软件设计阶段中采用的用以保证和提高软件可靠性为主要目标的软件技术。如故障模式与影响分析为主要目标的软件技术。如故障模式与影响分析(FMECA)、故障树分析故障树分析(FTA)等。显然采用或不采用软等。显然采用或不采用软件可靠性设计技术对软件可靠性必有影响。件可靠性设计技术对软件可靠性必有影响。4. 软件可靠性设计技术。软件可靠性设计技术。 但总的说来,结构越复杂,软件复杂度越高,内但总的
22、说来,结构越复杂,软件复杂度越高,内含缺陷数越多,因而软件可靠度越低。含缺陷数越多,因而软件可靠度越低。 19 显然,软件开发人员(包括测试人员显然,软件开发人员(包括测试人员)的能力愈的能力愈强,经验愈丰富,所犯错误便可能愈少,所得软件产强,经验愈丰富,所犯错误便可能愈少,所得软件产品质量愈高,相应的可靠性也愈高。品质量愈高,相应的可靠性也愈高。 5. 软件可靠性测试软件可靠性测试 软件可靠性管理旨在系统管理软件生存期各阶软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动。使之段的可靠性活动。使之系统化、规范化、一体化系统化、规范化、一体化,这样就可以避免许多人为错误,以提高软件可靠性。
23、这样就可以避免许多人为错误,以提高软件可靠性。 研究表明,软件测试方法与资源投入对软件可研究表明,软件测试方法与资源投入对软件可靠性有不可忽视的影响。靠性有不可忽视的影响。6. 软件可靠性管理软件可靠性管理7. 软件开发人员能力和经验软件开发人员能力和经验20 研究表明,程序语言对软件可靠性有影响。譬如,研究表明,程序语言对软件可靠性有影响。譬如,结构化语言结构化语言Ada优于优于Fortran语言,而软件测试工具优语言,而软件测试工具优劣则影响测试效果。劣则影响测试效果。 软件工程表明,开发方法对软件可靠性有显著影软件工程表明,开发方法对软件可靠性有显著影响。与非结构化方法比较,结构化方法可
24、以明显减少响。与非结构化方法比较,结构化方法可以明显减少软件缺陷数。软件缺陷数。 总之,有许许多多的因素影响软件可靠性,在软总之,有许许多多的因素影响软件可靠性,在软件设计时应尽量采用有利于提高软件可靠性的手段和件设计时应尽量采用有利于提高软件可靠性的手段和方法。方法。8. 软件开发方法软件开发方法9. 软件开发环境软件开发环境返回返回121软件质量软件质量主要由以下几个方面因素决定主要由以下几个方面因素决定。第二节第二节 软软 件件 可可 靠靠 性性 的的 基基 本本 特特 征征 量量 时间因素时间因素:包括平均故障间隔时间(:包括平均故障间隔时间(MIBF)、)、平平均失效前时间(均失效前
25、时间(MTTF)、)、平均系统不工作间隔时间平均系统不工作间隔时间(MTBD)、)、平均修复时间(平均修复时间(MTTR)。)。 缺陷频数缺陷频数:包括软件缺陷数、文件缺陷数和用:包括软件缺陷数、文件缺陷数和用户提出的补充要求数等。户提出的补充要求数等。 与软件可靠性有关的百分率与软件可靠性有关的百分率:主要包括可靠性、:主要包括可靠性、有效性、可维护性、故障率、不合格率、延迟率、错误有效性、可维护性、故障率、不合格率、延迟率、错误操作率、原因不明率、同故障事件率、可靠性经济率等。操作率、原因不明率、同故障事件率、可靠性经济率等。22 使用方特征使用方特征:包括使用软件的系统的特点(如:包括使
26、用软件的系统的特点(如实时系统、嵌入式系统),需根据软件的特点,选择实时系统、嵌入式系统),需根据软件的特点,选择适当的可靠性参数作为软件质量指标。适当的可靠性参数作为软件质量指标。 对软件的投入对软件的投入:包括完成软件用了不同水平:包括完成软件用了不同水平的工作人员的工作日数或工时数和对软件的检查项目的工作人员的工作日数或工时数和对软件的检查项目数及对用户提出的要求采取对策的费用等。数及对用户提出的要求采取对策的费用等。 软件特征软件特征:包括软件的复杂性、标准化程度、:包括软件的复杂性、标准化程度、寿命周期、结构及规模大小等。寿命周期、结构及规模大小等。 显然,显然,软件质量是众多因素及
27、指标的综合反映软件质量是众多因素及指标的综合反映,在软件可靠性评估中,需根据软件的特点,选择适在软件可靠性评估中,需根据软件的特点,选择适当的可靠性参数作为软件质量指标。当的可靠性参数作为软件质量指标。23软件常用的可靠性参数有以下几种软件常用的可靠性参数有以下几种 : 在一定时期内,由于软件故障而停止工作,必须由在一定时期内,由于软件故障而停止工作,必须由操作者介入操作者介入再启动才能继续工作的次数再启动才能继续工作的次数称为系统不工作称为系统不工作次数。次数。1. 系统不工作次数系统不工作次数系统平均不工作间隔时间反映了系统的系统平均不工作间隔时间反映了系统的稳定性稳定性。2. 系统平均不
28、工作间隔时间(系统平均不工作间隔时间(MTBD)1MTBD vdT其计算式为止工作的次数。系统由于软件故障而停)时间(软件系统正常工作的总式中 ;h vdT243. 有效性有效性 ( A )有效性有效性A综合反映了系统的综合反映了系统的可靠性和维修性可靠性和维修性。MDTMTBDMTBD DvvATTTA或其计算式为MDT 平均不工作的时间(平均不工作的时间(h)。)。);工作的时间(由于软件故障使系统不)时间(软件系统正常工作的总式中h ;h DvTT25 平均修复时间反映了出现软件缺陷后采取对策的平均修复时间反映了出现软件缺陷后采取对策的效率。在一定程度上也反映了软件企业对社会服务的效率。
29、在一定程度上也反映了软件企业对社会服务的责任心。责任心。4. 平均修复时间(平均修复时间(MTTR) 平均不工作时间是指由于软件故障,系统不工作的平均不工作时间是指由于软件故障,系统不工作的均值。均值。 5. 平均不工作时间(平均不工作时间(MDT) 一般以软件交付使用方后的三个月内为初期故障期。一般以软件交付使用方后的三个月内为初期故障期。初期故障率以每初期故障率以每100h的故障为单位,用它来评价交付使用的故障为单位,用它来评价交付使用时的软件质量和预测什么时候软件可靠性基本稳定。时的软件质量和预测什么时候软件可靠性基本稳定。 6. 初期故障率初期故障率 初期故障率的大小取决于软件的设计水
30、平、检查项初期故障率的大小取决于软件的设计水平、检查项目数、软件规模、软件调试彻底与否等因素。目数、软件规模、软件调试彻底与否等因素。26 一般以软件交付给使用方一般以软件交付给使用方四个月后四个月后为偶然故障为偶然故障期。偶然故障率一般期。偶然故障率一般以每以每1000h的故障数为单位的故障数为单位,它,它反映了软件处于稳定状态下的质量。反映了软件处于稳定状态下的质量。 7. 偶然故障率偶然故障率 使用方不按照软件规范及说明等文件使用造成的错使用方不按照软件规范及说明等文件使用造成的错误误叫叫“使用方错误使用方错误”。在使用次数中,使用方误用次数。在使用次数中,使用方误用次数占的百分率叫占的
31、百分率叫“使用方误用率使用方误用率”。8. 使用方误用率使用方误用率 造成使用方法误用的造成使用方法误用的原因之一原因之一是使用方对是使用方对“说明说明”理解不深,操作不熟练,但也有可能是说明书没有讲理解不深,操作不熟练,但也有可能是说明书没有讲清楚而引起误解。清楚而引起误解。27 另外还有软件系统的可操作性还应改进、对使另外还有软件系统的可操作性还应改进、对使用方的使用培训还不够深入等。用方的使用培训还不够深入等。 生产方有责任及时调查使用方误用的原因,对生产方有责任及时调查使用方误用的原因,对软件功能加以改进。软件功能加以改进。 用户提出补充要求数用户提出补充要求数主要是反映软件未能充分主
32、要是反映软件未能充分满足用户的需要,有些要求是特定用户的特殊要求满足用户的需要,有些要求是特定用户的特殊要求,生产方为了更好地为社会服务,应该尽力满足他,生产方为了更好地为社会服务,应该尽力满足他们的要求。们的要求。9. 用户提出补充要求数用户提出补充要求数 有些要求是带有普遍性的,这就要求给予足够有些要求是带有普遍性的,这就要求给予足够重视,因为它反映了原来的软件功能还不够全面。重视,因为它反映了原来的软件功能还不够全面。28 处理能力有各种指标,例如,可用每小时平均处理能力有各种指标,例如,可用每小时平均处理多少文件、每项工作的反映时间多少等来表示,处理多少文件、每项工作的反映时间多少等来
33、表示,具体情况根据需要而定。具体情况根据需要而定。 在评价软件及系统的经济效益时需用这项指标在评价软件及系统的经济效益时需用这项指标。 10. 处理能力处理能力返回返回129第三节第三节 软件可靠性的数学模型软件可靠性的数学模型 软件可靠性建模是在根据与软件可靠性软件可靠性建模是在根据与软件可靠性(故障故障)有关的有关的数据以统计方法给出软件可靠性的估计值或预测值,是从数据以统计方法给出软件可靠性的估计值或预测值,是从本质上理解软件可靠性行为的关键之一。本质上理解软件可靠性行为的关键之一。 一、软件可靠性建模概述一、软件可靠性建模概述 软件可靠性建模活动最早可追溯到软件可靠性建模活动最早可追溯
34、到Hudson的工作,他的工作,他当时以随机生灭过程描述软件缺陷的引入和剔除过程,并当时以随机生灭过程描述软件缺陷的引入和剔除过程,并证明被剔除的缺陷数服从二项式分布,其均值时间函数具证明被剔除的缺陷数服从二项式分布,其均值时间函数具有威布尔有威布尔(Weibull)分布形式。分布形式。 软件可靠性建模研究真正获得重视始于软件可靠性建模研究真正获得重视始于60年代末年代末“软件危机软件危机”的提出,并在的提出,并在70年代获得巨大的发展。年代获得巨大的发展。301. 模型种类模型种类 Jelinski和和Moranda于于1972年正式出版有关他们的模型年正式出版有关他们的模型的论著。这一模型
35、是软件可靠性系统研究的真正开端,至今的论著。这一模型是软件可靠性系统研究的真正开端,至今在软件可靠性建模方面仍具有重要意义,这是因为:在软件可靠性建模方面仍具有重要意义,这是因为: (1) Jelinski-Moranda模型模型软件可靠性模型主要有以下软件可靠性模型主要有以下8种种模型:模型: 这一模型首次将这一模型首次将硬件可靠性的基本概念,硬件可靠性的基本概念,如可靠度、如可靠度、故障强度故障强度(率率)等,等,系统地引入软件可靠性领域系统地引入软件可靠性领域; 这一模型确立了软件可靠性建模的这一模型确立了软件可靠性建模的黑箱方法黑箱方法,即不,即不涉及软件内部结构,仅依据软件外部行为涉
36、及软件内部结构,仅依据软件外部行为(输入输出关系输入输出关系)刻画软件可靠性行为;刻画软件可靠性行为; 这一模型给出了软件可靠性建模的这一模型给出了软件可靠性建模的两个主要假设两个主要假设:一是测试用例的选取代表软件实际运行剖面;二是不同软一是测试用例的选取代表软件实际运行剖面;二是不同软件故障独立发生;件故障独立发生; 31 这一模型简单这一模型简单,众多的后续模型可视为这一模型,众多的后续模型可视为这一模型的某种变形。的某种变形。 Halstead依据其依据其“软件科学软件科学”的思想于的思想于1972年提出此年提出此模型,试图利用软件复杂度确定软件缺陷数。模型,试图利用软件复杂度确定软件
37、缺陷数。(2) Halstead模型模型 此模型的重要性在于它可应用于软件开发的此模型的重要性在于它可应用于软件开发的早期阶段早期阶段(软件软件测试之前测试之前)。随着软件可靠性设计地位的提高,此模型的。随着软件可靠性设计地位的提高,此模型的重要性也将显著增长。重要性也将显著增长。 Littlewood和和Verrall于于1973年发表此模型,其年发表此模型,其主导思主导思想想是将软件是将软件故障强度视为随机变量故障强度视为随机变量,从而开创了软件可靠,从而开创了软件可靠性建模的性建模的Bayes方法。此模型也间接考虑了发现的缺陷不方法。此模型也间接考虑了发现的缺陷不被完全剔除的可能性。被完
38、全剔除的可能性。(3) Littlewood-Verrall模型模型32 Musa于于1975年发表此模型,主要贡献在于提出将年发表此模型,主要贡献在于提出将CPU执行时间作为软件可靠性的时间基准执行时间作为软件可靠性的时间基准。(4) Musa执行时间模型执行时间模型 Nelson最早于最早于1973年提出一个基于数据域模型并于年提出一个基于数据域模型并于1978年得以完善。年得以完善。 此模型是基于数据域模型的代表,成为此模型是基于数据域模型的代表,成为目前应用最目前应用最多的模型之一多的模型之一。 (5) Sukert模型比较工作模型比较工作 Sukert于于1976年给出其关于不同模型
39、的分析比较的试年给出其关于不同模型的分析比较的试验报告,验报告,开创了软件可靠性模型比较研究的先河开创了软件可靠性模型比较研究的先河。 模型比较研究已成为建模研究的一个基本方面。模型比较研究已成为建模研究的一个基本方面。(6) Nelson模型模型33 GoeI和和Okumoto于于1978年发表此模型,将软件故障年发表此模型,将软件故障次数描述为非齐次次数描述为非齐次Poisson过程。此模型是过程。此模型是NHPP模型的模型的代表。代表。 (7) GoelOkumoto NHPP模型模型 Musa于于1979年发表了一批软件可靠性数据,对软年发表了一批软件可靠性数据,对软件可靠性建模研究产
40、生重要影响。件可靠性建模研究产生重要影响。目前已成为软件可靠目前已成为软件可靠性建模研究的性建模研究的“标准标准”参考数据参考数据。之后。之后Musa,Ianninohe和和Okumoto于于1987年又发表了年又发表了“软件可靠性软件可靠性”一书,在一书,在软件可靠性领域颇软件可靠性领域颇受推崇。该书首次对众多软件可靠性受推崇。该书首次对众多软件可靠性模型给出了统一的数学描述。模型给出了统一的数学描述。 (8) Musa软件可靠性数据软件可靠性数据342.模型组成模型组成软件可靠性模型通常由以下几个部分组成:软件可靠性模型通常由以下几个部分组成: (1) 模型假设模型假设模型是实际情况的简化
41、或规范化,总要包含若干假设。模型是实际情况的简化或规范化,总要包含若干假设。 此假设认为软件测试用例的选取代表软件实际的运行此假设认为软件测试用例的选取代表软件实际的运行剖面,甚至认为测试用例是独立随机地选取。剖面,甚至认为测试用例是独立随机地选取。 代表性假设代表性假设 此假设实质上是指可以用测试产生的软件可靠性数据此假设实质上是指可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为。预测运行阶段的软件可靠性行为。 此假设认为软件故障是独立发生于不同时刻,一个软此假设认为软件故障是独立发生于不同时刻,一个软件故障的发生不影响另一个软件故障的发生。譬如在概率范件故障的发生不影响另一个软件
42、故障的发生。譬如在概率范畴内,假设相邻软件故障间隔构成一组独立随机变量,或假畴内,假设相邻软件故障间隔构成一组独立随机变量,或假设一定时间内软件故障次数构成一个独立增量过程。设一定时间内软件故障次数构成一个独立增量过程。 独立性假设独立性假设35 此假设认为所有软件此假设认为所有软件故障的后果故障的后果(等级等级)相同相同,即建模,即建模过程只考虑软件故障的具体发生时刻,不区分软件故障的过程只考虑软件故障的具体发生时刻,不区分软件故障的性质。性质。 相同性假设相同性假设 软件可靠性模型的输出量变为性能度量,如故障强度、软件可靠性模型的输出量变为性能度量,如故障强度、残留缺陷数、可靠度等。在软件
43、可靠性模型中性能度量通残留缺陷数、可靠度等。在软件可靠性模型中性能度量通常以数学表达式给山。常以数学表达式给山。 (2) 性能度量性能度量 某些可靠性度量的实际值无法直接获得某些可靠性度量的实际值无法直接获得(如残留缺陷如残留缺陷数数),这时需通过一定的方法估计参数的值,从而间接确,这时需通过一定的方法估计参数的值,从而间接确定可靠性度量的值。定可靠性度量的值。 (3)参数估计方法参数估计方法 当然,对于可直接获得实际值的可靠性度量,便无当然,对于可直接获得实际值的可靠性度量,便无需参数估计了。需参数估计了。 36 一个软件可靠性模型要求一定的输入数据,即软件可一个软件可靠性模型要求一定的输入
44、数据,即软件可靠性数据。靠性数据。不同类型的软件可靠性模型可能要求不同类型不同类型的软件可靠性模型可能要求不同类型的软件可靠性数据。的软件可靠性数据。 (4) 数据要求数据要求本书仅本书仅介绍三种最常用的软件模型。介绍三种最常用的软件模型。二、二、J - M (JelinskiMoranda) 模型模型 J M 模型是最早的软件可靠性马尔科夫过程的数学模型是最早的软件可靠性马尔科夫过程的数学模型,沿用了硬件可靠性的方法。模型,沿用了硬件可靠性的方法。 J M的假设是:的假设是: 软件最初的错误数为软件最初的错误数为常值常值N。用用 (i=1,2,N)表示在第表示在第(i-1)个错误被改正后,软
45、件投入运行至第个错误被改正后,软件投入运行至第i次次故障发生前这个阶段的时间,且故障间隔时间故障发生前这个阶段的时间,且故障间隔时间 是统是统计独立的计独立的。itit37 每次故障后总有并仅有一个错误被排除,因此每次故障后总有并仅有一个错误被排除,因此, ,系统的系统的故障率是阶梯式下降故障率是阶梯式下降的。的。 每个软件错误一经发现立即被修正,且不考虑修每个软件错误一经发现立即被修正,且不考虑修改错误的时间,也不产生新的错误。改错误的时间,也不产生新的错误。 在两个相继故障构成的时间间隔内,软件的故障在两个相继故障构成的时间间隔内,软件的故障率为常数,其大小正比于软件中的残存错误数。率为常
46、数,其大小正比于软件中的残存错误数。1. 可靠性特征量可靠性特征量(1) 按上述假设得出的软件系统故障的密度函数为:按上述假设得出的软件系统故障的密度函数为: )(,1-11 ,.2 , 1 e)( Nitfiitii38 (2) 故障率为:故障率为:)(2-11 )1( iNi递减率无关。是比例常数,与式中i (3) 可靠度函数为:可靠度函数为: )(3-11 e)()1( tiNitR392. 可靠性特征量估计 模型的模型的待估参数为待估参数为和和N。设设t1,t2,tn是试验中实是试验中实际测得的际测得的n次故障发生的时间次故障发生的时间间隔,则其极大似然方程为:间隔,则其极大似然方程为
47、: )(4-11 e ) 1( )( )1(11itiNniniiiNtfL运用极大似然估计法,则运用极大似然估计法,则5)-(11 011ln01ln111niniiniitiNNLtiNnL40可得模型参数的极大似然估计值可得模型参数的极大似然估计值 和和 分别为分别为 N6)-(11 /111111111niniiniiniiniittiNniNtitNn 发现发现 n 个软件错误后,停止测试。此时,软件的可靠个软件错误后,停止测试。此时,软件的可靠性水平为性水平为 (1) 残存错误数残存错误数 7)-(11 nNNT41 (2) 故障率故障率8)-(11 nNT(3) 可靠度可靠度9)
48、-(11 e)(tnNitR(4)平均无故障工作时间平均无故障工作时间MTBF )10-(11 1MTBFnN 42 例例11-1 Jelinski和和Moranda曾在美国海军舰队计算机程曾在美国海军舰队计算机程序编制中心利用海军战术数据系统序编制中心利用海军战术数据系统(NTDS)的软件故障数据,的软件故障数据,对他们的模型作了验证。对他们的模型作了验证。NTDS包括包括38个不同的模块,每个个不同的模块,每个模块都经过开发、测试、使用三个阶段。验证所用的故障数模块都经过开发、测试、使用三个阶段。验证所用的故障数据是取自两个大型模块的软件反馈报告。这个模块在设计阶据是取自两个大型模块的软件
49、反馈报告。这个模块在设计阶段共发现了段共发现了26个错误,测试阶段又发现了个错误,测试阶段又发现了5个(表个(表11-1中中27-31)错误,在使用阶段又发现了)错误,在使用阶段又发现了3个(表个(表11-1中中32-34)错误。)错误。NTDS的数据见表的数据见表11-1,J-M根据交付使用前的数据计算的结根据交付使用前的数据计算的结果也示于表果也示于表11-1(见下页见下页)。43阶段错误数n错误间隔时间(日)累计时问(日)JM预计的故障时问设计阶段12345678910111213141516171819202122232425269121147258571619413861133791
50、21921323643455058637071777887919295981041051161491562472492504.74.85.95.25.45.65.86.06.36.66.97.27.68.08.59.09.610.311.112.013.014.315.917.820.323.5表表11-1 NTDS 数据及预计结果数据及预计结果4428.13378727测测试试阶阶段段8493481433总的错误数总的错误数故障率系数故障率系数79832使使用用阶阶段段121.75401353166.440593045.6396122934.83844728J.M预计的故预计的故障时间障时间
51、累积时间累积时间 (日)(日)错误间隔错误间隔时间(日)时间(日)错误数错误数n阶段阶段2 .31N00685. 0表表11-1 续续 表表即,)得代入式(、错误间隔时间中的将表,00685. 02 .312158.31611111 Ntni 估计软件共有估计软件共有31.2个错误。实际上,此软件三个阶段共有个错误。实际上,此软件三个阶段共有34个错误,可见计算结果与实际数据大致吻合。个错误,可见计算结果与实际数据大致吻合。45 2模型假设模型假设三、三、Halstead模型模型1模型类别:模型类别:静态经验模型。静态经验模型。 (1) 程序是良好结构化的,即程序不包含操作符、程序是良好结构化
52、的,即程序不包含操作符、操作数、表达式的问题。操作数、表达式的问题。 (2) 以下方程近似成立:以下方程近似成立:11)-(11 loglog222121llllL 为程序中不同操作数个数。为程序中不同操作数个数。 2l式中: 为程序中不同操作符个数;为程序中不同操作符个数; 1l21LLL其中:其中:为程序中操作符出现总次数;为程序中操作符出现总次数; 为程序中操作数出现总次数。为程序中操作数出现总次数。 1L2L46程序残留缺陷程序残留缺陷 N 的估计值为的估计值为3参数估计参数估计这里这里V表示程序容量,表示程序容量, 即即12)-(11 /0EVN log212llLV。)为一常数(而
53、 300000EE47 例例11-2 某一汇编语言程序,由某一汇编语言程序,由9个模块组成,包含约个模块组成,包含约24955条汇编语言指令,如表条汇编语言指令,如表11-2所列。所列。N表表11-2 某汇编程序原始数据及计算结果某汇编程序原始数据及计算结果模模块块指令指令条数条数缺陷数缺陷数决策决策点数点数调用调用次数次数l1l2MA4 03210237228347l442102MB1 329812154418017618MC5 4539355236261057493MDl 6742611l13023120l26ME2 05l7131519736613871MF2 5133721718632
54、228737MG69916104321317616MH3 7925023311025260350MX3 4128041623043335780N48假设每条指令包含一个操作符和一个操作数,则假设每条指令包含一个操作符和一个操作数,则解解 :指令条数221LLL643/ 1调用次数决策次数又设 lN 其中,其中,64表示总共有表示总共有64种机器语言指令。那么种机器语言指令。那么可由式可由式(11-11) 计算,代入式计算,代入式(11-12) 可可以得到程序残留缺以得到程序残留缺陷的估计值陷的估计值 ,见表,见表11-2 中最后一列中的值。中最后一列中的值。 2l49 由以上分析可以看出,由以
55、上分析可以看出,Halstead模型认为程序中模型认为程序中的操作符和操作数与其残留缺陷密切相关。该模型的的操作符和操作数与其残留缺陷密切相关。该模型的优点优点是无需测试数据。是无需测试数据。 尽管众多事实表明,尽管众多事实表明,VN可近似为常数,但可近似为常数,但E0取值取值却未必为却未必为3000。也许利用程序的若干模块缺陷数。也许利用程序的若干模块缺陷数(据此可据此可估计估计E0)去估计其它模块的缺陷数更为合理。去估计其它模块的缺陷数更为合理。 因此,可用于测试之前的软件开发阶段;该模型的因此,可用于测试之前的软件开发阶段;该模型的缺点缺点是其有效性有待进一步确认。是其有效性有待进一步确
56、认。50四、四、G-O (Goel-Okumoto NHPP)模型模型2模型假设模型假设1模型类别模型类别模型为模型为 动态、宏观、面向错误数模型。动态、宏观、面向错误数模型。 软件软件(测试测试)运行方式与预计运行方式与预计(实际实际)运行剖面相同。运行剖面相同。 (2) 对于任一组有限时间点对于任一组有限时间点 ,在对应时在对应时间段间段 内分别发生的错误数为内分别发生的错误数为 相互独立。相互独立。 mmttttt,01211 ,nttt 21mfff,21 (3) 每一缺陷有均等机会被检测发现,且等级相同。每一缺陷有均等机会被检测发现,且等级相同。51 (4) 任一时刻任一时刻 t 发生的软件故障累积次数发生的软件故障累积次数N (t)服从均服从均值为值为m(t)的的Poisson分布分布,均值,均值m(t)使得微小时间段使得微小时间段(t,t+t)内软件故障发生次数与内软件故障发生次数与 t 时刻软件残留缺陷数成正比。时刻软件残留缺陷数成正比。式中式中 为测试过程最终软件发生故障的总数;为测试过程最终软件发生故障的总数; )(13-11 )()()(tfmabtmttmb 为比例常数。为比例常数。 (5) m (t)是一个有界、非减函数,且是一个有界、非减函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融服务营销 教学实施方案
- 工业园区规划与绿色发展策略
- 工业智能化改造及自动化生产研究
- 工业旅游开发与推广策略
- 工业建筑设计原理及实践
- 工业废水处理后的环境监测评估
- 工业废水处理的安全生产流程优化
- 工业机器人技术对劳动力的影响与挑战
- 工业自动化设备市场需求分析
- 工业设计中的环境心理学应用
- 《机械制图》期末考试题库388题(含答案)
- 新媒体视频节目制作 课件 学习领域1 新闻短视频制作
- 福建省泉州市晋江第一中学高一物理摸底试卷含解析
- 肝硬化的中医护理查房课件
- 音乐(人音全国版)四年级生日快乐变奏曲-2课件
- 健康宣教之青光眼掌握预防疾病的技巧
- 生物实验室教学仪器和设备配置表
- 蒸汽发生器专项应急预案
- 控制系统的滞后校正设计
- 西方现代思想史-讲义
- 2023分布式光伏验收规范
评论
0/150
提交评论