《软件可靠性分析.ppt》由会员分享,可在线阅读,更多相关《软件可靠性分析.ppt(23页珍藏版)》请在三一办公上搜索。
1、第十三章 件可靠性工程概论,13.1 引言13.2 软件可靠性的定义13.3 软件可靠性的基本概念13.4 定义必要的可靠性13.5 开发操作剖面13.6 软件测试的类型13.7 软件可靠性增长试验模型,13.1引言,在计算机问世的初期,由于硬件可靠计性不高,根本无睱顾及软件的可靠性,因此软件可靠性的问题并没有引起人们的注意。随着社会信息化的进展,处在其核心地位的计算机系统的可靠性变得越来越重要。微电子科学和技术的进展出现了大量轻、薄、小且节能的硬件产品,使得计算机结构愈来愈灵活和精巧,其应用范围也由此更广泛。由于软件规模与应用领域的日益扩大,软件的故障越来越严重,出现了“软件危机”。,软件在
2、现场中出现的突出问题,(a)透明度差。由于采用“手工作坊”的开发方式,未能加强软件开发过程的管理,使得软件出现故障后只能由原开发者处理,其他人很难介入,与硬件产品相比,透明度很差。(b)自检不能保证软件的质量。尚未建立像硬件的“三检”体制(自检、互检、专检)。(c)尚未建立严格的技术状态管理(即配置管理),未做到软件的规范化设计及管理。目前由于技术状态管理不严及未能进行规范化的设计与管理而引入的软件错误很多。,软件危机的出路,解决软件危机的出路在于软件生产的工业化及软件开发的工程化、规范化、使软件成为工业品而不是工艺品。目前,软件生产已逐渐走上工业化、社会化、商品化的途径。软件知识的传播、软件
3、制作方式和软件技术发展,都需要一系列关于软件性能的评价指标,用以衡量一个软件好坏,软件的可靠性就是其中很重要的一个评价指标。软件寿命周期包括了提出要求/规格说明、设计、实现、检验和维护等五阶段。,软件与硬件可靠性的差别,软件的可靠性与硬件的可靠性有许多相似之处,更有许多差别。这种差异是由于软、硬件故障机理的差异造成的,因而使软件可靠性在术语内涵、指标选择、设计分析手段以及提高软件可靠性的方法与途径等方面具有其自身的特点。,13.2软件可靠性的定义,软件可靠性的定义(Musa,Iannino and Okumoto,1987),是在一段特定的自然单元或时间间隔内,无失效运行的概率。软件的质量包括
4、可靠性、开发时间与开发费用三要素 软件可靠性的要求1.确保产品的可靠性达到用户要求。2.加快产品上市的速度。3.降低产品的成本。4.提高用户满意度,降低用户不满意的风险。5.提高生产率。,图13-1软件可靠性工程过程框图,13.3软件可靠性的基本概念,软件故障及其特性对于软件的不正常,常用的三个术语来描述:(a)缺陷(fault):指的是软件的内在缺陷。(b)错误(error):缺陷在一定环境条件下暴露,导致系统运行中出现可感知的不正常、不正确和不按规范执行的状态。(c)故障(failure):由于对错误未作任何纠正而导致系统的不可预定的要求。,软件故障的特性,缺陷可以导致错误并造成系统的故障
5、,因此,缺陷是一切错误的根源,故存在下面的传递关系:缺陷错误故障软件发生故障,标志着软件一次使用寿命的结束。发生过故障的软件通常仍然是可用的。只有当软件频繁故障,或公认已经“陈旧”时,软件才被废弃,意味着这一版本软件寿命的终结,这一点需要特别加以说明。,软件缺陷一般性质,a 软件缺陷的固有性b.缺陷对环境的敏感性c.软件错误的传染性,软件缺陷的固有性,软件一旦有缺陷,它将潜伏在软件中,直到它被发现和改正。反之,在一定的环境下,软件一旦运行是正确的,它将继续保持这种正确性,除非使用环境发生了变化。此外,它不像硬件,随时间的推移会因使用而不断“耗损”。因此软件缺陷是“牢靠的”、“无耗损”的潜伏于软
6、件之中。,缺陷对环境的敏感性,对于一个软件来说,它的各部分之间有着密切的联系。软件的运行过程实际上是各部分之间交换一个逻辑组合过程,不同的逻辑组合就可得到不同的程序路径,而每一次软件运行或完成某一功能都是选择了某一条程序路径。选什么样的程序路径是由软件自身确定输入环境决定的。对于不同的输入环境,软件的运行路径可能有不同。如果软件在某些程序路径上含有缺陷,那么在执行这些程序路径时就有可能发生错误。这就是软件错误与输入环境的关系。对在一定输入环境下工作出错的软件,当退出该环境后,对于其他环境,此软件又可能正常工作,但当再次进入该环境时,软件又会出错。这缺陷对环境是十分敏感的。,软件错误的传染性,任
7、一软件缺陷,只要未被排除,始终存在该软件中,一旦暴露,处理过程就将产生错误,而这种错误往往是变化的。例如,由于某一处错误处理,使某个处理变量C的值与要求不合,当变量C继续参加运行时会引起处理过程中的其他错误。故这类错误是具有“传染性”的。如果错误不被纠正,也许这种错误就一直存在以至继续“传染”,直到引起软件故障。,13.4 定义必要的可靠性,13.4.1 失效与错误13.4.2 失效强度13.4.3 失效严重程度分类,13.4.1 失效与错误,失效是系统运行行为对用户要求的偏离,是一种面向用户的概念。错误是在系统运行时,引起或可能潜在地引起失效的缺陷,是一种面向开发的概念(Musa,1989a
8、)。例如,当用户单击某个具体菜单项时,本来应该在屏幕上出现特定的对话框,但是却没有出现。这种行为就是一个失效。造成这种失效的错误可能是遗漏代码。请注意,失效意味着系统的运行只有在执行程序过程中才会出现软件失效。程序员发现的潜在失效,可以是设计审查、代码阅读和其他方法所产生的结果。软件错误是代码中的缺陷,是由错误引起的,是一个人或多个人的不正确或遗漏行为造成的。例如,系统工程师在定义需求时可能会犯错误,从而导致代码中的错误,而代码错误又导致在一定条件下执行系统时出现失效。,13.4.2 失效强度,失效强度最初是指单位时间出现的失效次数 在可靠性工程中失效强度定义为失效率 软件的失效强度目标,有三
9、种主要策略:错误预防、错误清除和容错。测试是错误清除的一部分。,表13-2 软件失效强度目标与推荐策略,13.4.3 失效严重程度分类,13.5 开发操作剖面,为了开发操作剖面,对每个被测系统必须包括:确定操作模式、确定操作人员与设备、选择表格或图形、创建操作表、确定操作与故障的出现率及出现概率、三个主要术语是操作、操作剖面和操作模式。操作是一个主要的系统逻辑任务,操作应该与功能需求或产品特征(经常是列举出来的)相关,而不是设计中的子任务。当一个操作将控制权还给系统后,它释放相关的资源以便开始一个新操作。,13.6软件测试的类型,软件可靠性工程测试包括两种类型:可靠性增长测试和确认测试。可靠性
10、增长测试的目标是找到并清除错误。确认测试,如果用户将要进行验收测试。剩余错误数量与软件可靠性有关系,剩余错误不能度量而只能是推测。可靠性结合了与程序执行相关联的所有属性。例如,它包括正确性、安全性的操作方面,以及对用户的友好性。软件失效的根源在于设计错误,而硬件失效的主要根源通常在于物理变质。,13.7 软件可靠性增长试验模型,可靠性增长是通过逐步改正产品设计和制造中的缺陷,不断提高产品可靠性的过程(GJB451的)。可靠性增长试验(RGT)或试验分析改进(TAAF)是一项常用的且非常有效的提高产品可靠性的技术。其目的是:把产品置于类似其工作环境条件下进行试验,使其暴露缺陷,进而分析缺陷、改进
11、设计,并验证改进措施的有效性,以提高产品的固有可靠性(RM简明实用卡(13)。不少软件可靠性模型对具体软件的可靠性估计值与后来实际统计值相差较大。其原因主要有下述三个方面:(a)建模所作假设不恰当;特别是其假设的工程意义不符合工程实 际;(b)收集到的软件可靠性数据本身的可信度不高;(c)数学模型参数的估计量的统计特性不好。,软件可靠性模型,设在软件的随机测试或使用中,在时刻 时出现第 个失效,每次出现失效立即查找及排队缺陷后再投入测试或使用,则软件的整个 将逐次降低。是递降的阶梯函数,如图12-2所示。考虑到在缺陷时有可能引入失效率甚至更大的新缺陷。模型变得很复杂,引入的参数有的很难量化。,图12-2 软件可靠性增长的示意图,