4、软件可靠性度量和测试_第1页
4、软件可靠性度量和测试_第2页
4、软件可靠性度量和测试_第3页
4、软件可靠性度量和测试_第4页
4、软件可靠性度量和测试_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 2 内容提要内容提要 p4.1软件可靠性软件可靠性 l4.1.1 软件可靠性发展史软件可靠性发展史 l4.1.2 软件可靠性的定义软件可靠性的定义 l4.1.3 软件可靠性的基本数学关系软件可靠性的基本数学关系 l4.1.4 软件可靠性与硬件可靠性的区别软件可靠性与硬件可靠性的区别 l4.1.5 影响软件可靠性的因素影响软件可靠性的因素 l4.1.6 软件的差错、故障和失效软件的差错、故障和失效 p4.2可靠性模型及其评价标准可靠性模型及其评价标准 l4.2.1 软件可靠性模型软件可靠性模型 l4.2.2 软件可靠性模型参数软件可靠性模型参数 l4.2.3 软件可靠性模型及其应用软件可靠性

2、模型及其应用 l4.2.4 软件可靠性模型评价准则软件可靠性模型评价准则 3 内容提要内容提要 p4.3软件可靠性测试和评估软件可靠性测试和评估 l4.3.1 软件可靠性评测软件可靠性评测 l4.3.2软件可靠性测试的具体实施过程软件可靠性测试的具体实施过程 p4.4提高软件可靠性的方法和技术提高软件可靠性的方法和技术 l4.4.1 建立以可靠性为核心的质量标准建立以可靠性为核心的质量标准 l4.4.2 选择开发方法选择开发方法 l4.4.3 软件重用软件重用 l4.4.4 使用开发管理工具使用开发管理工具 l4.4.5 加强测试加强测试 l4.4.6 容错设计容错设计 p4.5 软件可靠性研

3、究的主要问题软件可靠性研究的主要问题 p4.6小结小结 4 4.1软件可靠性软件可靠性 p用软件系统规模越做越大越复杂,其可靠性越来越难保证。用软件系统规模越做越大越复杂,其可靠性越来越难保证。 应用本身对系统运行的可靠性要求越来越高,在一些关键应用本身对系统运行的可靠性要求越来越高,在一些关键 的应用领域,如航空、航天等,其可靠性要求尤为重要,的应用领域,如航空、航天等,其可靠性要求尤为重要, 在银行等服务性行业,其软件系统的可靠性也直接关系到在银行等服务性行业,其软件系统的可靠性也直接关系到 自身的声誉和生存发展竞争能力。自身的声誉和生存发展竞争能力。 p特别是软件可靠性比硬件可靠性更难保

4、证,会严重影响整特别是软件可靠性比硬件可靠性更难保证,会严重影响整 个系统的可靠性。个系统的可靠性。 p在许多项目开发过程中,对可靠性没有提出明确的要求,在许多项目开发过程中,对可靠性没有提出明确的要求, 开发商(部门)也不在可靠性方面花更多的精力,往往只开发商(部门)也不在可靠性方面花更多的精力,往往只 注重速度、结果的正确性和用户界面的友好性等,而忽略注重速度、结果的正确性和用户界面的友好性等,而忽略 了可靠性。了可靠性。 p在投入使用后才发现大量可靠性问题,增加了维护困难和在投入使用后才发现大量可靠性问题,增加了维护困难和 工作量,严重时只有束之高阁,无法投入实际使用。工作量,严重时只有

5、束之高阁,无法投入实际使用。 5 4.1.1 软件可靠性发展史软件可靠性发展史 p软件工程的发展大体上可分为下列四个阶软件工程的发展大体上可分为下列四个阶 段。段。 l1950年年1958年年 l1959年年1967年年 l1968年年1978年年 l1978年至今年至今 6 p硬件飞速发展,软件不相适应,硬件越来硬件飞速发展,软件不相适应,硬件越来 越可靠,而软件虽然采取了许多办法,但越可靠,而软件虽然采取了许多办法,但 常在带有剩余缺陷的情况下发布和部署,常在带有剩余缺陷的情况下发布和部署, 使得软件已经成为系统崩溃的主要原因使得软件已经成为系统崩溃的主要原因 p大部分软件不是十分可靠大部

6、分软件不是十分可靠 软件的状况软件的状况 7 4.1.2 软件可靠性的定义软件可靠性的定义 p1983年美国年美国IEEE计算机学会对计算机学会对“软件软件 可靠性可靠性”一词正式作出了如下的定义:一词正式作出了如下的定义: l在规定的条件下,在规定的时间内,软件不引在规定的条件下,在规定的时间内,软件不引 起系统失效的概率,该概率是系统输入和系统起系统失效的概率,该概率是系统输入和系统 使用的函数,也是软件中存在的错误的函数;使用的函数,也是软件中存在的错误的函数; 系统输入将确定是否会遇到已存在的错误(如系统输入将确定是否会遇到已存在的错误(如 果错误存在的话);果错误存在的话); l在规

7、定的时间周期内,在所述条件下程序执行在规定的时间周期内,在所述条件下程序执行 所要求的功能的能力。所要求的功能的能力。 8 引言引言 p 软件可靠性工程及软件可靠性软件可靠性工程及软件可靠性 l软件可靠性工程软件可靠性工程 应用统计技术,处理在软件开发过程中应用统计技术,处理在软件开发过程中 或(和)运行期间所采集的失效数据,或(和)运行期间所采集的失效数据, 以便详细说明并预计、估计和评价软件以便详细说明并预计、估计和评价软件 的可靠性的可靠性 研究内容包括软件可靠性的基本概念和研究内容包括软件可靠性的基本概念和 定义、软件可靠性指标体系、可靠性建定义、软件可靠性指标体系、可靠性建 模、可靠

8、性设计技术、测试技术和管理模、可靠性设计技术、测试技术和管理 技术等技术等 9 软件可靠性工程处理以下问题:软件可靠性工程处理以下问题: 确定某过程能否提供满足可靠性要求的代码确定某过程能否提供满足可靠性要求的代码 为过程改进提供度量为过程改进提供度量 预测软件维护阶段的失效率,确定软件维护预测软件维护阶段的失效率,确定软件维护 工作量工作量 帮助进行安全性认证帮助进行安全性认证 确定交付软件产品的时间或停止测试的时机确定交付软件产品的时间或停止测试的时机 估计下次故障的可能时间估计下次故障的可能时间 为软件更新或升级,标识需要重新设计的主为软件更新或升级,标识需要重新设计的主 要部件要部件

9、测定软件的可靠性测定软件的可靠性 10 l软件可靠性软件可靠性 可靠性是软件的可靠性是软件的13个质量因素中最关键、个质量因素中最关键、 最重要的最重要的 软件可靠性是指在规定时间和条件下软件软件可靠性是指在规定时间和条件下软件 无故障运行的概率无故障运行的概率,是系统功能或软件产,是系统功能或软件产 品中存在的缺陷的函数品中存在的缺陷的函数 软件故障产生的原因是软件缺陷,但缺陷软件故障产生的原因是软件缺陷,但缺陷 并不一定导致故障的产生,高缺陷率的软并不一定导致故障的产生,高缺陷率的软 件的可靠性不一定就差件的可靠性不一定就差 软件失效意味着软件运行中断或者无法完软件失效意味着软件运行中断或

10、者无法完 成所规定的任务成所规定的任务 11 几个值得关注的问题:几个值得关注的问题: 软件的运行环境:软件可靠性与运行环境软件的运行环境:软件可靠性与运行环境 密切相关密切相关 软件运行的时间间隔:商业软件需要较高软件运行的时间间隔:商业软件需要较高 的运行时间间隔(较长的运行寿命),而的运行时间间隔(较长的运行寿命),而 任务关键任务关键软件则需要在短时间内高效运行软件则需要在短时间内高效运行 软件失效的时机是随机的软件失效的时机是随机的 不同于软件的正确性,对于持续运行的软不同于软件的正确性,对于持续运行的软 件其可靠性最终将归于零(以失效结束);件其可靠性最终将归于零(以失效结束);

11、但正确性是软件的特定的某次运行结果,但正确性是软件的特定的某次运行结果, 要么为要么为1,要么为,要么为0 12 4.1.4 软件可靠性与硬件可靠性的软件可靠性与硬件可靠性的 区别区别 p软件和硬件在可靠性特征上的差异,主要有以下几点软件和硬件在可靠性特征上的差异,主要有以下几点: l最明显的是硬件有老化损耗现象,硬件失效是物理故障,是器件物最明显的是硬件有老化损耗现象,硬件失效是物理故障,是器件物 理变化的必然结果,有浴盆曲线现象;软件不发生变化,没有磨损理变化的必然结果,有浴盆曲线现象;软件不发生变化,没有磨损 现象,有陈旧落后的问题,没有浴盆曲线现象。现象,有陈旧落后的问题,没有浴盆曲线

12、现象。 l硬件可靠性的决定因素是时间,受设计、生产、运用的所有过程影硬件可靠性的决定因素是时间,受设计、生产、运用的所有过程影 响,软件可靠性的决定因素是与输入数据有关的软件差错,是输入响,软件可靠性的决定因素是与输入数据有关的软件差错,是输入 数据和程序内部状态的函数,更多地决定于人。数据和程序内部状态的函数,更多地决定于人。 l硬件的纠错维护可通过修复或更换失效的系统重新恢复功能,软件硬件的纠错维护可通过修复或更换失效的系统重新恢复功能,软件 只有通过重设计。只有通过重设计。 l对硬件可采用预防性维护技术预防故障,采用断开失效部件的办法对硬件可采用预防性维护技术预防故障,采用断开失效部件的

13、办法 诊断故障,而软件则不能采用这些技术。诊断故障,而软件则不能采用这些技术。 l事先估计可靠性测试和可靠性的逐步增长等技术对软件和硬件有不事先估计可靠性测试和可靠性的逐步增长等技术对软件和硬件有不 同的意义。同的意义。 l为提高硬件可靠性可采用冗余技术,而同一软件的冗余不能提高可为提高硬件可靠性可采用冗余技术,而同一软件的冗余不能提高可 靠性。靠性。 l硬件可靠性检验方法已建立,并已标准化且有一整套完整的理论,硬件可靠性检验方法已建立,并已标准化且有一整套完整的理论, 而软件可靠性验证方法仍未建立,更没有完整的理论体系。而软件可靠性验证方法仍未建立,更没有完整的理论体系。 l硬件可靠性已有成

14、熟的产品市场,而软件产品市场还很新。硬件可靠性已有成熟的产品市场,而软件产品市场还很新。 l软件错误是永恒的,可重现的,而一些瞬间的硬件错误可能会被误软件错误是永恒的,可重现的,而一些瞬间的硬件错误可能会被误 认为是软件错误。认为是软件错误。 13 4.1.5 影响软件可靠性的因素影响软件可靠性的因素 p软件差错是软件开发各阶段潜入的人为错误:软件差错是软件开发各阶段潜入的人为错误: l需求分析定义错误。如用户提出的需求不完整,用户需求分析定义错误。如用户提出的需求不完整,用户 需求的变更未及时消化,软件开发者和用户对需求的需求的变更未及时消化,软件开发者和用户对需求的 理解不同等等。理解不同

15、等等。 l设计错误。如处理的结构和算法错误,缺乏对特殊情设计错误。如处理的结构和算法错误,缺乏对特殊情 况和错误处理的考虑等。况和错误处理的考虑等。 l编码错误。如语法错误,变量初始化错误等。编码错误。如语法错误,变量初始化错误等。 l测试错误。如数据准备错误,测试用例错误等。测试错误。如数据准备错误,测试用例错误等。 l文档错误。如文档不齐全,文档相关内容不一致,文文档错误。如文档不齐全,文档相关内容不一致,文 档版本不一致,缺乏完整性等。档版本不一致,缺乏完整性等。 14 软件不可靠的九大原因软件不可靠的九大原因 p不完善的需求定义不完善的需求定义 p客户与开发人员缺乏交流客户与开发人员缺

16、乏交流 p偏离软件需求偏离软件需求 p逻辑设计错误逻辑设计错误 p编码错误编码错误 p编码与文档不一致编码与文档不一致 p缺少测试过程缺少测试过程 p接口定义错误接口定义错误 p不受控的变更不受控的变更 15 4.1.6 软件的差错、故障和失效软件的差错、故障和失效 p异常异常。偏离期望的状态(或期望值)的任何情形都可称为异常。偏离期望的状态(或期望值)的任何情形都可称为异常。 p缺陷缺陷。不符合使用要求或与技术规格说明不一致的任何状态常。不符合使用要求或与技术规格说明不一致的任何状态常 称为缺陷。称为缺陷。 p差错差错。从一般意义上说,差错有下面几个方面不同的含义:。从一般意义上说,差错有下

17、面几个方面不同的含义: l计算的、观测的或测量的值与真实的、规定的或理论上正确的值或计算的、观测的或测量的值与真实的、规定的或理论上正确的值或 条件之间的差别。条件之间的差别。 l一个不正确的步骤、过程或数据定义。一个不正确的步骤、过程或数据定义。 l一个不正确的结果。一个不正确的结果。 l一次产生不正确的结果的人的活动。一次产生不正确的结果的人的活动。 p故障故障。在一个计算机程序中出现的不正确的步骤、过程或数据。在一个计算机程序中出现的不正确的步骤、过程或数据 定义常称为故障。上述定义常称为故障。上述“差错差错”中的第二项属于故障。中的第二项属于故障。 p失效失效。一个程序运行的外部结果与

18、软件产品的要求出现不一致。一个程序运行的外部结果与软件产品的要求出现不一致 时称为失效。软件失效证明了软件中存在着故障。上述时称为失效。软件失效证明了软件中存在着故障。上述“差错差错” 中的第三项属于失效。中的第三项属于失效。 16 p 软件的缺陷、故障和失效软件的缺陷、故障和失效 l缺陷(缺陷(Error,错误):,错误):设计和构设计和构 造进产品造进产品 总数是不可预知的,只能估计总数是不可预知的,只能估计 缺陷分为已知和未知(新发现)的缺陷分为已知和未知(新发现)的 缺陷分为已发现的和未发现的缺陷分为已发现的和未发现的 已发现的缺陷包括已纠正的和未纠正的已发现的缺陷包括已纠正的和未纠正

19、的 l故障(故障(Fault):):运行结果错误运行结果错误 故障是缺陷的表现形式,是由存在的缺故障是缺陷的表现形式,是由存在的缺 陷产生的陷产生的 但缺陷并不一定导致故障,或者条件不但缺陷并不一定导致故障,或者条件不 具备,或者不会产生故障具备,或者不会产生故障 l失效(失效(Failure):):系统不能完成所系统不能完成所 需要的功能而失败需要的功能而失败 失效是故障在软件运行时所产生的后果失效是故障在软件运行时所产生的后果 失效 缺陷 故障 已纠正的缺陷 17 p软件错误软件错误( (errorerror) ):在软件生存期内的不希望或:在软件生存期内的不希望或 不可接受的人为错误。不

20、可接受的人为错误。 p其结果是导致软件缺陷的产生。其结果是导致软件缺陷的产生。 p软件错误是一种人为过程,相对于软件本身,软件错误是一种人为过程,相对于软件本身, 是一种外部行为。是一种外部行为。 软件缺陷软件缺陷( (defectdefect) ):是存在于软件(文档、数据、程:是存在于软件(文档、数据、程 序)之中的那些不希望或不可接受的偏差。序)之中的那些不希望或不可接受的偏差。 其结果是软件运行于某一特定条件时出现软件故障,其结果是软件运行于某一特定条件时出现软件故障, 这时称软件缺陷被激活。这时称软件缺陷被激活。 有时又称有时又称“software bug”software bug”

21、。 18 p软件故障软件故障( (faultfault) ):是指软件运行过程中出现的:是指软件运行过程中出现的 一种不希望或不可接受的内部状态。一种不希望或不可接受的内部状态。 p此时若无适当措施(容错)加以及时处理,便此时若无适当措施(容错)加以及时处理,便 产生软件失效。产生软件失效。 p是一种动态行为。是一种动态行为。 软件失效软件失效(failure)(failure):是指软件运行时产生的:是指软件运行时产生的 一种不希望或不可接受的外部行为结果。一种不希望或不可接受的外部行为结果。 19 可以更清楚地说明失效与故障之可以更清楚地说明失效与故障之 间的区别间的区别 20 p 软件失

22、效软件失效 l软件失效是随机发生的软件失效是随机发生的 l描述失效的方法有三个:描述失效的方法有三个: 累计失效函数:即与某时间点相关的平累计失效函数:即与某时间点相关的平 均累计失效数均累计失效数 失效率函数:用累计失效函数的变化率失效率函数:用累计失效函数的变化率 表示表示 平均失效时间平均失效时间MTTF函数:对于一个时函数:对于一个时 间段,表示若干相邻失效时间间隔的平间段,表示若干相邻失效时间间隔的平 均值;对某个时间点,表示到下次失效均值;对某个时间点,表示到下次失效 的期望时间的期望时间 指标平均失效前时间 定义(MTTF Mean Time To Failure) 当前时间到下

23、一次失效时间的均值 计算 应用 度量软件可靠性和可用性 N k N tk MTTF 1 指标平均失效前时间 举例 SF1: 180, 675, 315, 212, 278, 503, 431 SF2: 477, 1048, 685, 396 SF3: 894, 1422 MTTFSF1 = 2594/7 = 370.57 MTTFSF2 = 2606/4 = 651.5 MTTFSF3 = 2316/2 = 1158 23 l软件失效率软件失效率 如果没有缺陷,软件失效率为如果没有缺陷,软件失效率为0 如果发现的缺陷能被及时、完全修复,失效率会趋向如果发现的缺陷能被及时、完全修复,失效率会趋向

24、0 实际上,发现的缺陷数会递增,而纠正一个缺陷会引入更多实际上,发现的缺陷数会递增,而纠正一个缺陷会引入更多 的缺陷,因而失效率会增加的缺陷,因而失效率会增加 时间 失效率 硬件 软件(实际) 软件(理想) 24 4.2可靠性模型及其评价标准可靠性模型及其评价标准 p4.2.1 软件可靠性模型软件可靠性模型 l为了对软件可靠性进行评估,除了进行软件测为了对软件可靠性进行评估,除了进行软件测 试之外,我们还需要借助软件可靠性模型的帮试之外,我们还需要借助软件可靠性模型的帮 助。助。软件可靠性模型(软件可靠性模型(Software Reliability Model)是指为预计或估算软是指为预计或

25、估算软 件的可靠性所建立的可靠性框图和数学模型。件的可靠性所建立的可靠性框图和数学模型。 l建立可靠性模型可以将复杂系统的可靠性逐级建立可靠性模型可以将复杂系统的可靠性逐级 分解为简单系统的可靠性,以便于定量预计、分解为简单系统的可靠性,以便于定量预计、 分配、估算和评价复杂系统的可靠性。分配、估算和评价复杂系统的可靠性。 25 软件可靠性度量和建模软件可靠性度量和建模 p 基本概念基本概念 软件可靠性建模过程是根据软件过去的故障软件可靠性建模过程是根据软件过去的故障 行为建立软件可靠性数学模型的过程行为建立软件可靠性数学模型的过程 建模的目的是为了预计软件将来的故障行为建模的目的是为了预计软

26、件将来的故障行为 建模过程包括以下步骤:建模过程包括以下步骤: 通过度量获得历史数据通过度量获得历史数据 对故障数据进行分析,拟合成概率分布函数对故障数据进行分析,拟合成概率分布函数 对拟合函数进行参数分析对拟合函数进行参数分析 确定所期望的可靠性度量值并预测可能的故障确定所期望的可靠性度量值并预测可能的故障 行为行为 26 单元划分建模的影响示例单元划分建模的影响示例 每天产品缺陷数 对应的趋势图 每两天产品缺陷数 对应的缺陷数变化趋势图 以1天为单位, 缺陷变化的规 律不是很强 以2天为单位, 缺陷变化趋热 略平滑一点 26 27 可靠性模型评价标准可靠性模型评价标准 软件可靠性模型通常假

27、设失效之间是相互独立软件可靠性模型通常假设失效之间是相互独立 的。失效之间没有很强的关联性。对可靠性模的。失效之间没有很强的关联性。对可靠性模 型的评价标准如下:型的评价标准如下: 基于合理的假设基于合理的假设 预测的有效性预测的有效性 模型实现的可操作性模型实现的可操作性 预测的及时性预测的及时性 预测的覆盖率预测的覆盖率 27 28 p 软件可靠性度量参数软件可靠性度量参数 软件可靠性软件可靠性R(t)可定义为:在给定条件下,在时间可定义为:在给定条件下,在时间0,t内,软件无内,软件无 故障运行的概率故障运行的概率 若用若用T表示软件无故障运行的时间间隔,表示软件无故障运行的时间间隔,F

28、(t)为为T的累积分布函数,的累积分布函数, 则软件可靠性可表示为:则软件可靠性可表示为: R(t)=1-F(t) t0 故障率函数故障率函数(t)为:为: 其中,其中,f(t)为为F(t)的函数密度,即:的函数密度,即: )( )( )( )()( lim )( 0tR tf ttR ttRtR t t )()(tF dt d tf 29 (t)t是在时间是在时间0,t内软件正常运行,在内软件正常运行,在t,t+t内发生故障的条件概率,内发生故障的条件概率, 可得:可得: 密度函数密度函数f(t)、累积分布函数、累积分布函数F(t)、可靠性函数、可靠性函数R(t)和故障率函数和故障率函数(t

29、)紧密紧密 相关,一般可由任一个惟一地确定另外三个,例如若相关,一般可由任一个惟一地确定另外三个,例如若(t)给定,则:给定,则: 根据根据f(t)或或R(t)可计算平均失效时间函数可计算平均失效时间函数MTTF,从而预测故障时间,从而预测故障时间 t dsstR 0 )(exp)( )(ln)(1ln( )(1 )( )(tR dt d tf dt d tF tf t t dssttf 0 )(exp)()( 00 )()(MTTFdttRdtttf 30 数据收集和分析是度量软件可靠性的最数据收集和分析是度量软件可靠性的最 重要的先决条件,任何可靠性度量的有效性重要的先决条件,任何可靠性度

30、量的有效性 都与数据收集的有效性直接相关,数据收集都与数据收集的有效性直接相关,数据收集 过程必须有计划、有组织地进行过程必须有计划、有组织地进行 与软件可靠性相关的数据包括:与软件可靠性相关的数据包括: l缺陷数据缺陷数据 l过程数据过程数据 l产品数据:如规模、功能、性能产品数据:如规模、功能、性能 等等 软件可靠性数据收集过程软件可靠性数据收集过程 31 缺陷数据的收集缺陷数据的收集 缺陷数据的收集常采用问答、报告形式,即发放问题报缺陷数据的收集常采用问答、报告形式,即发放问题报 告表格要求有关人员填写,收集并分析问题报告表格形告表格要求有关人员填写,收集并分析问题报告表格形 成统计数据

31、成统计数据检测到的缺陷 已记录的缺陷 已评审的缺陷 确认? 结束 缺陷报告 采取措施? 通过验证? 记录不采取 措施的原因 记录纠正 验证 问题报告 NoNo No Yes Yes Yes 32 过程数据的收集过程数据的收集 缺陷数据必须与过程融合才有价值,因而过程数据也需缺陷数据必须与过程融合才有价值,因而过程数据也需 要收集。通常会将项目的持续时间作为主要关心的过程数据,要收集。通常会将项目的持续时间作为主要关心的过程数据, 但实际需要更细分但实际需要更细分 与软件可靠性测试过程相关的数据包括:与软件可靠性测试过程相关的数据包括: CPU时间:具有与人无关性,但易忽略人的工作(如评时间:具

32、有与人无关性,但易忽略人的工作(如评 审等)审等) 日历时间:优点是易于收集,但没有考虑阶段特征,如日历时间:优点是易于收集,但没有考虑阶段特征,如 某些技术在某阶段更有效某些技术在某阶段更有效 运行时间:是为测试而运行软件的总时间,也未考虑阶运行时间:是为测试而运行软件的总时间,也未考虑阶 段特征段特征 其他数据:包括平均修复时间、完成每个过程活动的人其他数据:包括平均修复时间、完成每个过程活动的人 数、软件生命期各阶段所用时间百分比、各阶段所消耗的资数、软件生命期各阶段所用时间百分比、各阶段所消耗的资 源数量、各阶段的开始、截止日期、各阶段修复一个缺陷所源数量、各阶段的开始、截止日期、各阶

33、段修复一个缺陷所 需的工作量、各功能模块的缺陷数,等等需的工作量、各功能模块的缺陷数,等等 33 系统的运行剖面与可靠性的关系系统的运行剖面与可靠性的关系 软件的运行剖面软件的运行剖面是用来描述软件的实际可能发是用来描述软件的实际可能发 生的操作路径的集合。运行剖面是否能代表、生的操作路径的集合。运行剖面是否能代表、 刻画软件的实际使用取决于可靠性工程人员对刻画软件的实际使用取决于可靠性工程人员对 软件的系统模式、功能、任务需求及相应的输软件的系统模式、功能、任务需求及相应的输 入的分析,也取决于他们对用户使用这些系统入的分析,也取决于他们对用户使用这些系统 模式、功能、任务的概率的了解。运行

34、剖面构模式、功能、任务的概率的了解。运行剖面构 造的质量将对测试、分析的结果是否可信产生造的质量将对测试、分析的结果是否可信产生 最直接影响。最直接影响。 33 34 软件的运行剖面软件的运行剖面 软件可靠性建模需要具备三个条件:软件可靠性建模需要具备三个条件: l软件运行时间基准(软件运行时间基准(日历时间、运行时间、日历时间、运行时间、CPU时间)时间) l软件运行过程收集的数据,是建模基础软件运行过程收集的数据,是建模基础 l软件功能和运行环境软件功能和运行环境 软件运行剖面用于定量描述软件的用户运行环软件运行剖面用于定量描述软件的用户运行环 境,即软件的功能和各功能的使用概率境,即软件

35、的功能和各功能的使用概率 35 软件运行剖面软件运行剖面 p输入数据输入数据-输入元素输入元素-向量向量-输入输入 空间空间 p程序输入空间元素数量庞大,程序运行中程序输入空间元素数量庞大,程序运行中 每个元素被选用的概率互不相同,构成一每个元素被选用的概率互不相同,构成一 定的概率分布,这个概率为软件的运行剖定的概率分布,这个概率为软件的运行剖 面。面。 36 软件新系统的运行剖面软件新系统的运行剖面 l不同的运行模式下各功能的使用概率不同不同的运行模式下各功能的使用概率不同 l不同运行模式的出现模式也不同不同运行模式的出现模式也不同 运行模式1 运行模式2 功能 功 能 使 用 概 率 3

36、7 p 软件运行剖面与可靠性的关系软件运行剖面与可靠性的关系 软件可靠性度量、评估和预测与软件的某个特定的运行剖面软件可靠性度量、评估和预测与软件的某个特定的运行剖面 密切相关密切相关 软件测试期间,为节省时间和成本,通常每个运行剖面只测软件测试期间,为节省时间和成本,通常每个运行剖面只测 试一次,因而不能反映每个剖面的出现概率,由此获得的可试一次,因而不能反映每个剖面的出现概率,由此获得的可 靠性数据也不能反映实际情况靠性数据也不能反映实际情况 要将测试期间获得的可靠性值变换为实际值,可用以下公式:要将测试期间获得的可靠性值变换为实际值,可用以下公式: 其中,其中,u是实际的用户环境下的故障

37、密度,是实际的用户环境下的故障密度,T是测试值,是测试值,C为为 测试压缩系数测试压缩系数 C T u 38 C的含义是:在覆盖全部输入空间条件下,使用期间所要求的执行的含义是:在覆盖全部输入空间条件下,使用期间所要求的执行 时间与测试阶段所要求的执行时间之比时间与测试阶段所要求的执行时间之比 C的计算公式为:的计算公式为: 其中,其中,k为输入状态为输入状态k运行时的执行时间运行时的执行时间 Pk为输入状态为输入状态k在运行期间的发生概率在运行期间的发生概率 QI为输入状态总数为输入状态总数 Pmin为最少发生的输入状态的概率为最少发生的输入状态的概率 I I Q k k Q k kk P

38、P C 1 min 1 39 运行剖面对软件可靠性工程极具价值:运行剖面对软件可靠性工程极具价值: l可为开发过程的资源分配提供参考,有利于提高可为开发过程的资源分配提供参考,有利于提高 生产率、可靠性和加快开发速度生产率、可靠性和加快开发速度 l有利于测试,可确保常用功能获得更多测试有利于测试,可确保常用功能获得更多测试 l有利于设计测试用例,以发现影响可靠性最大的有利于设计测试用例,以发现影响可靠性最大的 故障故障 l根据功能的使用频度可确定开发的优先级根据功能的使用频度可确定开发的优先级 l使功能描述更清晰,便于交流使功能描述更清晰,便于交流 l有助于用户培训有助于用户培训 40 软件运

39、行剖面的建立软件运行剖面的建立 运行剖面是关于系统如何运行的定量描述,建立步运行剖面是关于系统如何运行的定量描述,建立步 骤为:骤为: l建立客户剖面:建立客户剖面:分类描述要获取该系统的客户的使用模分类描述要获取该系统的客户的使用模 式式 l建立用户剖面:建立用户剖面:分类描述要使用该系统的用户的使用模分类描述要使用该系统的用户的使用模 式式 l定义系统模式剖面:定义系统模式剖面:根据执行过程描述系统运行模式根据执行过程描述系统运行模式 l确定功能剖面:确定功能剖面:划分功能并确定各功能的发生概率划分功能并确定各功能的发生概率 l确定运行剖面:确定运行剖面:确定系统各运行模式的发生概率确定系

40、统各运行模式的发生概率 41 软件可靠性模型及应用软件可靠性模型及应用 p软件可靠性建模是围绕着软件可靠性建模是围绕着20世纪世纪70年代的先驱年代的先驱 工作者工作者Telinski、Moranda、Shooman和和 Coutinbo等人的工作展开的。等人的工作展开的。 p其基本方法是用过去的失效数据建立可靠性模型,其基本方法是用过去的失效数据建立可靠性模型, 然后用所建立起来的模型估计现在和预测将来的然后用所建立起来的模型估计现在和预测将来的 软件可靠性。软件可靠性。 p该方法使用的先验条件是给定过去某个时期内的该方法使用的先验条件是给定过去某个时期内的 软件失效次数或软件的失效时间间隔

41、。软件失效次数或软件的失效时间间隔。 p因此,根据模型使用的这两种数据我们将模型分因此,根据模型使用的这两种数据我们将模型分 成如下两类:成如下两类: l给定时间间隔内的失效数模型。给定时间间隔内的失效数模型。 l两相临失效间的时间间隔模型。两相临失效间的时间间隔模型。 42 好模型的一般标准好模型的一般标准 p建立软件可靠性模型的目的是估计软件可靠性,提供开发状态、建立软件可靠性模型的目的是估计软件可靠性,提供开发状态、 测试状态以及计划日程状态的参考定量数据,监视可靠性性能测试状态以及计划日程状态的参考定量数据,监视可靠性性能 及其变化。及其变化。 p一个好的模型必须有适合具体项目开发过程

42、的正确的假设。如一个好的模型必须有适合具体项目开发过程的正确的假设。如 果不知道哪个模型最适合当前项目,那么,一个聪明的办法就果不知道哪个模型最适合当前项目,那么,一个聪明的办法就 是在一个项目上执行一个以上的模型并且综合分析所得到的结是在一个项目上执行一个以上的模型并且综合分析所得到的结 果。果。 p在软件可靠性模型先驱者的工作成果的基础上,经过更多软件在软件可靠性模型先驱者的工作成果的基础上,经过更多软件 可靠性工作者近可靠性工作者近40年的努力,软件可靠性模型到目前为止已经年的努力,软件可靠性模型到目前为止已经 出现了很多种,最为常见且比较具有代表意义的模型不下出现了很多种,最为常见且比

43、较具有代表意义的模型不下20个。个。 下面简单列举其中的几个:下面简单列举其中的几个: lMusa模型,包括基本模型和对数模型;模型,包括基本模型和对数模型; lShooman模型;模型; lGoel-Okumoto模型;模型; l测试成功模型;测试成功模型; l威布尔模型。威布尔模型。 43 可靠性度量可靠性度量 p常见的软件差错包括非法转移、误转移、死循环、常见的软件差错包括非法转移、误转移、死循环、 空间溢出、数据执行和无理数据等。在软件可靠空间溢出、数据执行和无理数据等。在软件可靠 性分析和设计中,常常利用故障模型来对不同的性分析和设计中,常常利用故障模型来对不同的 故障表现进行抽象。

44、故障表现进行抽象。 p故障模型可以建立在系统的各个级别上。建立的故障模型可以建立在系统的各个级别上。建立的 级别越低,进行故障处理的代价就越低,但模型级别越低,进行故障处理的代价就越低,但模型 所覆盖的故障也越少。所覆盖的故障也越少。 p常用的故障模型有基于逻辑级、基于数据结构级常用的故障模型有基于逻辑级、基于数据结构级 和基于系统级的故障模型。和基于系统级的故障模型。 44 模型建立模型建立 p软件可靠性模型的建立是通过对所选模型关联参软件可靠性模型的建立是通过对所选模型关联参 数的统计来确定失效情况、可靠性目标和实现这数的统计来确定失效情况、可靠性目标和实现这 一目标的时间,并利用可靠性模

45、型来制定测试策一目标的时间,并利用可靠性模型来制定测试策 略,同时确定软件交付的预期可靠性。略,同时确定软件交付的预期可靠性。 p此外,它对经费估算、资源计划、进度安排和软此外,它对经费估算、资源计划、进度安排和软 件维护等也很重要。软件可靠性建模可归结为模件维护等也很重要。软件可靠性建模可归结为模 型的比较与选择、参数选择及模型应用。型的比较与选择、参数选择及模型应用。 p模型参数取决于软件性能、过程特性、修改活动模型参数取决于软件性能、过程特性、修改活动 和程序变化等。由于软件本身的特性,以及缺乏和程序变化等。由于软件本身的特性,以及缺乏 可靠性数据,因此建立完全满足这些因素的可靠可靠性数

46、据,因此建立完全满足这些因素的可靠 性模型非常困难,且难以验证。性模型非常困难,且难以验证。 45 模型统一模型统一 p从现有模型来预计软件可靠性,往往存在偏差。从现有模型来预计软件可靠性,往往存在偏差。 当给定或已知数据的基本分布时,极大似然估计当给定或已知数据的基本分布时,极大似然估计 是模型参数估计最基本的方法,它显然有利于对是模型参数估计最基本的方法,它显然有利于对 预计的改进。最小二乘法能很好地代替极大似然预计的改进。最小二乘法能很好地代替极大似然 估计,估计, p它通过故障强度拟合来估计模型参数。对中小样它通过故障强度拟合来估计模型参数。对中小样 本的情况,它具有较小的偏差和较快的

47、收敛性。本的情况,它具有较小的偏差和较快的收敛性。 pBayes分析方法提供了一种把先验知识综合到分析方法提供了一种把先验知识综合到 估计过程中的方法,为把不同数据源综合起来提估计过程中的方法,为把不同数据源综合起来提 供了有效的手段,但其分析和计算极为复杂。供了有效的手段,但其分析和计算极为复杂。 46 4.2.2 软件可靠性模型参数软件可靠性模型参数 p正如前面所说,当今存在着由很多软件可正如前面所说,当今存在着由很多软件可 靠性工作者开发的很多软件可靠性模型。靠性工作者开发的很多软件可靠性模型。 p这些模型使用了由各个软件可靠性工作者这些模型使用了由各个软件可靠性工作者 定义的各种各样的

48、参数。定义的各种各样的参数。 p因此,在本章讨论中,为了使变量名称一因此,在本章讨论中,为了使变量名称一 致,也为了书写和读者查阅方便,我们对致,也为了书写和读者查阅方便,我们对 变量名称统一定义如下:变量名称统一定义如下: 47 软件可靠性模型参数软件可靠性模型参数 与软件可靠性模型相关的参数有:与软件可靠性模型相关的参数有: ETF:软件中固有缺陷数,是固定的:软件中固有缺陷数,是固定的 ETV:同上,是变化的,在开发、维护过程中随时添加:同上,是变化的,在开发、维护过程中随时添加 EC(t):某时刻已纠正的缺陷数:某时刻已纠正的缺陷数 ED(t):某时刻已发现的缺陷数:某时刻已发现的缺陷

49、数 P:在修正缺陷过程中测试的循环次数,常假定:在修正缺陷过程中测试的循环次数,常假定 P=ED(t)=EC(t) EC(p):直到第:直到第p次测试才修正的缺陷数次测试才修正的缺陷数 0:起始故障率:起始故障率 p:当前故障率:当前故障率 :故障率的变化:故障率的变化 :累计执行时间:累计执行时间 :增长率:增长率 N:测试用例运行总数:测试用例运行总数 S:成功的测试用例运行总数:成功的测试用例运行总数 48 l软件可靠性模型的分类软件可靠性模型的分类 Musa、Okumoto根据模型的根据模型的5个特征进行分类:个特征进行分类: 时间域(时间域(time domain):日历时间、执行时

50、间):日历时间、执行时间 或或CPU时间时间 类别(类别(Category):软件在无限的时间内可能经):软件在无限的时间内可能经 历的故障数是有限的还是无限的历的故障数是有限的还是无限的 型(型(Type):软件在运行时间):软件在运行时间t时的失效数分布分时的失效数分布分 类类 种类(种类(Class):故障密度对时间的函数分布(仅):故障密度对时间的函数分布(仅 对有限故障类)对有限故障类) 族(族(Family):故障密度对它的期望故障数的函数):故障密度对它的期望故障数的函数 分布(仅对无限故障类)分布(仅对无限故障类) 50 软件可靠性模型软件可靠性模型 lMusa模型模型 基本模

51、型基本模型 假设:每个缺陷对故障率的贡献是相同的;每假设:每个缺陷对故障率的贡献是相同的;每 修正一个缺陷故障率均匀地减少,即故障率对修正一个缺陷故障率均匀地减少,即故障率对 时间的导数是常数;软件固有的故障总数是时间的导数是常数;软件固有的故障总数是 有限的,但不固定,即修正缺陷时可能产生新有限的,但不固定,即修正缺陷时可能产生新 缺陷缺陷 Musa模型:模型: ETV 0 0 e p 51 利用基本模型可估计要达到某利用基本模型可估计要达到某 可靠性目标还必须要发现(检可靠性目标还必须要发现(检 测出)的缺陷数和需要的时间,测出)的缺陷数和需要的时间, 有助于计划人力和时间有助于计划人力和

52、时间 设要达到的可靠性目标为设要达到的可靠性目标为f,则,则 需发现的故障数需发现的故障数Nf为:为: 为达到这一目标所需时间为达到这一目标所需时间Tf为:为: )/ln( 1 fp f N fp f T 1 当前已检 测出的累 积缺陷数 为达到故障率目 标或MTTF目标 必须要检出的累 计缺陷数 为达到目 标还需检 测出的缺 陷数 为达到目标 需要的时间 测试时间 已检出 的累计 缺陷数 52 对数模型对数模型 假设:假设: 每个缺陷对故障率的贡献不同;常每个缺陷对故障率的贡献不同;常 用的功能的缺陷可及早被检出,故障率的变化用的功能的缺陷可及早被检出,故障率的变化 随时间减少;软件固有的故

53、障总数是无限的随时间减少;软件固有的故障总数是无限的 Musa模型:模型: Nf和和Tf为:为: 1 0 0 p )/ln( 1 fp f N fp fp f T 53 lGoel-Okumoto模型模型 假设:缺陷对时间的分布是非时对齐的,即发假设:缺陷对时间的分布是非时对齐的,即发 现的缺陷不一定会立即消除(适用于开发早期)现的缺陷不一定会立即消除(适用于开发早期) 基本模型:基本模型: 其中,其中,ab为常数,与单位时间内发生的缺陷有为常数,与单位时间内发生的缺陷有 关关 可得:可得: 修正模型:修正模型: 故障密度函数为故障密度函数为Weibull分布分布 bt abet )( bt

54、aeatED )( c btc eabctt 1 )( 54 软件可靠性模型的适用条件软件可靠性模型的适用条件 55 4.2.4 软件可靠性模型评价准则软件可靠性模型评价准则 p模型拟合性模型拟合性 p模型预计有效性模型预计有效性 p模型偏差模型偏差 p模型偏差趋势模型偏差趋势 p模型噪声模型噪声 单位斜率线 图4-7 -结构图 56 4.3软件可靠性测试和评估软件可靠性测试和评估 p软件可靠性评价是软件可靠性工作的重要组成部分。软件软件可靠性评价是软件可靠性工作的重要组成部分。软件 可靠性评测是主要的软件可靠性评价技术,它包括测试与可靠性评测是主要的软件可靠性评价技术,它包括测试与 评价两个

55、方面的内容,既适用于软件开发过程,也可针对评价两个方面的内容,既适用于软件开发过程,也可针对 最终软件产品。最终软件产品。 p在软件开发过程中使用软件可靠性评测技术,除了可以更在软件开发过程中使用软件可靠性评测技术,除了可以更 快速地找出对可靠性影响最大的错误,还可以结合软件可快速地找出对可靠性影响最大的错误,还可以结合软件可 靠性增长模型,估计软件当前的可靠性,以确认是否可以靠性增长模型,估计软件当前的可靠性,以确认是否可以 终止测试和发布软件,同时还可以预计软件要达到相应的终止测试和发布软件,同时还可以预计软件要达到相应的 可靠性水平所需要的时间和测试量,论证在给定日期提交可靠性水平所需要

56、的时间和测试量,论证在给定日期提交 软件可能给可靠性带来的影响。软件可能给可靠性带来的影响。 p对于最终软件产品,软件可靠性评测是一种可行的评价技对于最终软件产品,软件可靠性评测是一种可行的评价技 术,可以对最终产品进行可靠性验证测试,确认软件的执术,可以对最终产品进行可靠性验证测试,确认软件的执 行与需求的一致性,确定最终软件产品所达到的可靠性水行与需求的一致性,确定最终软件产品所达到的可靠性水 平。平。 57 软件可靠性测试软件可靠性测试 软件测试的类型软件测试的类型 与软件可靠性相关的测试主要是动态测试与软件可靠性相关的测试主要是动态测试 l单元测试:对汇编单元进行测试单元测试:对汇编单

57、元进行测试 l集成测试:对汇编单元接口的测试集成测试:对汇编单元接口的测试 l验收测试:验收并确认实现了所有需求验收测试:验收并确认实现了所有需求 l回归测试:对与修正的缺陷的软件部件的再测回归测试:对与修正的缺陷的软件部件的再测 试试 58 软件可靠性测试方法软件可靠性测试方法 l利用在其他测试中的数据收集来检验软件可靠性的测试利用在其他测试中的数据收集来检验软件可靠性的测试 基本步骤是:基本步骤是: 仔细研究开发过程和软件问题报告仔细研究开发过程和软件问题报告 确定使用确定使用哪哪些或些或哪哪个模型来度量软件可靠性个模型来度量软件可靠性 执行一种有效的方法来收集问题报告缺陷数据、过程数据执

58、行一种有效的方法来收集问题报告缺陷数据、过程数据 和产品数据,收集集成测试期间及以后的数据和产品数据,收集集成测试期间及以后的数据 按照模型规定的原理和方法,将数据输入选定的模型,直按照模型规定的原理和方法,将数据输入选定的模型,直 接估计软件可靠性或间接地估计与其有关的参数接估计软件可靠性或间接地估计与其有关的参数 根据估计结果进行决策:根据估计结果进行决策: 软件能否被释放(发布)?软件能否被释放(发布)? 是否需要增加测试时间以达到可靠性目标?如果需是否需要增加测试时间以达到可靠性目标?如果需 要,还需要多少时间?要,还需要多少时间? 59 lBeta测试测试 可以直接反映可靠性水平可以

59、直接反映可靠性水平 l系统软件证明测试系统软件证明测试 在要求时间内、在实际的使用环境中运行系统,不对在要求时间内、在实际的使用环境中运行系统,不对 系统进行维护,收集发现的故障数,以决定整个系统系统进行维护,收集发现的故障数,以决定整个系统 能否通过可靠性测试能否通过可靠性测试 l基于测试时间的软件证明测试基于测试时间的软件证明测试 在相对较长时间内对软件的运行进行软件证明测试在相对较长时间内对软件的运行进行软件证明测试 l基于测试输入的软件证明测试基于测试输入的软件证明测试 只针对特定的测试用只针对特定的测试用例例进行软件证明测试进行软件证明测试 60 软件证明测试方法软件证明测试方法 测

60、试前,先由测试者和用户共同确定测试前,先由测试者和用户共同确定 以下三个参数:以下三个参数: l用户风险因子用户风险因子:是由用户承担的软件可靠:是由用户承担的软件可靠 性未达目标而通过测试的风险性未达目标而通过测试的风险 l生产者风险因子生产者风险因子:是由开发者承担的可靠:是由开发者承担的可靠 性已达目标而未被接受的风险性已达目标而未被接受的风险 l鉴别因子鉴别因子:是最大可接受的失效密度和失:是最大可接受的失效密度和失 效密度目标的比值效密度目标的比值 61 确定可靠性测试判定标准确定可靠性测试判定标准 根据已确定的三个参数绘制软件根据已确定的三个参数绘制软件 可靠性证明测试判定图可靠性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论