软件可靠性精.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件可靠性精.ppt》由会员分享,可在线阅读,更多相关《软件可靠性精.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件可靠性第1页,本讲稿共75页软件可靠性的发展软件可靠性的发展l1968年在西德召开的国际软件工程会议上提出的年在西德召开的国际软件工程会议上提出的“软软件危机件危机”l美国贝尔(美国贝尔(Bell)实验室曾对一个)实验室曾对一个AT&T运行支持系统运行支持系统作了统计,发现作了统计,发现80%的故障与软件有关的故障与软件有关l美国航天飞机上飞行软件有美国航天飞机上飞行软件有50多万行源代码;而多万行源代码;而F一一22战斗机上的飞行软件的源代码数更是高达战斗机上的飞行软件的源代码数更是高达150多多万行。万行。l另据美国军方的统计,美国军方在武器装备作战使用中遇另据美国军方的统计,美国军方
2、在武器装备作战使用中遇到的问题,软件问题约占到到的问题,软件问题约占到70左右。左右。第2页,本讲稿共75页l美国空军的范登堡中心在美国空军的范登堡中心在60年代后期发生年代后期发生过多次导弹试射失败的事故,事后发现几过多次导弹试射失败的事故,事后发现几乎都是由软件错误造成的;乎都是由软件错误造成的;lF一一18战斗机在海湾战争中,飞行控制软件战斗机在海湾战争中,飞行控制软件共发生了共发生了500多次故障;多次故障;l我国某型号飞机首飞前航空电子系统在地面我国某型号飞机首飞前航空电子系统在地面测试中测出的故障共测试中测出的故障共800多个,其中软件故多个,其中软件故障就达障就达600多个,约占
3、多个,约占75。由于软件故障造成的重大事故不乏其例由于软件故障造成的重大事故不乏其例第3页,本讲稿共75页l1990年年1月月15日,美国一通信中转系统新投日,美国一通信中转系统新投入使用的软件发生了错误,导致主干线远入使用的软件发生了错误,导致主干线远程网大规模崩溃;程网大规模崩溃;l美国的美国的Therac-25放射性治疗仪由于软件存放射性治疗仪由于软件存在缺陷导致几个癌症病人受到非常严重的在缺陷导致几个癌症病人受到非常严重的过量放射性治疗,其中过量放射性治疗,其中4个人因此死亡;个人因此死亡;l2002年年11月月28日,欧洲的亚里安娜日,欧洲的亚里安娜5型火箭型火箭因发动机控制系统软件
4、的错误而导致飞行因发动机控制系统软件的错误而导致飞行试验失败。试验失败。什么原因?什么原因?第4页,本讲稿共75页调用路径太多调用路径太多其中每个结点或圆圈代表一段可能其中每个结点或圆圈代表一段可能以转移语句结束的顺序执行语句,以转移语句结束的顺序执行语句,每条弧代表两段程序间的控制转移。每条弧代表两段程序间的控制转移。程序含有一个最少重复程序含有一个最少重复20次的循环次的循环语句语句.由于有由于有5条贯穿循环体的路径,条贯穿循环体的路径,即即cdefhm;cdefim;cdegjm;cdegkm;cdlm,那么从,那么从 点点A到点到点B的所有独立路的所有独立路径数为径数为520+519+
5、51,约为,约为1014 或或1016亿。亿。第5页,本讲稿共75页(1 1)故障机理)故障机理 硬件产生故障的原因有四个方面:即设计硬件产生故障的原因有四个方面:即设计问题、生产过程中的问题、超载及耗损。硬件故问题、生产过程中的问题、超载及耗损。硬件故障主要是由于耗损(物理退化)所致的,而软件障主要是由于耗损(物理退化)所致的,而软件不存在物理退化现象。这就决定了软件正确性与不存在物理退化现象。这就决定了软件正确性与软件可靠性密切相关,一个正确的软件任何时刻软件可靠性密切相关,一个正确的软件任何时刻均可靠;然而一个正确的硬件元器件或系统则可均可靠;然而一个正确的硬件元器件或系统则可能在某个时
6、刻故障。软件没有耗损问题并不等于能在某个时刻故障。软件没有耗损问题并不等于没有可靠性问题,因在开发过程中常有一些随机没有可靠性问题,因在开发过程中常有一些随机因素,不可避免地会在软件中留下缺陷,因而软因素,不可避免地会在软件中留下缺陷,因而软件也有可靠性问题。所以硬件的故障机理是耗损,件也有可靠性问题。所以硬件的故障机理是耗损,而软件的故障机理就是残留缺陷在一定环境下造而软件的故障机理就是残留缺陷在一定环境下造成的软件错误。成的软件错误。软件与硬件的不同软件与硬件的不同第6页,本讲稿共75页(2)复杂性)复杂性 软件内部逻辑高度复杂,而硬件内部逻软件内部逻辑高度复杂,而硬件内部逻辑较为简单,这
7、就在很大程度上决定了设辑较为简单,这就在很大程度上决定了设计错误是导致软件故障的主要原因,而导计错误是导致软件故障的主要原因,而导致硬件故障的可能性则很小。致硬件故障的可能性则很小。(3 3)唯一性)唯一性 软件是唯一的,软件拷贝不改变软件软件是唯一的,软件拷贝不改变软件本身,而任何两个硬件不可能绝对相同。本身,而任何两个硬件不可能绝对相同。第7页,本讲稿共75页 软件可靠性的核心是软件可靠性的核心是“思考思考”问题,软件中不可能问题,软件中不可能象硬件那样分解成元部件,它只有语句。语言本象硬件那样分解成元部件,它只有语句。语言本身造成的软件故障较少,且通过静态测试身造成的软件故障较少,且通过
8、静态测试(目测目测或编译或编译)可加修正。软件错误来源主要是软件设计者可加修正。软件错误来源主要是软件设计者的思维错误及软件的复杂性,这是难以控制的。故的思维错误及软件的复杂性,这是难以控制的。故软件可靠性的提高需从人的思维正确性和减少软件软件可靠性的提高需从人的思维正确性和减少软件的复杂性两方面着手。这正如我们用汉语写文章,的复杂性两方面着手。这正如我们用汉语写文章,观点有错误不能归咎于语言本身不好,而应归咎于观点有错误不能归咎于语言本身不好,而应归咎于人的思想人的思想。(4 4)可靠性的核心)可靠性的核心 第8页,本讲稿共75页 由于软件内部逻辑复杂,运行环境动态由于软件内部逻辑复杂,运行
9、环境动态变化,且不同的软件差异可能很大,因而软变化,且不同的软件差异可能很大,因而软件故障机理可能有不同的表现形式。譬如有件故障机理可能有不同的表现形式。譬如有的故障过程比较简单,易于追踪分析,而有的故障过程比较简单,易于追踪分析,而有的故障过程可能非常复杂,难于甚至不可能的故障过程可能非常复杂,难于甚至不可能加以详尽描述和分析,尤其是运行于高度复加以详尽描述和分析,尤其是运行于高度复杂实时环境中的大型软件。但总的说来,软杂实时环境中的大型软件。但总的说来,软件故障机理可描述为:件故障机理可描述为:软件缺陷软件缺陷软件错误软件错误软件故障。软件故障。软件故障软件故障第9页,本讲稿共75页(1
10、1)软件缺陷)软件缺陷软件缺陷软件缺陷(Default)(Default):软件开发中残留的内在缺陷称为软软件开发中残留的内在缺陷称为软件缺陷。这些缺陷可以在软件生存期的各个阶段被引入。件缺陷。这些缺陷可以在软件生存期的各个阶段被引入。在软件开发的各阶段,软件始终离不开人的参与,而人难在软件开发的各阶段,软件始终离不开人的参与,而人难免会犯错误,这样就必然给软件留下不良的痕迹。例如一免会犯错误,这样就必然给软件留下不良的痕迹。例如一段程序进行某些数据处理,若在处理过程中就产生软件错段程序进行某些数据处理,若在处理过程中就产生软件错误,则说明这段程序存在缺陷或缺少一个程序段。软件缺误,则说明这段
11、程序存在缺陷或缺少一个程序段。软件缺陷是一个静止的现象,只在一定的输入条件下才能被激活陷是一个静止的现象,只在一定的输入条件下才能被激活导致软件错误,而且软件错误也不一定导致软件故障,比导致软件错误,而且软件错误也不一定导致软件故障,比如容错软件中的错误就可以被检测出来并可纠正或避免,如容错软件中的错误就可以被检测出来并可纠正或避免,而不导致故障。而不导致故障。第10页,本讲稿共75页(2 2)软件错误)软件错误软件错误软件错误(Error)(Error):软件缺陷在一定条件下暴露并导软件缺陷在一定条件下暴露并导致系统在运行中出现可感知的不正常、不正确、不按致系统在运行中出现可感知的不正常、不
12、正确、不按规范执行的内部状态,则认为软件出现规范执行的内部状态,则认为软件出现“错误错误”,简,简称出错。所谓不正确的内部状态,是指在此状态下,称出错。所谓不正确的内部状态,是指在此状态下,当正常的算法继续下去时,就会发生软件故障。软件当正常的算法继续下去时,就会发生软件故障。软件错误是由于软件缺陷造成的。一个错误可能是多个故错误是由于软件缺陷造成的。一个错误可能是多个故障源。例如,在求最大值的程序中,设计人员由于疏障源。例如,在求最大值的程序中,设计人员由于疏忽将求得的平均值作为最大值,这就是一个软件错误。忽将求得的平均值作为最大值,这就是一个软件错误。第11页,本讲稿共75页(3 3)软件
13、故障)软件故障软件故障软件故障(Failure)(Failure):在对错误不作任何纠在对错误不作任何纠正和恢复的情况下,导致系统的输出不满正和恢复的情况下,导致系统的输出不满足用户提供的正式文件上指明的要求或双足用户提供的正式文件上指明的要求或双方协议的条款,称为软件的一次故障。软方协议的条款,称为软件的一次故障。软件故障是由于软存错误造成的一种外部表件故障是由于软存错误造成的一种外部表现,它是动态的、程序执行过程中出现的现,它是动态的、程序执行过程中出现的行为表现。(行为表现。(2 2)中的故障例子,由于没有)中的故障例子,由于没有容错措施,即没有限制和排除软件故障的容错措施,即没有限制和
14、排除软件故障的措施,最终将得到不可接受的结果(平均措施,最终将得到不可接受的结果(平均值),产生软件故障。值),产生软件故障。第12页,本讲稿共75页软件故障的特点软件故障的特点第13页,本讲稿共75页影响软件可靠性的因素影响软件可靠性的因素u运行环境运行环境(剖面剖面)。同一软件在不同运行剖面下,其可靠性行为可同一软件在不同运行剖面下,其可靠性行为可能极不相同。由于软件故障是软件缺陷在一定输入情况下被激能极不相同。由于软件故障是软件缺陷在一定输入情况下被激活的结果,假设软件输入域划分为两个部分:活的结果,假设软件输入域划分为两个部分:G G和和F F:运行剖面:运行剖面不包含不包含F F中的
15、输入,则软件不会出现故障,其可靠性恒为中的输入,则软件不会出现故障,其可靠性恒为l l。反。反之,如果运行剖面不包含之,如果运行剖面不包含G G中的输入,则每一输入情况下均出现中的输入,则每一输入情况下均出现故障,如果没有容错措施则故障,如果没有容错措施则R=0R=0。u软件规模。软件规模。随着软件规模的增大,软件可靠性问题愈显突出。在随着软件规模的增大,软件可靠性问题愈显突出。在我们考虑软件可靠性问题时,软件一般是指中型以上软件我们考虑软件可靠性问题时,软件一般是指中型以上软件(4000-(4000-50005000条以上语句条以上语句),这时可靠性问题难以对付。软件工程实践的一个,这时可靠
16、性问题难以对付。软件工程实践的一个侧面可以反映这一点,即单元测试一般由编程人员本人进行,而综合侧面可以反映这一点,即单元测试一般由编程人员本人进行,而综合测试则需独立的测试人员。软件可靠性增长模型也主要应用于综合测测试则需独立的测试人员。软件可靠性增长模型也主要应用于综合测试阶段。试阶段。u软件内部结构。软件内部结构。软件内部结构一般比较复杂,且动态变化,对可靠性软件内部结构一般比较复杂,且动态变化,对可靠性的影响也不甚清楚。但总的说来,结构越复杂,软件复杂度越高,内的影响也不甚清楚。但总的说来,结构越复杂,软件复杂度越高,内含缺陷数越大,因而软件可靠度越低。含缺陷数越大,因而软件可靠度越低。
17、第14页,本讲稿共75页u软件可靠性设计技术。软件可靠性设计技术。关于软件可靠性设计技术的外延并不明确,关于软件可靠性设计技术的外延并不明确,但一般是指软件设计阶段中采用的用以保证和提高软件可靠性为但一般是指软件设计阶段中采用的用以保证和提高软件可靠性为主要目标的软件技术。主要目标的软件技术。u软件可靠性测试软件可靠性测试。研究表明,软件测试方法与资源投入对软件可靠性。研究表明,软件测试方法与资源投入对软件可靠性有不可忽视的影响。有不可忽视的影响。u软件可靠性管理软件可靠性管理。软件可靠性管理旨在系统管理软件生存期。软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动,使之系统化、规范化、一
18、体化,这样各阶段的可靠性活动,使之系统化、规范化、一体化,这样就可以避免许多人为错误,以提高软件可靠性。就可以避免许多人为错误,以提高软件可靠性。u软件开发人员能力和经验软件开发人员能力和经验。显然,软件开发人员。显然,软件开发人员(包括测试人员包括测试人员)的能力愈强,经验愈丰富,所犯错误便可能愈少,所得软件产的能力愈强,经验愈丰富,所犯错误便可能愈少,所得软件产品质量愈高,相应的可靠性也愈高。品质量愈高,相应的可靠性也愈高。u软件开发方法软件开发方法。软件工程表明,开发方法对软件可靠性有显著影响。软件工程表明,开发方法对软件可靠性有显著影响。与非结构化方法比较,结构化方法可以明显减少软件缺
19、陷数。与非结构化方法比较,结构化方法可以明显减少软件缺陷数。u软件开发环境软件开发环境。研究表明,程序语言对软件可靠性有影响。譬。研究表明,程序语言对软件可靠性有影响。譬如,结构化语言如,结构化语言AdaAda优于优于FortranFortran语言,而软件测试工具优劣则语言,而软件测试工具优劣则影响测试效果。影响测试效果。第15页,本讲稿共75页软件可靠性定义软件可靠性定义 (1 1)沿用硬件可靠性的定义沿用硬件可靠性的定义,即软件可靠性是指,即软件可靠性是指软件在所规定的环境条件下、规定的时间内,一直软件在所规定的环境条件下、规定的时间内,一直能按要求和规格说明正确地完成任务的性质。这一能
20、按要求和规格说明正确地完成任务的性质。这一性质的概率性质的概率(定量定量)描述也称为可靠度,可用可靠度函描述也称为可靠度,可用可靠度函数表示。可见这是一种面向时间的定义方法,它没有考数表示。可见这是一种面向时间的定义方法,它没有考虑故障的原因、软件产品故障的特点及软件产品的特殊虑故障的原因、软件产品故障的特点及软件产品的特殊性。性。(2 2)软件可靠性定义为:软件可靠性定义为:假定输入和硬件都没有错假定输入和硬件都没有错误,对于一组输入数据,软件能正常运行不发生错误的误,对于一组输入数据,软件能正常运行不发生错误的概率。这是一种面向数据的定义方法。概率。这是一种面向数据的定义方法。建议推荐第1
21、6页,本讲稿共75页软件可靠性技术软件可靠性技术|软件避错技术软件避错技术|软件容错技术软件容错技术|软件测试技术软件测试技术|软件预计技术软件预计技术第17页,本讲稿共75页软件避错技术软件避错技术u软件设计技术软件设计技术(1 1)自顶向下设计自顶向下设计(TDD(TDDTop-Down DesignTop-Down Design)是把系统功能最抽象是把系统功能最抽象描述作为最高层次,并从它出发,把系统分成分级的分系统,称描述作为最高层次,并从它出发,把系统分成分级的分系统,称为层为层(Levels)(Levels)。(2 2)数据结构设计法数据结构设计法。主要注意力集中在信息结构和信息流
22、。主要注意力集中在信息结构和信息流动上,而不是过于集中在所要完成的功能上。如定义数据动上,而不是过于集中在所要完成的功能上。如定义数据结构、标识数据流、定义能使数据流动的操作等。为了防结构、标识数据流、定义能使数据流动的操作等。为了防止数据冲突,须引进中间文件,来实现输入数据与输出数止数据冲突,须引进中间文件,来实现输入数据与输出数据的结构转换处理。据的结构转换处理。(3 3)高级软件)高级软件(HOS(HOSHigher Order Software)Higher Order Software)方法论。这是一方法论。这是一种详细说明和开发可靠软件系统的方法论,是完全面向系统种详细说明和开发可
23、靠软件系统的方法论,是完全面向系统而不是面向传统软件的。高级软件的基本出发点是把一个给而不是面向传统软件的。高级软件的基本出发点是把一个给定的系统看成一个定的系统看成一个“软件软件”,并可用数学模型,并可用数学模型(即函数即函数)来描述。来描述。19741974年年NASANASA将高级软件首次在宇宙飞船模型软件开发中应用,现将高级软件首次在宇宙飞船模型软件开发中应用,现已用于开发宇宙飞船的飞行软件中。已用于开发宇宙飞船的飞行软件中。第18页,本讲稿共75页u软件实现技术软件实现技术(1 1)自顶向下)自顶向下 (Top-Down Programming(Top-Down Programmin
24、g,TDP)TDP)和由底向上程序设计和由底向上程序设计(Bottom(BottomUp ProgrammingUp Programming,BUP)BUP)方法。方法。(2 2)模块程序设计)模块程序设计(MP(MPModular Programming)Modular Programming)的思想是把整个软的思想是把整个软件系统分解成为一系列独立的代码段来实现软件的。每段就叫一个件系统分解成为一系列独立的代码段来实现软件的。每段就叫一个模块,它常常是一个小型的、面向功能性的子程序或函数,每个模模块,它常常是一个小型的、面向功能性的子程序或函数,每个模块用来表示与某个功能有关的一个或多个任
25、务,模块之间的数据通块用来表示与某个功能有关的一个或多个任务,模块之间的数据通信靠接口来完成。模块之间有一定的独立性,可由不同的程序员编信靠接口来完成。模块之间有一定的独立性,可由不同的程序员编程来加快实现的进程。程来加快实现的进程。(3 3)逐步求精程序设计)逐步求精程序设计 (SWRP(SWRPStep Wise Refinement Step Wise Refinement Programming)Programming)的基本思想是:对于一个复杂的问题,先解决容的基本思想是:对于一个复杂的问题,先解决容易部分易部分(给出较粗的框图给出较粗的框图),接着对剩下的问题再作更细的分解,如,接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 可靠性
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内