软件可靠性第一讲教材课程

上传人:yuzo****123 文档编号:141292638 上传时间:2020-08-06 格式:PPT 页数:51 大小:1.48MB
返回 下载 相关 举报
软件可靠性第一讲教材课程_第1页
第1页 / 共51页
软件可靠性第一讲教材课程_第2页
第2页 / 共51页
软件可靠性第一讲教材课程_第3页
第3页 / 共51页
软件可靠性第一讲教材课程_第4页
第4页 / 共51页
软件可靠性第一讲教材课程_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《软件可靠性第一讲教材课程》由会员分享,可在线阅读,更多相关《软件可靠性第一讲教材课程(51页珍藏版)》请在金锄头文库上搜索。

1、软件可靠性,第一阶段:(1950-1967年) 软件可靠性学科萌芽时期。,软件可靠性发展至今可分为下列三个阶段:,第二阶段:(1968-1987年) 软件可靠性学科的形成时期。,第三阶段:(1988年至今) 软件可靠性向工程应用过渡的时期。,对软件可靠性的要求,软件应用广泛;,软件必须满足用户要求,又要稳定可靠的完 成用户的任务;,软件可靠性的重要程度依赖于风险成本;,软件规模、复杂性、重要性的增加给 软件可靠性带来挑战。,超高可靠性要求的领域,航空航天领域;,汽车发动机控制;,轨道、列车控制系统;,医疗设备;,金融管理系统;,软件的状况,硬件飞速发展,软件不相适应,硬件越来越可靠,软件虽然采

2、取了很多办法,但还是系统崩溃的主要原因;,大部分的软件不是很可靠。,软件不可靠性的因素,不完善的需求定义;,客户与开发人员缺乏沟通;,逻辑设计错误;,偏离软件需求;,缺少测试过程;,编码错误;,编码与文档不一致;,因软件设计故障与因计算机硬件设计故障而引发的系统失效的比例大约是:10:1 运行软件的驻留故障密度(每千行代码的故障数目): 要求很高的关键财务或财产软件为:每千行代码 110个故障 关键的生命软件为:每千行代码0.011个故障 IEEE将软件可靠性定义为:系统在特定环境下,在给定的时间内无故障运行的概率。 软件可靠性是对软件在设计、开发以及所预定的环境下具有能力的置信度的一个度量,

3、是衡量软件质量的主要参数之一。而软件测试则是保证软件质量、提高软件可靠性的最重要手段。,软件可靠性问题,软件缺陷与故障,1、软件缺陷和软件故障案例 案例1 美国迪斯尼公司的狮子王游戏软件bug 兼容性问题 案例2 美国航天局火星登陆事故 系统测试 衔接问题 案例3 跨世纪“千年虫”问题 案例4 爱国者导弹防御系统炸死自家人 系统时钟误差积累 案例5 Windows 2000 中文输入法漏洞 案例6 金山词霸bug 上述所有实例中的软件问题在软件工程或软件测试中都被称为软件缺陷或软件故障。,软件缺陷的定义,至少满足下列5个规则之一才称发生了一个软件缺陷(software bug),1)软件未实现

4、产品说明书要求的功能;,2)软件出现了产品说明书指明不应该出现的错误;,3)软件实现了产品说明书未提到的功能;,4)软件未实现产品说明书未提及但应实现的功能;,5)软件难以理解、不易使用、运行缓慢,用户评价不好。,举例:计算器内的嵌入式软件,“看不到” 软件的特殊性决定了缺陷不易看到 “看到但是抓不到” 发现了缺陷,但不易找到问题发生的原因所在,软件缺陷的特征,软件可靠性的基本知识,Contents: 软件可靠性的基本概念 软件可靠性的基本特征量 软件可靠性设计,软件可靠性的基本概念,一、软件的环境条件 二、时间的度量 三、软件的故障 四、影响软件可靠性因素,软件可靠性的基本知识,软件可靠性的

5、基本特征(可靠性参数),1. 系统不工作次数 2. 系统平均不工作间隔时间(MTBD) 3. 有效性( A ) 4. 平均修复时间(MTTR) 5. 平均不工作时间(MDT) 6. 初期故障率 7. 偶然故障率 8. 使用方误用率 9. 用户提出补充要求数 10. 处理能力,随着计算机软件的飞速发展,软件可靠性已变得越来越重要。据统计,计算机系统中,由于软件错误引起的故障占所有故障的65。 究其原因是软件太复杂了,一个小小的程序,其可能的路径可以是天文数字,以致于在软件开发过程中难以对其作穷尽的测试,或者说难于完全排除软件缺陷。,软件可靠性的基本知识,为了说明软件的复杂性,让我们考虑一个由10

6、至20条高级语言构成的程序,其控制流程图如图所示。,软件可靠性的基本知识,图中每个结点或圆圈代表一段可能以转移语句结束的顺序执行语句,每条弧代表两段程序间的控制转移。 假设程序含有一个最少重复20次的循环语句,而在循环体内,则有一些嵌套的条件语句。 假设程序中所有判断都是相互独立的,由于有5条贯穿循环体的路径: 即cdefhm; cdefim; cdegjm; cdegkm; cdlm。,软件可靠性的基本知识,那么从点A到点B的所有独立路径数为: 520+519+51,约为1014或1016亿。如果考 虑程序输入数据的变化,那情况就更为复杂 了。 可见,软件可靠性问题在软件工程实 践中极为重要

7、,对软件可靠性问题的研究 在国际上已十分活跃。,软件可靠性的基本知识,软件可靠性的基本概念,关于软件可靠性的确切定义,国际学术界曾经有过长期的争论。对软件可靠性定义的理解有广义和狭义两种:,广义的可靠性:,是指一切旨在避免、减少、处理、度量软件故障(错误、缺陷、失效)的分析、设计、测试方法、技术和实践活动。,软件可靠性的基本知识,与之相关的内容有软件可靠性度量、软件可靠性设计、软件可靠性建模、软件可靠性测试和软件可靠性管理等。,狭义的可靠性:,是指软件无失效运行的定量度量。 与之相关的内容有软件可靠性度、软件 失效强度和软件平均失效时间等。,软件可靠性的基本知识,软件可靠性的基本概念,一、软件

8、的环境条件 二、时间的度量 三、软件的故障 四、影响软件可靠性因素,软件可靠性的基本知识,一、软件的环境条件 环境条件包括与程序存储有关的计算机及其操作系统。 例如计算机型号、字长、内存容量、外存介质的数量及容量、输入和输出设备的数量、通信网络、操作系统和数据管理系统、编译程序及其他支持软件等。 这些因素对程序的运行有很大的影响,但在使用中一般没有变化。 环境条件还包括软件的输入分布。 软件的输入有外部和内部输入:,软件可靠性的基本知识,程序在启动运行时,需要给变量赋值,即给程序提供输入数据,输入的数据可能由外部设备输入,也可能由早已存储在计算机内等待读取。,程序运行一次所需的输入数据构成程序

9、输入空间的一个元素,这个元素是一个多维向量。 全部输入向量的集合构成程序的输入空间。,一组输入数据经过程序处理后得到一组输出数据,这些输出数据构成一个输出向量,全部输出向量的集合构成程序的输出空间。,软件可靠性的基本知识,程序输入空间的元素数量非常庞大,程序运行中每个元素被选用的概率各不相同,形成一定的概率分布,我们称此为程序运行剖面,程序的不同的运行状态,对应于不同的运行剖面。,软件操作剖面:通常是指软件运行的输入空间及其概率分布。 软件的输入空间是指软件所有可能的输入值构成的空间。按照欧空局标准的定义,软件的操作剖面是指“对系统使用条件的定义。即系统的输入值用其按时间的分布或按它们在可能输

10、入范围内的出现概率的分布来定义”。,软件可靠性的基本知识,二、时间的度量 1. 日历时间 软件的测试和运行以日、周、月、年等为计时单位。 2. 时钟时间 软件从运行开始,到运行结束以时、分、秒为计时单位。其中包括等待时间和其他辅助 时间,但不包括停机占用时间。 3. 执行时间 计算机在执行程序时,实际占用中心处 理器(CPU)的时间,又称CPU时间。,软件可靠性的基本知识,三、软件的故障,软件可靠性工程的主要目标是保证提高软件可靠性。为达到这一目标,显然首先要弄清软件为什么会出现故障。只有这样,才有可能在软件开发过程中减少导致软件故障的隐患,且一旦出现什么故障,有可能采取有效措施加以清除。,弄

11、清软件故障机理是软件可靠性分析的根本目标。由于软件内部逻辑复杂,运行环境动态变化,且不同的软件差异可能很大,因而软件故障机理可能有不同的表现形式。,软件可靠性的基本知识,譬如有的故障过程比较简单,易于追踪分析,而有的故障过程可能非常复杂,难于甚至不可能加以详尽描述和分析。尤其是运行于高度复杂实时环境中的大型软件。,但总的说来,软件故障机理可描述为: 软件失误、软件缺陷、软件错误和软件故障。,软件可靠性的基本知识,1软件缺陷 软件开发中残留的内在缺陷称为软件缺陷。这些缺陷可以在软件生存期的各个阶段被引入。,软件可靠性的基本知识,在软件开发的各阶段,软件始终离不开人的参与,而人难免会犯错误,这样就

12、必然给软件留下不良的痕迹。 例如一段程序进行某些数据处理,若在处理过程中就产生软件错误,则说明这段程序存在缺陷或缺少一个程序段。 软件缺陷是一个静止的现象,只在一定的输入条件下才能被激活导致软件错误,而且软件错误也不一定导致软件故障。 比如容错软件中的错误就可以被检测出来并可纠正或避免,而不导致故障。,软件可靠性的基本知识,2软件错误,软件缺陷在一定条件下暴露并导致系统在运行中出现可感知的不正常、不正确、不按规范执行的内部状态,则认为软件出现“错误”,简称出错。,所谓不正确的内部状态,是指在此状态下,当正常的算法继续下去时,就会发生软件故障。,软件错误是由于软件缺陷造成的。,一个错误可能是多个

13、故障源。,软件可靠性的基本知识,3软件故障,在对错误不作任何纠正和恢复的情况下,导致系统的输出不满足用户提供的正式文件上指明的要求,或双方协议的条款,称为软件的一次故障。,软件故障是由于软存错误造成的一种外部表现,它是动态的、程序执行过程中出现的行为表现。,软件可靠性的基本知识,综上所述,软件缺陷是人为错误。,当一个软件缺陷被激活时,便产生一 个或多个软件错误;,当软件错误不加以纠正时,便不可避 免地产生软件故障。,同一个软件缺陷下可能产生不同的软件故障。,软件可靠性的基本知识,四、影响软件可靠性因素,软件可靠性因素:软件生存期内影响软件可 靠性的因素。 显然,有许许多多因素可以影响软件可靠性

14、,包括技术的、社会的、经济的、甚至文化的,因为在软件生存期的各个阶段均有人的干预,而人的行为受到各方面因素的影响。,软件可靠性的基本知识,但从技术角度来看,影响软件可靠性的 因素主要包括:,1. 运行环境(剖面),软件可靠性定义相对于运行环境而言,同 一软件在不同运行剖面下,其可靠性行为可能 极不相同。,软件可靠性的基本知识,我们知道,软件故障是软件缺陷在一定 输入情况下被激活的结果。于是可以将软件 输入域划分为两个部分(G和F) :,G 中的输入不会激活软件的缺陷,F 中的输入恒激活软件缺陷。如果运行剖面不包含F中的输入,则软件不会出现故障,其可靠性恒为1。,反之,如果运行剖面不包含G中的输

15、入, 则每一输入情况下均出现故障。如果没有容错 措施,则导致软件故障,软件可靠性恒为0。,软件可靠性的基本知识,2.软件规模,如果软件只含一条指令,那么谈论软件可靠性问题便失去意义。随着软件规模的增大,软件可靠性问题愈显突出。,在我们考虑软件可靠性问题时,软件一般是指中型以上软件(40005000条以上语句),这时可靠性问题难以对付。,软件可靠性的基本知识,3. 软件内部结构,软件内部结构一般比较复杂,且动态变 化,对可靠性的影响也不甚清楚。,但总的说来,结构越复杂,软件复杂度越 高,内含缺陷数越多,因而软件可靠度越低。,软件可靠性的基本知识,4. 软件可靠性设计技术。,一般是指软件设计阶段中

16、采用的用以 保证和提高软什可靠性为主要目标的软件技术。 如故障模式与影响分析(FMECA)、故障 树分析(FTA)等。显然采用或不采用软件可靠 性设计技术对软件可靠性必有影响。,软件可靠性的基本知识,5. 软件可靠性测试 研究表明,软件测试方法与资源投入对软件可靠性有不可忽视的影响。 6. 软件可靠性管理 软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动。 使之系统化、规范化、一体化,这样就可以避免许多人为错误,以提高软件可靠性.,7. 软件开发人员能力和经验,软件可靠性的基本知识,软件工程表明,开发方法对软件可靠性有显著影响。与非结构化方法比较,结构化方法可以明显减少软件缺陷数。,8. 软件开发方法,研究表明,程序语言对软件可靠性有影响。 譬如,结构化语言Ada优于Fortran语言,而软 件测试工具优劣则影响测试效果。,9. 软件开发环境,软件可靠性的基本特征(可靠性参数),软件可靠性的基本特征(可靠性参数),

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号