(计算机软件与理论专业论文)基于测试的软件可靠性评估研究.pdf_第1页
(计算机软件与理论专业论文)基于测试的软件可靠性评估研究.pdf_第2页
(计算机软件与理论专业论文)基于测试的软件可靠性评估研究.pdf_第3页
(计算机软件与理论专业论文)基于测试的软件可靠性评估研究.pdf_第4页
(计算机软件与理论专业论文)基于测试的软件可靠性评估研究.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

摘要 本文针对在软件开发过程中,由于对软件故障数据管理不足,引起软件可靠性 下降,进而严重影响软件质量这一问题,突破传统的模式,将软件可靠性评测引进软 件开发的不同时期。在c m m 日益受欢迎的今天,人们对软件过程改进( s p i ) 的重要性 有了更进一步的认识,目的就是为了提高软件开发的效率,在降低软件开发成本的 同时提高软件的质量。但随着系统规模、复杂性和分散度的增加,软件功能如何才能 更好地满足用户需求? 软件质量如何得到保障? 其关键是提高软件的可靠性问题。软 件可靠性已被证实是软件质量中最容易定量的重要特性,目前对可靠性评估主要是应 用在国防部、宇航局等行业的复杂系统中,是根据开发过程中的故障数据,以最后对 产品的可靠性度量为主,得到一些软件可靠性的度量指标值。面对软件应用越来越广 泛的今天,国内的一些大中型软件企业又如何对开发过程中收集的故障数据进行可靠 性分析? 如何使软件可靠性的评估更准确? 如何进一步获得更多的项目管理信息? 对于这一系列问题,现有的可靠性评估工具在开发技术、适用环境和实用程度上,已 经难以达到。本文针对这些问题,并结合用户对提高软件质量的迫切要求,立足于开 发过程管理的实际,基于软件开发过程中的测试故障数据的收集和分析,在对相关的 可靠性理论进行研究的基础上,选取多种经验模型( j m 模型。3 、m u s a 基本模型嘲等) , 实现对不同时期的软件可靠性估计,并给出软件可靠性趋向分析,进一步对软件的开 发过程管理提供指导信息,最终在软件可靠性的评估及提高上有所创新。 本论文的主要研究内容和特点: 1 ) 分析当前软件可靠性工程研究的现状和主要内容。 2 ) 对相关的可靠性概念,可靠性模型进行了理论研究。 3 ) 针对软件可靠性测试产生的故障数据,提出基于测试的可靠性评估研究。 4 ) 全面分析了国内外现有的软件可靠性评测工具及其特点。 5 ) 充分说明了基于测试的可靠性评估的实施过程。 6 ) 将整个论文的理论研究和实际项目开发结合起来。 关键词:软件可靠性工程;软件可靠性;软件可靠性模型;软件可靠性测试;软件 可靠性数据:软件可靠性评估; 西北大学信息科学与技术学院硕士研究生论文 a b s t r a c t t h i st h e s i sa i m sa t l ep r o b l e mt h a tm ed e c l i n e ds o 疗w a r er e l i a b i l i t yh a ss e 订o u s l y a 行b c t e dm es o f h v a r eq u a l i t yd u et ot h ei n s u 伍c i e n tm a i l a g e m c n to ft h es o f h v a r ef a u l td a t a d u r i n gt h es o f h r a r ed e v e l o p m e n t b r e a k i n gm et r a d i t i o n a lm o d e l ,w eb r i n gt h es o f t w a r e r e l i a b i l i t ye s t i m a t i o na n dt e s t i n gt ot l l ed i 髓r e l l tp 舒o d so ft h es o 胁a r ed e v e l o p m e n t t 0 d a y , i nc h i n a ,c m mi sm o r ep o p u l a rt h a nc v e lp e o p l ep a ym o r ea t t e n t i o nt os p lw h e n t h e ya w a r eh o wu s e m li t i s 【1 】w i mt h ei n c r c a s eo fs y s t e m s i z e ,c o m p l c x i t ya 1 1 d d i s p e n s a b i l i t y ,h o wc a nt h es o r w a r e c t i o n ss “s 句t 1 1 eu s c r s n e e d s ? h o wt or e m a i n 也e q u a l i t yo ft h es o 脚a r e ? a 1 lf a c t sp r 0 v e dt h a tt h es o f 【w a r er e l i a b i l i t yi st h ek e yi t e m ,h o w t o a i l a l y s et h er e l i a b i l i t yo f 廿l ef a u l td a t ag a t h e r e dd u r i n gt h ep e r i o do fs o 胁a r e d e v e l o p m e n t ? h o w t om a k et h es o f m a r cr e l i a _ b i l i t ye v a l u a t i o nm o r ea c c u r a t e ? h 0 wt og e t m o r ep r o j e c tm a l l a g e m e n “n f o n n a t i o n ? t h ec x i t e dr e l i a b i l i t ye s t i m a t i o nt 0 0 1 sc a l l tm e e d t h en e e d si ns u c hf i e l d s 踮d e v e l o p m e n tt c c l l n 0 1 0 9 y ,a p p l y i n ge n v i r o m e n t ,a i l dp r a c t i c a l d e g r c e h o wt os o l v ct h es 甜e sa b o v ep m b l e m si si l l u s n 劬。di nt l l i st h e s i s t h em a i ns t i l d yc o n l e m sa 1 1 df e a t u r e si nt h i st h e s i s : ( 1 ) t oa n a l ”et h ep r e s e n ts i t u a t i o na 1 1 dm a 协c o n t e n t so fc u 蝴l tr e s e a r c h 协ga b o u tt l l e s o 脚a r er e l ia _ b i l i t ye n g i l l e e i i n g ( 2 ) t 0r e s e a r c ht h er e l a t e dr e l i a b i l i t yc o n c 印tm l dm o d e l t h c o r e t i c a l l y ( 3 ) t os e tu pa i le s t i m a t i o ns t u d yo f r e i i a b i l i t yb a s e do nm et e s t i n ga c c o r d i n gt o 蹦l u r c d a t ap m d u c e d 丘d mt l l ct e s t i n go f m es o 行a r er c l i a b i l i t y ( 4 ) t oa n a l y s e t l l ef e a t u r e so f a nt h ee x i t e ds o f h v a r er e l i a m l i t ye s t i m a t i o nt o o l s 。 ( 5 ) t o 如n i l l u s 乜讹也ep r o c e s so f m es o f h v a r er e l i 曲i l i 移b a s e d o n t h e t e s t i n g ( 6 ) t oc o m b i n et l l et l l e o r yr e s e a r c hw i t hm ep r a c t i c a lp m j e c td e v e l o p m e n t k e yw o r d s :s o 脚耵er e l i a b i l i t ye n g i n e 甜n g ,s o f t 、a r er e l i a b i l i t y ,s o 鲰a r er e l i a b i l i t y m o d e l ,s o f t w a r er e l i a b i l i t yt e s t i n 岛s o n w a r er e l i a b i l 时d a t a ,s o 脚a r e r e l i a b i l i t ye s t i m a t i o n 西北大学信息科学与技术学院硕士研究生论文 i i 西北大学学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻读 学位期间论文工作的知识产权单位属于西北大学。学校有权保留并向国 家有关部门或机构送交论文的复印件和电子版。本人允许论文被查阅和 借阅。学校可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。同 时,本人保证,毕业后结合学位论文研究课题再撰写的文章一律注明作 者单位为西北大学。 保密论文待解密后适用本声明。 学位论文作者签名:劫毒娟指导教师签名:扣走f 副 脚i 月矽日年月 日 西北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外, 本论文不包含其他人已经发表或撰写过的研究成果,也不包含为获得西 北大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的 同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢 意。 学位论文作者签名:物孝娟 瓣5 月加日 引言 软件可靠性作为软件质量的重要特性,越来越受到关注。如何开发出可靠的软件 从而满足用户对软件的需求? 已经成为众多软件企业追求的目标。面对现代社会信息 技术的迅速发展,软件产品的应用也越来越广泛。根据统计,在出现的关于系统的工 程事故报道中,大多是由软件出错带来【4 。因而,开发用于可靠性工程的技术,提高 软件的可靠性已成为许多大公司的迫切需求。目前国内外众多的可靠性评估工具,由 于其运行环境的改变,大大降低了其实用性,从而带来了对软件可靠性评测结果的有 效性的降低。传统的对软件可靠性的评估模式,基本上是在以最后对软件可靠性的度 量为主,在对所评测软件的可靠性提高上意义不是很明显。针对国内一些大中型软件 企业来说,如何对开发出的软件进行更准确的可靠性评估,进一步提高软件的可靠性, 更好地满足用户需求? 正是本文研究的核心问题。 鉴于以上原因,本文提出在软件开发过程中进行测试故障数据的收集,并结合对 软件运行剖面的开发,及时进行可靠性评测和可靠性趋势分析,以最终提高软件的可 靠性,同时为软件开发过程管理提供充分的指导信息。文章具体内容安排如下: 第一章:软件可靠性及其研究现状 通过对软件可靠性的提出,目前软件可靠性工程的研究现状,明确本文 研究的问题领域。 第二章:软件可靠性 该部分介绍了软件可靠性的定义;软件失效过程的表示;影响软件可靠 性的主要因素。 第三章:软件可靠性模型及应用 主要介绍软件可靠性建模;典型模型描述及应用;选择评价模型的标准 第四章:软件可靠性的测试 主要对可靠性测试方法;系统运行剖面的构造;软件可靠性测试过程进 行研究。 第五章:可靠性数据的收集及分析 介绍可靠性数据的收集过程,并说明一定的数据分析技术。 西北大学信息科学与技术学院硕士研究生论文 第六章:软件可靠性评估及系统实现 该部分在上述理论研究基础上,阐述了基于测试的软件可靠性评估过程; 并开发了基于测试的软件可靠性评估系统( b t s r s e ) 工具。 第七章:论文研究体会与未来工作展望 本文通过对软件可靠性工作的研究,对软件可靠性有了一定的认识和提 高。对于自己的研究,虽取得一点成果,但这也仅仅是对这一领域研究 的开始,对于可靠性在我国企业中的进一步应用,还需要继续研究,这 将是我下一步研究的重点。 西北大学信息科学与技术学院硕士研究生论文 2 第一章软件可靠性及其研究现状 1 1 软件可靠性提出 信息技术的迅速发展,软件产品应用到各个领域,各行各业对计算机系统的依存 性越来越大,这就意味着计算机系统失效给社会带来的影响也会越来越大。与此同时, 计算机系统规模的扩大化,结构的复杂化,应用的多样化,使得它的生产过程中潜在 的故障因素的可能性也越来越大。 现代社会商业的竞争和软件产业界的激烈竞争,使得无论是软件产品的开发者还 是使用者,清醒地意识到软件产品质量的重要性。因此,充分而准确地理解用户的需 求,开发一种高质量、快速交付和低成本的软件产品是现代软件企业的目标。而当软 件产品的三个重要特征:质量、费用和进度产生矛盾时,企业往往牺牲质量,这就造 成软件产品存在的重要质量问题。 按照i s o i e c 9 1 2 6 9 l ,软件质量可定义为六大特性,软件可靠性是其中最重要的 固有特性。可靠性与软件中的缺陷( d e f e c t s ) 直接相关,j o n e s ( i 9 8 6 ) 指出:缺陷 的多少对编程费用影响最大0 3 ,表示出了面向用户的质量观点。因此,我们有必要对 软件的可靠性进行深入研究。 对一个企业的软件产品,如何利用测试过程中的故障数据,对软件进行合理的可 靠性评估以保证软件的质量,正是本文研究的主要问题。目前软件可靠性的研究也越 来越引起关注,已从纯粹的理论研究向应用领域发展,形成了一个独立的研究学科一 一软件可靠性工程。 1 2 软件可靠性学科的发展回顾 软件可靠性是软件工程学与可靠性工程学结合产生的前沿学科。它的兴起和发展 源于以下三个方面的因素:需求的拉动力。持续很长时间的软件危机与上世纪九十 年代软件故障引发的一些事故损害了客户满意度。技术的推动力。信息技术( 硬件 技术、软件技术) 的迅猛发展有力推动软件可靠性的发展。可靠性工程的理论和方 法对软件可靠性的支持。 我们可以将软件可靠性的发展分为以下三个阶段”3 : 西北大学信息科学与技术学院硕士研究生论文3 第一阶段:( 1 9 5 0 一1 9 6 7 年) ,软件可靠性学科萌芽时期 1 9 5 0 一1 9 5 8 年,在软件发展过程的原始阶段,完全没有软件可靠性的概念。1 9 5 8 年,美国国防部电子设备可靠性顾问团( a g 砌弧) 的报告被认为是可靠性工程的奠 基性文件,但也并没有提及软件和软件可靠性的问题。 1 9 5 9 1 9 6 7 年,计算机技术发展的同时,软件可靠性问题并没有被重视,软件 危机也由此发生。比如,毋m 公司推出的3 6 0 系列机的操作系统o s 3 6 0 的故障连续 不断地发生,最终使该系列机陷入困境,大大损害了用户的利益。1 9 6 5 年国际电工 委员会( m e ) 可靠性专业委员会成立,标志着可靠性工程成为了一门国际化的技术。 第二阶段:( 1 9 6 8 1 9 8 7 ) ,软件可靠性学科的形成时期 1 9 6 8 1 9 7 8 年,以集成电路为主体的小型微机逐渐得到了广泛的应用,在硬件 技术迅速发展的推动下,以及在软件危机带来的用户对软件可靠性需求的紧迫性的拉 动下,软件可靠性学科和软件工程学科得以建立和发展。其间,软件工程学的理论和 技术为软件可靠性的设计、测试和管理提供了指南和工具。但并没有解决对软件可靠 性的定量评价问题。这一时期出现的j m 模型、s h o o m a n 模型1 7 j 、n e l s e n 模 型【8 1 、m i l l s b a s 模型【9 1 都是在这个阶段推出的。此外软件失效数据的积累和分 析也有了初步发展。 1 9 7 8 一1 9 8 7 年,大规模集成电路的出现,导致计算机向大型机和微型机两个方 向发展,对软件技术的发展产生了深刻的影响。随着社会对软件的日益依赖,软件带 来的风险也越来越大,软件可靠性的重要作用也进一步得到体现。这一时期的特点是: 各种验证和试用的软件可靠性模型相继推出;软件可靠性管理技术的开发已列入日 程;软件可靠性标准化工作开始起步。国际电工委员会( m e ) 在1 9 8 5 年成立了软件 可靠性工作组,并制定了软件可靠性和维修性管理规范( 草案) 。8 0 年代中期,软件 安全性问题受到了特别的重视,硬件可靠性和安全性分析中所采用的故障树分析法 ( f t a ) 、故障模式效应分析法( f m e a ) 和潜藏回路分析法( s c a ) 1 0 】,已在软件 安全性分析中使用,并取得了令人鼓舞的成果。西方各国也相继确立了专门研究工作 和课题:如英国的a e y ( 软件可靠性和度量标准) 计划、欧洲的e s p r r r ( 欧洲信 息技术研究与发展战略) 计划、s p m m s ( 软件生产和维护管理保障) 课题、e l l r e k a ( 尤里卡) 计划等。 第三阶段:( 1 9 8 8 年至今) 软件可靠性向工程应用过渡的时期 西北大学信息科学与技术学院硕士研究生论文 4 超大规模集成电路的出现,将人类带向信息社会。软件逐渐成为全球经济的中枢。 但由软件引发的故障持续不断,在某些类型的设备中软件故障远远超过了硬件,成为 系统的主要故障来源。例如:1 9 9 6 年欧洲航天局首次发射阿丽亚纳5 号火箭失败, 直接损失5 亿美元,使耗矽;达8 0 亿美元的开发计划推迟了近三年,事故的原因是火 箭系统的软件故障,还有9 0 年代后半期的“千年虫问题”等等。总之,引起灾难性 后果的软件实例很多。 因此我们可以发现,软件可靠性的重要性从它的反方向更加清楚地呈现出来,客 户对软件可靠性的强烈需求有力地拉动了软件可靠性工程的发展。1 9 8 8 年,学术讲 台上出现了软件可靠性工程一词,并为学术界广泛认同,标志着软件可靠性的从纯粹 的理论研究向应用转化。到目前为止,软件可靠性学科已经扩展到软件可靠性、软件 维护性、软件安全性和软件保障性。 1 3 软件可靠性工程 1 3 1 软件可靠性工程的定义 软件可靠性工程不仅仅是用数理统计的方法来详细说明设计、预计、估计和评价 基于软件的系统可靠性,还包括软件可靠性的需求、分析、设计、实施、售后及维护、 工程管理活动。因此,我们可以定义软件可靠性工程为:获得软件可靠性而进行的一 系列开发、维护软件产品的活动i l l l 。 1 3 2 软件可靠性工程研究的主要内容 软件可靠性工程一词最早出现在1 9 8 8 年,a t t 贝尔实验室明确说明,它不仅包 括了软件可靠性模型及软件的可靠性度量,还包括应用模型和度量实现软件项目可靠 性管理1 1 1 j 。1 9 9 2 年a t t 贝尔实验室对软件可靠性工程的内涵做出定义,认为重要软 件项目的开发应该制定一个软件可靠性大纲,个好的软件可靠性大纲包含以下四个 系列2 0 个工作项目: 可行性和需求( a 、确定功能剖面;b 、失效定义和分类;c 、识别需方的可靠 性需求;d 、进行权衡分析;e 、设置可靠性目标) : 设计和实施( a 、在部件中分配可靠性:b 、适应可靠性目标的工程实施:c 、 西北大学信息科学与技术学院硕士研究生论文e 基于功能剖面的重点资料:d 、对故障的引入和传播的管理;e 、外供软件的可靠性测 量) : 系统测试和现场试验( a 、确定运行剖面;b 、进行可靠性增长测试:c 、跟踪 测试进展;d 、项目必须的附加测试;e 、认可可靠性目标) ; 售后及维护( a 、建立必须的售后服务机构:b 、监视现场可靠性是否满足可 靠性目标;c 、跟踪需求方对可靠性的满意程度:d 、拟定软件的改进和提高速度;e 、 产品和开发过程改进指南) 。 j d m u s a 认为软件可靠性工程是“一门以减少基于软件的系统在运行中不满足 用户要求的可能性为目标的应用科学”,这同时就说明了软件可靠性工程研究的内容 和相关技术包括: 夺 软件可靠性分析:确定指标、设计开发过程、进行预计、分析失效严重性等。 夺 软件可靠性测量:用失效数据和软件可靠性模型估计( 或测量) 软件运行的 可靠性。 夺 软件可靠性管理:利用可靠性的测量和其他信息来控制和改进开发过程,并 对采购或重用的软件进行管理。 开发过程的改进:确定影响软件可靠性的因素,改进费用效益关系。 1 3 3 软件可靠性工程需要进一步继续研究的问题 1 9 9 2 年以来,我国在软件可靠性理论研究方面提高的很快,已接近国外的先进 水平。但在工程应用方面,还存在一定的差距,软件可靠性工程还存在以下问题需要 我们继续研究和解决 1 2 】: 1 ) 结合实际项目,运用标准化方法,逐步形成完整的实施软件可靠性工程的方法。 在软件开发周期中,运用p d c a 循环【1 3 】持续不断地改进软件可靠性的分析、设计和 实现、测量评估、工程管理等方法。 2 ) 对软件系统模块失效数据的收集,由有条件的项目开始,研究失效数据的收集 处理系统及其机制。可以将硬件的失效数据规范的方法应用到软件的失效数据的研究 中,为软件可靠性的快速预计、设计提供理论依据和实际分析手段。 3 ) 继续开展理论方法的研究 令 数学模型的有效性和适用范围: 西北大学信息科学与技术学院硕士研究生论文 夺 软件可靠性测试和验收方法的研究; 夺 软件可靠性快速预计技术的研究; 夺 软件安全性设计和分析方法的研究; 夺 软件复杂性度量和可靠性的关系研究; 夺大规模分布式软件系统的可靠性分析方法; 夺 硬软件复合系统的可靠性综合分析方法; 本文的研究主要涉及到软件可靠性工程的逐步实施、测试过程中可靠性评估数据 的收集、以及上述理论研究的前两个问题。针对现在软件应用的广泛性,用户对软件 可靠性越来越关注这一现象,对于些大中型软件开发企业来说,有必要在可靠性这 一方面加强管理,在软件的开发过程中逐步实施软件可靠性工程,形成自己的软件可 靠性管理机制。进而,对自己开发的软件产品,能从用户角度,明确地给予合理有效 的可靠性评估,以满足用户对软件的需求。为了能更好地说明这一问题,本文将主要 从以下几个方面来阐述:软件可靠性,软件可靠性模型及应用,软件可靠性测试,软 件可靠性评估及系统实现。 西北大学信息科学与技术学院硕士研究生论文 7 第二章软件可靠性 2 1 软件可靠性的定义 为了对软件可靠性评估进行研究,首先必须明确的问题就是软件可靠性定义及与 其相关的一些概念。软件可靠性的定义伴随软件可靠性工程的兴起与发展,有过许多 不同的定义。本文采用目前被广泛接受的对可靠性定义如下: 软件系统在给定的环境( 条件) 下,在给定的时间内,软件不引起失效的概率, 称为该软件系统的可靠度。而这种性质称为软件系统的可靠性,亦简称为软件可靠 性。该概率是系统功能及软件中存在的差错的函数。 如果以e 表示特定环境,t 表示给定的时间,假设系统从时间。开始运行,直到t 时发生故障,系统失效,则: r ( e ,t ) = p r t t l e ) 表示了软件系统在特定环境e 下,e 常工作到时刻t 时的概率。其中t 是指:从 时刻0 开始,软件系统运行到发生故障时的时间。 可以看出,r ( e ,t ) 具有下列的性质: r ( e ,0 ) = 1 i 即在0 时刻,系统绝对不会发生故障。 r ( e ,+ 一) = 0 ;即在无限远的时刻,系统必定失败。 在时间区间( 0 ,+ 。) 上,函数r ( e ,t ) 是单调下降的。 按照概率论的观点,“软件系统正常工作”是一事件,则它的对立事件“软件系统 运行出错”就定义了一个失效( 故障) 概率函数:f ( e ,i ) ,显然有: r ( e ,t ) + f ( e ,t ) = 1 , 通常,特定环境e 要从描述测量的上下文去理解,无需确切给出。因此,可以把 可靠性函数r ( e ,t ) 简写为r ( t ) ,而把失效概率函数f ( e ,t ) 简写为f ( t ) 。因 此,有: r ( t ) + f ( t ) = l , r ( t ) = l f ( t ) = p r t 1 ) 。 其中t 的意义同上。 在上述软件可靠性定义中,需要说明以下几个概念: 西北大学信息科学与技术学院硕士研究生论文 ( 1 )给定环境 环境条件指软件的运行环境。它涉及软件系统运行时所需的各种支持要素,如 支持硬件、操作系统、其它支持软件、输入数据格式和输入范围以及操作规程等。不 同的环境条件下,软件的可靠性是不同的。具体地说,规定的环境条件主要是描述软 件系统运行时计算机的配置情况以及对输入数据的要求,并假定其它一切因素都是理 想的。通常,运行与输入状态有关,具有相同输入状态的运行集合称为运行类型。一 种运行类型与用户功能的实施有关。环境的变化通常用不同用户功能所要求的相对概 率的变化来描述。 ( 2 )规定时间 软件可靠性只是体现在其运行阶段,所以将“运行时间”作为“规定的时间”的度 量。“运行时间”包括软件系统运行后工作与挂起( 开启但空闲) 的累计时间。由于软 件运行环境与程序路径选取的随机性,软件的失效为随机事件,所以软件的运行时间 属于随机变量。 ( 3 ) 软件功能 软件可靠性还与规定的任务和功能有关。由于要完成的任务不同,软件的运行剖 面会有所区别,则调用的子模块就不同( 即程序路径选择不同) ,其可靠性也就可能 不同。所以要准确度量软件系统的可靠性必须首先明确它的任务和功能。 上述的可靠性定义,从本质上反映了软件可靠性定义的概率性质,但在实际确定 软件可靠度时还经常采用一种基于运行的软件可靠度的描述: 设n 表示在一种特定应用中程序实际运行的次数,c n 表示在n 次运行中正确运行 的次数,则: ! 鲤导就表示一次运行正确的概率。同时定义:r o ) = l1 i i i l 鱼l ,其中,r 是在 一 r1 , 4 呻。以 i4 - * 阼i 时间区间( o ,t ) 内,程序运行的总次数。 相应地,我们用z ( t ) 表示风险率函数( h a z a r dr a t e 缸l c t i o n ) :指程序运行到时 刻t 时,单位时间内程序发生故障的概率,是个直接源于硬件可靠性的术语。风险 率函数z ( t ) 与可靠度函数存在如下关系: 即) 州x p i f 出) 出l 西北大学信息科学与技术学院硕士研究生论文 2 2 软件中的差错、故障、失效: 从上述软件可靠性定义中可以看出,软件可靠性的关键是软件如何能无故障运 行,使其功能更好地满足用户需求;软件可靠性与软件中的缺陷( d e f e c t s ) 直接相关。 所以,这一节先介绍与软件可靠性分析有关的几个和缺陷有关的概念:差错( e r i d r ) 、 故障( f 孔1 t ) 和失效( f a i l u r e ) 。 1 4 】 软件的差错( e n d r ) 是指人们在设计和构造软件时所产生的缺陷。产生这些缺陷的 原因,或者是因为需求转换错误,或者是设计错误,或者是因为编码和逻辑错误。这 些差错终端用户也许能够、也许不能够观察或检测得到。在实际项目中,差错的总数 是不可能知道的,只能估计。差错中包含被检测出的差错,被检测出的差错中包含已 纠正的差错。 如果对于某些输入,软件运行的输出结果不正确,我们说该软件出了故障。所以, 故障( f h l t ) 是软件差错的表现。也就是说,软件故障是软件代码中能引起一个或一个 以上功能单元不能执行所要求功能的差错,是软件代码在运行时的反应。因而,软件 故障是用户以某种形式检测出的,或在运行中表现出的一个差错。总之,个故障总 是由一个差错引起的;一个差错则不一定引起一个故障。 失效( f a i t u r e ) 是系统或系统部件不能执行所要求的功能而导致系统功能的失败, 它是软件故障在运行时所产生的后果。一次软件失效实质上就是引起系统失效的一个 软件故障。某些软件故障可使软件失效,有些软件故障则不一定;但所有的软件失效 都是由于软件故障引起的。判断软件是否失效的判据有:系统死机、系统无法启动、 不能输入输出显示记录、计算数据有误、决策不合理以及其它削弱或使软件功能丧失 的事件或状态。 从上面的解释我们可以这样认为:相对于需求实现的功能来说,软件中存在的差 错是导致系统出现故障、乃至失效的原因。在软件可靠性的研究中,通常采用一定的 方式表示软件的失效过程,以便可以对可靠性进行度量评估。 2 3 软件失效过程及表示 我们通常认为:软件的正确工作过程是软件在运行的过程中,将软件输入域的某 一输入值映射到输出域所期望的输出值。若映射出的值不正确,则产生故障,乃至失 西北大学信息科学与技术学院硕士研究生论文 1 0 效。对于无容错设计的软件而言,局部失效则整个软件失效。对于采取容错设计的软 件,局部故障或失效并不一定导致整个软件失效1 6 】。 因此,可以这样说,系统的输 入及其期望的输出( 与系统的功能要求有关) 决定着软件中存在的差错是否被激发成 故障,乃至失效。 而软件在实际使用的运行环境中,输入数据在输入域内是随机分布的,所产生的 输出数据,在输出域内也是随机分布的。因而,在软件运行过程中,由输入数据激发 了软件差错而产生的故障同样也是随机分布的。所以说,软件运行时发生故障的过程 是一个随机过程。为了反映软件失效的这种随机过程,一旦时间基准确定后,软件失 效过程一般用以下方式表示: 夺累积失效函数f ( t ) ( t h ec u m u l a t i v ef a i l u r c ) :表示与每一时间点相关的平 均累积失效数。 夺 失效密度函数f ( t ) ( t h ef a i l u r ei n t e n s i t yf i m c t i o n ) :表示累积失效函数的变 化率( 也称失效率函数) 。 平均失效时间函数m t t f ( m e a nt i m et of a i l u r e ) :对于长时间的观察来 说,它表示若干相邻失效时间间隔的平均值;对某一次观察来说,它表示观察到下一 次失效的期望时间。 在本文的研究中,我们要用到以下几个和软件可靠性相关联的重要术语以及它们 之间的关系; 失效( 故障) 密度函数f ( t ) 是f ( t ) 是相对于时间t 的一阶导数。 失效率( 故障率,风险率或故障强度) 函数( h a z a r dr a f e 缸1 c t i o n ) z ( t ) 是条件 故障密度,在给定o 到t 区间内没有发生故障的条件下,它可以由下式给出:【m l 2f f1 :l 生 月( f ) 与可靠性函数r ( t ) 的关系为:r ( r ) = e x p f rz ( x ) 出i 平均失效时间函数( m t t f ) 与可靠性的关系为:m t f = fr ( 工) 出 这里的积分时间是系统的运行时间。 如果令随机过程m ( t ) 表示到时刻t 发生的随机失效数,则定义均值函数u ( t ) 为;u ( t ) = e m ( t ) 。它表示时刻t 时故障数的期望值,函数u ( t ) 是非递减 的,并假设在时刻t 连续可微。如果l i m ( f ) o 。,则为有限失效模型,否则为无限失 西北大学信息科学与技术学院硕士研究生论文 效模型。 那么m ( t ) 过程的失效强度函数是失效数期望值相对于时间的瞬间变化率,定 义为:【1 6 】 旯( f ) = 掣口r 2 4 影响软件可靠性的因素 可靠性定量值一般用时间来定义,所采用的时间不同对可靠性的评估会带来一定 的影响。通常采用的时间有三种:第一种为“程序执行时间”,即处理机实际执行程 序指令的时间。第二种为“日历时间”,即日常生活中所用的时间。经验表明时间的 最佳量度是执行时间【1 7 l ,目前普遍认为基于执行时闻的模型较为优越。但时间的定量 还需返回到对工程师和管理人员有意义的日历时间。第三种为“程序的时钟时间”, 即程序在计算机上运行时,从开始到结束所经历的时间。其中包括等待时间和其他程 序执行的时间,但计算机停机不算在内。若计算机运行程序的这段时间在总时间内所 含的比例是固定的话,则时钟时间正比与执行时间。例如:一个字处理系统,一周内 运行5 0 h ,其中2 5 h 为字处理系统程序的执行时间。 因此,在考虑采用哪种“时间”时,需要权衡诸如量度的适当性、数据的易获性、 量度对错误的敏感性及与一个特定模型的关系等。例如:工作人员能够很好地通过物 理机制获取时间时,就会采用使用时间或日历时间,而不是软件的结构覆盖域1 1 引。 本文中,对模型估计和使模型适用于具体项目的技术描述,将按照具体执行时间 t 来阐述,但当描述具体执行时间模型或采用这些模型的程序输出时,将按照执行时 间和日历时问进行讨论。 同时,软件可靠性表明了一个程序按照用户的需求和设计目标,执行其功能的正 确程度。这就要求一个可靠的程序应该是正确的、完整的、一致的和健壮的。软件可 靠性的决定因素是与输入数据有关的软件差错,正是因为软件中的差错引起了软件故 障,使软件不能满足需求。所以,软件中可能产生差错的地方都将会影响到软件的可 靠性。具体如下: 1 需求分析定义错误。如用户提出的需求不完整,用户需求的变更未及时 消化,软件开发者和用户对需求的理解不同等等。 2 设计错误。如处理的结构和算法错误,缺乏对特殊情况和错误处理的考 西北大学信息科学与技术学院硕士研究生论文 l2 虑等。 3 编码错误。如语法错误,变量初始化错误等。 4 测试错误。如数据准备错误,测试用例错误等。 5 文档错误。如文档不齐全,文档相关内容不一致,文档版本不一致,缺 乏完整性等。 在软件各个阶段产生的错误中,设计阶段产生的错误占绝大多数。另外从上到下, 错误的影响是发散的,错误隐藏的越久,查找和修改就越困难,花费的代价就越大,所以 要尽量把错误消除在开发前期阶段。这样在软件的可靠性测试中才能节约时间,可靠 性能够很快提高,从而达到可靠性目标。 此外,软件可靠性还依赖于在开发过程中所使用的软件开发方法。运用好的软件 开发方法,软件中将含有较少的错误,从而软件就更可靠。如果有一个完全的测试策 略的集合被用来验证一个系统,那么软件系统也会更可靠。总之,软件可靠性是许多 因素的函数。 西北大学信息科学与技术学院硕士研究生论文 第三章软件可靠性模型与应用 软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证 有着重要的意义。一般说来,一个好的软件可靠性模型可以增加关于开发项目的通讯, 并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。因 此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出 必要的预测,花费极少的项目资源产生好的效益,对于企业的发展具有一定的意义。 那么,什么是软件可靠性模型? 如何结合故障数据,给软件建立数学模型,并 利用模型对可靠性进行评估? 将是本文下面要讨论的问题。 3 1 软件可靠性模型 软件可靠性模型其实质是随机过程的一种表示,通过这一表示,可以将软件可 靠性或与软件可靠性直接有关的量,如:平均无故障时间或故障率等,可以表示为时 间以及软件产品的特性,或者开发过程的函数。软件可靠性模型就描述了软件可靠性 对上述各变量的种依赖关系。其描述形式通常根据由已知的故障数据出发所作的统 计推断过程而定。 为了给软件可靠性评估建立数学模型,应首先考虑到影响评估的基本因素:错 误引入软件的方式、排错的实际过程以及程序运行的环境。错误的引入主要依赖于已 开发的程序代码的特性以及开发过程的特性。代码特性最明显的是程序代码的长度。 开发过程特性包括:软件工程技术,使用的工具,以及开发者个人的业务经历。排错 依赖于用于排错的时间、排错时的运行环境、用于排错的输入数据、以及修复行为的 质量。运行环境依赖于运行剖面,运行剖面( o p e r a t i o np r o f i l e ) 主要指各种类型的运 行出现的概率,主要由各自的输入状态描述其各种运行的性质1 0 1 。上述各基本要素大 多具有随机性且均与时间有关,所以软件可靠性模型大多处理成随机过程形式。 软件可靠性模型用随机过程描述软件故障,随机过程以故障时间或故障数为特 征。我们可以用随机变量t i 和l7 分别表示第i 次故障的发生时间和第i 1 次故障 与第i 次故障的间隔时间。t i 和t i7 的实际值分别用t 和b 表示。时间可定义为前 面所述的三种时间即:日历时间,即实际的年、月、曰时间:执行时间,即积累的处 理器时间( c p u 时间) ;时钟时间有时也近似地用作执行时间。 西北大学信息科学与技术学院硕士研究生论文 1 4 3 1 1 软件可靠性模型的发展 最早的模型出现在1 9 6 5 年,由h k w e i s s 提出的一系列的公式。由于太复 杂,这些公式对于以后软件可靠性模型的建立几乎没有什么影响。1 9 6 7 年,h u d s o n 观察到软件的开发过程是一个生灭过程,一个典型的马尔可夫过程。其中错误的产生 是诞生期,错误的改正是死亡期,在任一时刻存在于软件的错误个数可用来定义过程 的状态,状态的转移概率则与生灭函数有关。他假设:错误的改正率随时间的增加而 增加,得出了故障间隔的w e i b u u 分布。 对于软件可靠性模型发展首次起到重要作用的两个模型,是1 9 7 1 年 m ls h o o m 粗发表的s h 0 0 m a l l 模型, z j e l i n s l 【i 和p b m o r a n d a 发表的j m 模型。他们都假设: 软件的初始错误数为( n 0 ) 。 故障率与软件中剩余错误个数成正比。 一个错误一旦发现,立即排除且排错不引入新的错误。 这些假设在随后的许多可靠性模型中以各种方式被采用。 1 9 7 2 年,b l i t t l e w o o d 和j l v c r r a l l 发表了第一个贝叶斯模型19 1 ,他假设故 障间隔时间服从含参数九i 的指数分布, 。构成一个独立的随机变量序列 7 且服从 先验的r 一分布。同年,g j s c h i c k 与r w w o l v e r t o n 提出的模型与其他模型的 主要区别在于:他们假定连续的故障之间的排错时间服从r a y l e i g h 分布1 9 7 3 年,w l w a g o n e r 发表的模型与此类似,但假设了风险函数服从w e i b u l l 分布。它的 特例就是s c h i c k w 0 1 v e r t o n 模型。 1 9 7 5 年j d m u s a 发表了执行时间模型1 ,引入了一系列的显式参数: 测试压缩因子,以表示一种思想:使用测试条件和数据,比使用用户的输入 数据有着更高引起故障发生的概率。 关于软件系统的初始 l t t f 。 与日历时间相对的执行时间( 即c p u 时间) 。 同年,p b m o r a n d a 发表了几何泊松模型。他认为,故障率随时间的增加以几 何级数下降,并且下降的过程出现在每次故障的纠正期间。因此,他假设在第i 个时 间段的错误数满足参数为九k 。1 的泊松分布。 同年,k t r i v i d i 和m l s h o o m a l l 还发表了第一个马尔可夫方程式模型。将 西北大学信息科学与技求学院硕士研究生论文15 系统区分为“u p ”状态与“d o w n ”状态:工作正常与需要修复。所有的u p 状态与 d o w n 状态的转换概率都被假定为相同。模型的输出结果是一个概率集合,其中每个 值都是: p ( 在 o ,t 】内找出k 个错误) 。 同一年,n f s c l l l l e i d e w i n d 发表了第一个非齐次泊松过程( n h p p ) 模型拉u 。 他建议对不同的可靠性函数,如:指数函数、正态函数、r 一函数、w e i b u l l 函数等 进行研究,并针对开发的具体软件项目,选择适合于实际问题要求的可靠性函数,以 估测软件系统的可靠性。 1 9 7 6 年,m l s h o o m a n 和s n a t a r a j a l l 首次发表了考虑排错时引入新的错误 的模型。 1 9 7 9 年,a g o e l 和k o k u m o t o 提出的关于连续时间的n p 删模型,对软件 界产生了持续的影响。b l i m e w o o d 采用贝叶斯方法以研究软件可靠性建模。他认 为,在具有常数风险率和程序操作期间。故障的发生都是随机的,但却将风险率当作 一个已经发生的故障的随机过程。因此,在b l i 砌e w o o d 模型中,风险率是一个有 条件的概念。1 9 8 0 年,他发表了微分模型,在模型中他假设对于程序的风险率取不 同的基值,因此不同的错误将以不同的频率出现。 1 9 8 3 年,y 锄a d a ,0 岫a 和o s a l ( i 发表的一个n p h h 模型,给出呈s 形的可靠 性增长曲线的均值函数。k o k m o t o 和j d m u s a 提出的对数泊松模型口2 1 ,具有 一个初始错误率的九,以及对应于 的一个递减率。模型的日历时间部分与执行时间 模型的日历时间部分相同。t b e n d e l l 将试探性数据分析法( e d a ) 【2 3 】引入软件可靠 性评估,且使用时间序列分析法以及成比例的风险函数建立软件可靠性模型。 1 9 8 9 年,y t o h m a ,k t o k u n a g a ,s h g a s e 和y m u r a t a 提出一个新的、 以超几何分布1 1 】为基础的模型,用于估计软件中的剩余错误个数。 t s u f e n gh o ,w a l l 一c h u nc h a i l 和c h y a n g o e ic h

温馨提示

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

评论

0/150

提交评论