您好、欢迎来到现金彩票网!
当前位置:PC蛋蛋 > 运行剖面 >

基于不完全数据的软件可靠性预测模型分析pdf

发布时间:2019-06-27 06:52 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  重庆大学硕士学位论文 英文摘要 widespread applied in the process of searching the better parameter.But it still has some disadvantages that the lack of cross and mutation factor which may lead to convergence to a local minimum value. For conquer the weakness, our paper proposes a novel improved algorithm PSOGA based PSO ,to search the optimal parameters. At last, the experimental results further verify that the PSOGA have stronger searching ability than original PSO algorithm. Keywords: Incomplete data, Software reliability prediction, Max-margin model, PSO, GA III 重庆大学硕士学位论文 目 录 目 录 中文摘要I 英文摘要II 目 录 IV 1 绪 论 1 1.1 选题的背景 1 1.2 选题的意义2 1.3 软件可靠性模型的研究现状2 1.3.1 国内外研究现状2 1.4 论文的研究目标及内容 3 1.4.1 论文的研究目标 3 1.4.2 论文的研究内容 3 1.5 本文的主要工作及结构安排4 2 软件可靠性概述 5 2.1 软件可靠性的定义 5 2.2 软件可靠性的特点 6 2.3 软件可靠性影响因素 6 2.4 软件可靠性度量指标7 2.4.1 静态度量指标 8 2.4.2 动态度量指标 10 2.5 软件可靠性的数学表示 10 2.6 本章小结 11 3 软件可靠性建模方法和常见可靠性模型 13 3.1 软件可靠性建模分类 13 3.1.1 基于统计分析方法的模型 14 3.1.2 基于计算智能方法的模型 15 3.1.3 两类模型的比较 16 3.2 计算智能与软件可靠性 17 3.3 基于智能方法之统计学习方法——支持向量机 18 3.3.1 统计学习的基本问题 18 3.3.2 经验风险最小 18 3.3.3 结构风险最小 19 3.3.4 支持向量机 19 IV 重庆大学硕士学位论文 目 录 3.4 本章小结22 4 基于不完全数据的软件可靠性研究 25 4.1 不完全数据用于可靠性预测的基本问题25 4.2 常用的处理不完全数据问题的方法25 4.2.1 删除法25 4.2.2 填充法25 4.2.3 不处理方法27 4.3 基于最大间隔研究28 4.3.1 基于最大间隔的预测问题表示29 4.3.2 基于最大间隔原理的构造最优分类面 30 4.3.3 求解算法 32 4.4 本节实验 34 4.4.1 参数设置和度量指标函数 35 4.4.2 对比实验 36 4.5 本章小结 38 5 最大间隔预测模型参数优化方法 39 5.1 本章概述 39 5.2 粒子群优化算法 39 5.2.1 粒子群算法的描述 39 5.2.2 粒子群优化算法的工作步骤 39 5.3 遗传算法40 5.3.1 遗传算法的描述40 5.3.2 遗传算法的工作流程41 5.4 改进的粒子群算法42 5.5 实验及分析44 5.5.1 参数设置44 5.5.2 对比实验44 5.6 本章小结46 6 总结与展望 47 6.1 本文工作总结47 6.2 后续工作展望48 致 谢 49 参考文献 50 附 录 54 V 重庆大学硕士学位论文 目 录 A.作者在攻读硕士学位期间发表的论文目录 54 B.作者在硕士期间获得的奖励 54 C.实验数据库 54 VI 重庆大学硕士学位论文 1 绪论 1 绪 论 1.1 选题的背景 自20 世纪60 年代以来,随着计算机价格的降低,容量的不断增加,计算机的 应用也逐步深入到人们生活,工作,娱乐等各个领域。与此同时,为满足用户的 需求,计算机软件系统的规模逐渐增大,复杂度也随之增加,作为软件质量的重 要特性之一的软件可靠性问题也变的越来越突出。曾经一度因软件可靠性问题, 造成的巨大的人身和财产损失十分惊人,因软件开发过程不够成熟,导致软件质 量无法得到保证,致使政府,企业,个人受到各种损失,最终引起软件危机。应 用程序本身对软件系统的可靠性要求也不断增加,尤其在一些关键领域的应用: 如民航订票、金融管理和医疗控制系统和国防领域中的军事防御系统等,即便在 日常生活中,人们对软件质量的要求也再不断提高,针对软件质量问题出现的软 件危机,软件工程学应运而生。在工程学领域,软件质量任务的优先级甚至高于 提高软件的功能和性能等。软件可靠性是软件的重要特征之一,是贯穿整个软件 开发流程的为确保软件质量的一种技术。 计算机系统由硬件和软件构成,同理,其可靠性也相应地由硬件可靠性和软 件可靠性共同决定,由于硬件可靠性比软件可靠性更容易保证,所以最终影响计 算机系统可靠性的瓶颈是软件可靠性。在实际生活中,因软件可靠性欠佳,而引 起的系统瘫痪,软件失效,人员伤亡和财产损失等事件也屡有发生。如:在 1963 年,美国在发射金星探测火箭时,仅因其软件控制系统中误把―,‖写成―.‖ ,最终 以发射失败而告终,致使损失高达上千万美金;在1996 年,欧洲宇航局发射火箭 阿里亚娜五号,升空仅 8 秒钟就发生爆炸,经调查分析得知:是由于其控制系统 中的三个软件存在缺陷引起;90 年代后半期,―计算机2000 年问题‖震惊世界,据 统计,该问题导致全世界共耗资千亿美元,而终其原因则是一种特殊的软件故障 引发系统混乱甚至崩溃;在2002 年,据美国商务部的国家标准技术研究所发表的 有关软件缺陷的损失报告中显示:―除去由于软件缺陷导致的人员伤亡等灾难性后 [1] 果所造成的损失外,每年由软件缺陷所造成的损失仍然高达222 亿~595 亿美金 ; 从以上事例可知,由软件可靠性造成的财产损失严重,甚至致使人员伤亡,所以 对软件可靠性的研究已成为对软件工程研究的一个重点和热点。总而言之,类似 的事件很多,为了避免以上由软件质量造成灾难性后果的事件继续上演,人们对 软件质量要求越来越高,软件可靠性作为软件质量的最重要的一个特征,无疑也 备受相应专家和学者的特别关注。 1 重庆大学硕士学位论文 1 绪论 1.2 选题的意义 在1990 年前后,引入了软件可靠性工程这一概念,其是一门对软件质量,尤 [2] 其是软件可靠性,进行控制和管理的学科 。如果能够在软件企业实行软件质量管 理的同时,有效地使用软件可靠性工程技术,则会明显地提高生产出的软件的质 量,提高我国软件产品在国际上的竞争力。近30 年来,软件可靠性模型的研究对 生产出高可靠性的软件也做出巨大的贡献,它提高了人们对软件开发和测试阶段 的本质认识,对软件开发的生命周期的各个阶段也具有较高的应用价值,数百倍 地降低了软件中千行代码中的错误率。由此看来,软件可靠性工程不但具有理论 研究价值,而且也具有实际应用价值。 在软件可靠性工程中,软件可靠性模型是通过描述软件可靠性与时间、软件 产品自身特征等因素的定量关系的一种随机表示。软件中的缺陷则是影响软件可 靠性的最主要的因素。通过数学方法实现定量估计软件模块中是否存在缺陷、剩 余缺陷数、下次导致缺陷的时间等,可使开发者、设计者和测试人员对软件在整 个生命周期中获得更多的信息,从而合理地指导资源的分配、有效地估计软件交 付时间等工作,同时对软件质量的提高也有重要的现实意义。 具体到软件开发的生命周期而言,则是在对软件测试之前,通过收集一些静 态指标(如代码行、操作符个数、操作数个数等)作为软件可靠性模型的输入, 通过二分类的预测模型,预测出有缺陷和无缺陷的模块。从而可以指导管理人员 合理的分配资源和安排工作计划。进入测试阶段,则可以收集软件缺陷数据(软 件失效的时间间隔等),用其作为软件可靠性模型的输入。通过相应的软件可靠性 预测模型,则可预测软件下次失效的时间、剩余的缺陷数等。从而为管理人员判 定软件是否可以交付提供重要信息。综上所述,对软件可靠性预测的研究是可行 而且必要的。 1.3 软件可靠性模型的研究现状 自上世纪70 年代以来,多种软件可靠性模型相继推出并不断得以改进、优化, 且在一些领域得到应用。如:预测软件可靠性、为管理者做出相关决定提供依据 等,其具体研究现状如下: 1.3.1 国内外研究现状 目前,软件可靠性模型主要可分为两类:基于统计方法的模型和基于计算智 能方法的模型。其发展过程分别如下所示: 基于统计方法的模型:1972 年,由Jelinske 和Moranda 共同提出的J-M 模型 [3] ,是软件可靠性预测模型发展史上的一个里程牌。Goel 和Okumoto 于1979 年 [4] [5] [6] 提出了G-O 模型 ;之后学术人士相继提出S-W 模型 ,Shooman 模型 ,Nelson 2 重庆大学硕士学位论文 1 绪论 [7] [8] [9] 模型 ,MUSA 模型 ;在1976 年,基于不完全排错的软件可靠性模型 首次由 [9] M Shooman 和S Natrajan 提出;同年,PB Moranda 提出了几何泊松模型 ,之后 [10] [11] 贝叶斯排错模型 由Littlewood 发表。Yamada 和Oski 于 1983 年提出了Y-O 模型等。 基于计算智能方法的模型:2004 年,郭平提出一种新模型前馈神经网络伪逆 [12] 学习算法 ,该模型在软件可靠性预测方面不但预测精度高而且收敛速度较快。 基于该模型,为进一步提高模型的预测效果,提出了相应的改进算法即混合学习 [13] [14] 算法 。2005 年Gyimothy 等人将Logistic 回归方法 应用于软件缺陷预测。在 2006 年,张永强在一组以失效时间间隔即失效之间平均时间的时间序列的数据库 [15] 上,利用遗传演化算法建模实现软件可靠性预测 。Pai 和 Hong 使用了支持向 [16] 量机技术建立预测模型,并使用模拟退火算法优化该模型的参数 。2007 年 Su 和Huang 等人不但从数学的角度解释了人工神经网络,而且构建了动态加权组合 [17] 模型(DWCM )以综合使用已存在的模型 。2008 年Gondra 等人研究了基于人 [18] 工神经网络的软件可靠性预测方法 。2008 年Elish 等人将支持向量机应用于软 [19] [20] [21] 件可靠性预测 。2009 年Catal 等人 和2010 年Yang 等人研究了特征选择方 法在软件可靠性预测中应用。2009 年和2011 年Li 等人分别提出基于adaboosting 算法实现多模型的组合模型及改进模型[22-23] 。 1.4 论文的研究目标及内容 1.4.1 论文的研究目标 通过对软件可靠性预测的研究,证明软件可靠性受诸多因素的影响如:时间 因素、项目因素、组织因素、环境因素和人为因素等。这些因素之间又相互关联 或存在交叉,且对软件可靠性的影响有时也无法定量表示。所以通过对影响软件 可靠性的因素的深入研究和分析,寻找一个更具有通用性的预测模型是本课题研 究的主要目标。具体而言即: ①由于传统的软件可靠性预测模型均是基于完全数据建立的,为了其通用性 更强,即当待预测数据由于各种因素导致部分数据缺失的情况下仍可建模,扩大 原有模型的适用性。 ②通过寻优算法代替人工选择参数的方法,达到自动寻优,不但节省人力和 时间,而且可以搜索到更优的参数,从而可使模型的预测效果也更优。 1.4.2 论文的研究内容 本文研究的内容为:首先本文通过深入研究SVM 在软件可靠性方面的应用, 为了进一步扩展该模型的应用范围,解决在由环境或人为因素最终导致待预测数 据库存在缺失的情况下模型仍然可用的问题,本文提出一种基于不完全数据直接 3 重庆大学硕士学位论文 1 绪论 建模的软件可靠性预测模型即基于最大间隔的软件可靠性预测模型。然后考虑到 基于最大间隔预测模型中的参数选择问题,参数的选取对于模型的预测效果影响 甚大,但是通过人为实验随机选择参数,不但浪费较多的时间和精力,而且最终 选择的参数通常不是很理想,本文通过引入一个改进的粒子群算法实现参数的自 动寻优。最后,通过在两个数据库上验证了本文模型的有效性和适用性。 1.5 本文的主要工作及结构安排 本文共由六章内容组成,其具体安排如下: 第一章:主要介绍了软件可靠性的研究背景,研究意义,概括性地讲解了其 发展历程,此外,阐述了本文的研究目标和内容。 第二章:详细地介绍了软件可靠性的定义,与硬件可靠性相比其自身存在的 特殊性,影响软件可靠性的因素,用于度量软件可靠性的指标及其收集方法,并 用数学形式描述了软件可靠性的含义。 第三章:大致介绍了当前存在的软件可靠性模型,并对本文中使用的计算智 能算法中的统计方法支持向量机(SVM)作了进一步详细介绍,其中包括统计学 习的基本问题、经验风险最小、结构风险最小等。 第四章:详细介绍了本文提出的基于不完全数据的可靠性预测模型基本原理, 并通过与传统的填充方法比较,验证了本文模型预测效果较优。 第五章:本章是基于第四章提出的模型的改进模型。本章模型提出一个改进 的优化算法实现了对参数的自动优化,而且通过实验证明:本章模型优于原模型。 第六章:对本文进行总结,并阐述了本文存在的不足之处,对进一步研究工 作进行了展望。 4 重庆大学硕士学位论文 2 软件可靠性概述 2 软件可靠性概述 计算机系统由软件和硬件组成,其可靠性也相应的分为硬件可靠性和软件可 靠性。硬件可靠性的理论研究及其实践应用已经达到纯熟阶段,但与硬件可靠性 相比,软件可靠性有其自身的特点且难以构造一个既简单又广泛使用的可靠性预 测模型。可以说,当前软件可靠性是制约计算机系统可靠性发展的一个瓶颈,所 以对软件可靠性的研究已引起人们的广泛关注与重视。本章将介绍与软件可靠性 理论相关的一些知识。 2.1 软件可靠性的定义 软件可靠性作为软件质量的一个重要组成部分,对软件的质量保证起到决定 性的作用。但是关于软件可靠性的明确定义,直至 1983 年才由IEEE 计算机学给 出,随后,此定义被美国国家标准和我国国标GB/T 11457 采用。该定义涵盖如下 两方面的内容:(1)在规定的条件下和规定的时间内,软件不引起系统失效的概率; (2)在上述条件下,软件执行规定功能的能力。在软件工程领域,定义中的各要素 有其重要含义,具体如下: ―规定的条件‖指软件环境、硬件支持、输入数据的运行剖面。其中运行剖面是 关于如何使用系统的基于概率的一种定量描述,即对软件执行的操作及在该操作 上发生响应的概率的集合。具体而言:每次软件运行需要的输入数据构成输入空 间的一个元素,该元素是一次运行所需输入数据的集合,可表示为一个多维向量。 每个输入元素经过软件内部的执行和相应处理后会产生相应的输出元素即程序的 运行结果,同理,所有的的输出数据构成一个输出空间,每组输出数据同样对应 输出空间中的一个元素,可表示为一个多维向量。这样每个输入元素与每个输出 元素之间就存在一种映射关系。但是输入空间中的元素数量极其庞大,在软件的 实际应用环境中,每个元素被使用的概率各不相同,这种基于不同输入的概率分 布即构成运行剖面。 ―规定时间‖ :在计算机中用于统计时间的计量方式共有三种:日历时间,时钟 时间和执行时间。日历时间即指人们日常使用的日期时间计时方式;时钟时间即 从软件开始执行计时,直至软件运行结束时停止,其中不包括停机时间;执行时 间也被称作CPU 时间指软件在整个运行过程中真正使用CPU 的时间。软件的可靠 性与规定的时间相关,在不同的―时间‖ 内,软件表现出不同的可靠性,实际应用中, 应该根据具体情况综合分析,选取合适的计时方式。但是经验表明,CPU 时间是 用于可靠性度量最合理也是最佳的计时方式。 5 重庆大学硕士学位论文 2 软件可靠性概述 ―规定功能‖ :即在软件开发过程中,编写的软件规格说明书中涉及的功能是否 实现。 2.2 软件可靠性的特点 [24] 软件系统的可靠性由硬件可靠性与软件可靠性共同组成 。软件可靠性与硬 件可靠性理论、技术和方法等方面相辅相成,互相促进,互相补充。软件可靠性 是在硬件可靠性的研究成果与实践应用中得以启发、产生和发展的,所以软件可 靠性与硬件可靠性之间存在诸多相同和相似之处,但是由于软件自身固有的特点, 使其与硬件可靠性之间也存在一定的差异,其具体表现如下: ①与硬件的物理实体相比,软件是以逻辑实体形式存在,故不存在自然变化 或损耗问题。 ②与硬件的基于脑力的设计与基于体力的生产过程相比,软件则更侧重于脑 力劳动过程,且产品本质上无形、不可见、难以测控。 ③与硬件的失效率曲线呈浴盆状(即基于时间的变化,随着硬件故障的排除 和修复,硬件的失效率逐渐降低,但是经过一段时期到达最低值之后,因自然变 化或损耗致使软件失效率呈逐渐增长趋势)相比,随缺陷的排除,软件的失效率 是基于时间的一个递减函数,即软件可靠性逐渐增加。 ④在正常使用的情况下,硬件的行为表现总是渐变的,若有失效或故障产生 一般存在预兆。而软件发生故障则完全不同,可能仅因为输入数据的微小差别却 能导致输出结构的天壤之别,而且故障的产生与物理原因无关,主要取决于输入 元素与运行状态的组合。 ⑤硬件产品出现故障之后,通常是维修或使用新产品替换,解决后其可靠性 通常不会发生变化,但是软件产品则可以在使用中通过在确保不引入新的缺陷的 情况下,随着软件缺陷的修复,软件的可靠性逐渐提高。 ⑥硬件的故障产生的位置通常是独立的,但是软件系统的故障则表现有扩散 和蔓延的特点,即某处的修复可能会在执行过程中引起其他位置的错误。 2.3 软件可靠性影响因素 影响软件可靠性的因素包括很多种:如软件自身的特性,人为因素和软件工 程管理过程等,但是由于对软件可靠性的研究还不成熟,目前大部分因素与软件 可靠性之间的本质关系和定量关系还尚未确定。就本质而言,之所以软件系统不 可靠,是因为软件中存在故障和缺陷。引入缺陷的原因则主要由上述三种因素, 具体而言,可细分为以下几种: ①运行剖面:对于同一个软件系统不同的运行剖面对应不同的可靠性,例如 6 重庆大学硕士学位论文 2 软件可靠性概述 设想一个极端的例:某软件的输入空间可以划分为两个区域A 和B ,A 区域中的 每个输入元素均会引起软件故障,而B 中则相反。此时若运性剖面仅包括A 区域, 则该软件系统的可靠性为0,反之,则为1。 ②软件规模:随着软件、尤其是单个模块规模的不断扩大,软件可靠性问题 也越来越突出。经实验研究和实践应用表明:软件规模与软件可靠性之间关系为 负相关,即随着软件规模的增大,软件可靠性降低。但是软件的可靠性与软件规 模之间定量关系尚未明确。 ③软件结构:研究表明:软件逻辑结构越复杂,通常软件越不可靠。当然此 结论是在其他因素相同的条件给出的。关于软件复杂性度量的方法,当前应用较 普遍的包括halstead 度量、MaCabe 度量和Thayer 复杂性度量。详细内容请参考[24] ④软件测试:是一种通过检查开发过程中的文档或运行开发出的软件产品的 方式,尽可能多的发现软件中存在的故障和缺陷的过程。在当前情况下,形式化 方法和程序正确性证明方法还无法应用于实际软件应用,在未来相当一段时间内, 软件测试将一直是保证软件质量的重要并切实可行的措施之一。 ⑤软件可靠性设计:指在软件开发过程中,以软件可靠性工程为背景,采取 一定避错,查错、纠错,容错等设计从而确保软件的可靠性。经验也进一步证明 了,软件可靠性设计在提高软件可靠性方面发挥着重要的作用。 ⑥软件工程化管理:即借鉴工程管理的理论和实践经验,同时结合软件自身 的特性,通过工序化开发过程,规范化开发活动、标准化产品设计等措施对软件 开发的全过程进行定义、规范,管理和控制,从而确保软件可靠性。 ⑦软件开发技术、方法和工具:在软件开发过程中所使用的开发技术、方法 和工具对软件可靠性发挥着一定的作用,例如,经实践表明:基于面向对象的设 计方法与基于过程的设计方法比较,产生的缺陷相对较少,从而有效的控制了软 件的可靠性。 ⑧开发人员的技能和经验:作为软件开发的主题的人,在软件可靠性的保证 方面发挥的作用是不可替代的。开发人员自身编码素养和经验,直接影响着软件 的可靠性。 2.4 软件可靠性度量指标 [25] 软件可靠性度量指标 是软件可靠性建模的基础,是对模型验证和评估的 依据,是软件可靠性理论存在和发展的基石。所以本文对软件可靠性度量指标做 进一步详细介绍。 度量指标根据是否与时间相关可分为两大类:静态度量指标和动态度量指 标。具体而言,静态度量指标:是与运行时间无关的数据和信息,不使用与运行 7 重庆大学硕士学位论文 2 软件可靠性概述 时间相关的数据或信息。度量指标的分类如下图所示: 方法层度量指标 类层度量指标 产品度量 构件层度量指标 文件层度量指标 静态度量 基于软件变更历史 指标 基于软件扰动 基于开发人员信息的 过程度量 度量指标 可靠性度 量指标 基于需求的度量指标 动态度量指标 图2.1 软件可靠性度量指标的分类 Figure 2.1 The classification of software reliability metric 2.4.1 静态度量指标 静态度量指标根据度量实体可把软件可靠性度量分为:产品度量、过程度量 和资源度量,但是在软件工程领域,产品度量和工程度量使用较为广泛。 ①产品度量 即以软件产品为中心作为度量对象。其中主要包括:基于方法层、类层、构 件层和文件层度量指标。当前使用较广泛的指标是方法层度量指标,其中具体细 节如下图所示: 1) 方法层度量指标 8 重庆大学硕士学位论文 2 软件可靠性概述 表2.1 静态度量中方法层的度量指标 Table2.1 The method metrics of static measurment Maccabe 度量 Cyclomatic_complexity v(g ) 圈复杂度 Desigen_complexity iv(g) 设计圈复杂度 Essential_complextiy ev(g) 基本圈复杂度 代码行度量 Loc_total 总代码行数 Loc_blank 空白行数 Loc_comments 注释行数 Loc_executable 可执行代码行数 Loc_code_and_comment 同时有代码和注释的总行数 Number_of_lines 总行数 Halstead 度量 Num_operators N 1 总操作符个数 Num_operands N 2 总操作数个数 Num_unique_operators M 1 独立操作符个数 Num_unique_operands M 2 独立操作数个数 Length: N N1 N 2 N 程序长度 Volume: V N *log  V 程序编码所需最小比特数 2 Level: L V * /V 其中 程序级别:程序能被理解的级别 * V (2  M *)log (2  M *) 2 2 2 * M 2 等于模块的参数总数 L Difficulty: D 1/L D 程序难度 ^ Content: I L*V 其中 独立于语言的算法复杂度 ^ 2 M L * 2 I M N 1 2 ^ Effort :E V / L E 工作量 Error_est B 软件缺陷估计 Prog_time :T E /18 秒 T 程序执行总时间 其他度量 Branch_count 模块中的分支数 Node_count 模块中的节点数 Percent_comments 注释占的程序的百分比 9 重庆大学硕士学位论文 2 软件可靠性概述 2) 其它度量指标 到目前为止,基于类层、构件层和文件层的研究相对较少,所以本文仅作简 [26] 单介绍,详细内容请参考文献 。其中基于类层的度量指标包括CK 度量集、MOOD 度量集和QMOOD 度量集等;基于构件层的度量指标有成熟性、容错性和易恢复 性等;基于文件的度量指标则包含有:在系统测试之前源码被检查的次数;源码 文件中自动生成的代码行数和注释行数等。 ②过程度量 过程度量即以过程为中心的度量指标,其中主要包括:基于软件变更历史、 基于软件扰动,基于开发人员信息和基于需求的度量指标等。与产品度量相比, 过程度量的结果通常是定性的,而无法达到产品度量中的定量度量,所以其使用 存在较大的局限性。本文将不深入介绍每个度量指标,若需要了解更多详细信息 [27] 请参考文献 。 2.4.2 动态度量指标 [28] 动态度量指标 :则是与运行时间相关的数据和信息。主要包括:相同时间 间隔内的软件故障数,每个故障发生的时间间隔等。根据收集的故障数据是否完 整可把动态度量指标分为两类:完全数据和不完全数据。其具体定义如下所示。 完全数据:即所收集的数据不存在任何缺失,其相应的数学表示形式如下: 假设收集的数据集{yt t i 1,2, ,n } 。若对于任意的 t t 1 则为完全数据。 i i1 i 不完全数据:则表示所收集的数据存在部分缺失。其数学表示如下所示:同 理,假设收集的数据集{yt t i 1,2, ,n },若存在 t t  1 ,则为不完全数据。其 i i1 i t y t 中, 表示记录时间, 则表示 时间发现的缺陷数。 i t i i 2.5 软件可靠性的数学表示 在2.1 节已给出软件可靠性的定义,为了从本质上理解该定义,本节更深层次 的使用数学方法描述软件的可靠性。以便能把握该概念的深层含义,深刻理解软 件可靠性的行为。 根据软件可靠性的定义为:在规定的时间内和规定的运行环境下,软件不发 生任何失效行为的概率。通常情况下,软件可靠性是与时间相关的一个函数,在 R(t ) t f (t ) 此表示为: 。其中 为随机变量用于指示失效的时刻, 是概率密度函数, 分布函数则用F (t ) 表示,P(0 t t ) 表示在时间[0,t ] 内软件发生失效的概率。设 1 1 软件在开始时刻可正常运行,则F (0) 0 。可得: t F (t ) 0 f (x)dx (2.1) dF (t ) f (t ) (2.2 ) dt 10 重庆大学硕士学位论文 2 软件可靠性概述 t 令Pf (t ) 表示从开始运行到时刻 软件发生失效的概率,则可得 1 1 t 1 Pf (t ) P(0 t t ) f (x)dx F (t ) F (0) F (t ) (2.1) 1 1 0 1 1 在时间区间[0,t ] 内,依据概率学理论,令软件正常运行这一事件发生的概率为 R(t ) ,其对立事件即发生失效的概率为F (t ) ,则 R( t ) F ( t ) 1 (2. 2) 上式可以转化为: t R( t ) 1 F (t ) 1 f (x )d x (2. 3) 0 t 从上式表明:随时间 的增加,软件运行过程中预测缺陷的概率越高,软件可 靠性越低。上式(2.5)表示基于数学理论的软件可靠性,但是由于软件具有其特 殊性即若把软件看作是从输入数据到输出数据的映射,则输入数据是导致软件失 效发生的根源。所以通常表示为另一种形式: Y(i) 假设某软件的输入数据集为I ,定义 为在第i 个输入时软件失效与否的判定 函数即 1, 第i次输入成功 Y(i)  (2. 4) 0,第i次输入失效 则软件可靠性概率的另一种形式为: I n R ( t ) [ P (i )(Y )i ] (2. 5)  i 1 P(i ) i n 其中 表示第 次输入软件成功运行的概率, 表示软件运行的次数。但是, I 通常情况下,软件的输入数据集合 是一个极大甚至无穷大的数据集。在实际的应 用中,软件的可靠性则通常进一步简化为如下形式: c n n R(t ) [ l i m ] (2. 6) n n n c 其中 表示在某一特定应用中软件执行的总次数, 表示其中运行成功的次 n c 数,则lim n 是在一次执行过程中软件成功地概率。 n  n 2.6 本章小结 本章主要是讨论了与软件可靠性相关的基础知识和理论概述,包括软件可靠性 的定义,数学表示及其与硬件可靠性相比其自身存在的特殊性,此外,还介绍了 影响软件可靠性的因素和度量指标。掌握本章知识,可以对进一步研究软件可靠 性提供依据,打下基础。 11 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 3 软件可靠性建模方法和常见可靠性模型 3.1 软件可靠性建模分类 在前面的章节中以介绍了软件可靠性工程的相关理论。其主要作用是:通过 在软件开发的各个阶段考虑软件的可靠性并把其作为开发过程中的一个指标。从 而为管理人员和开发人员在高效安排时间与合理分配资源方面提供依据,最终实 现高效开发满足一定可靠性的软件的目的。软件可靠性预测模型作为软件可靠性 工程领域中研究最早,成果最丰富,争议也最多的研究热点,至今已有一百多种 软件可靠性模型被发表。简而言之,软件可靠性预测技术,就是根据软件度量或 失效数据,选择某种建模方法构造可靠性预测模型,根据该模型预测软件的可靠 性或失效行为,进而为开发或管理人员在各种决策中提供指导性依据。其实现流 程图如下所示: 数据搜集 初步选择几个软件可靠性模型 构造模型 模型评价和选优 确定最佳模型 获得可靠性指标 软件中还存在的缺 是否有缺陷 下一个失效时间 陷数 决策: (1)软件的可靠性是否满足要求? (2 )软件是否还需要进一步测试? (3 )软件是否可以交付? 图3.1 软件可靠性预测模型执行流程图 Figure the flow chart of software reliability prediction model 软件可靠性模型根据建模的实现机理可分为两大类:基于统计分析方法的模 13 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 型和基于计算智能方法的模型。 3.1.1 基于统计分析方法的模型 该类模型的基本思想是:依据统计原理,利用收集的数据建立模型进而对软 件的可靠性做出评估。到目前为止,该类模型在软件可靠性预测模型的研究中占 据很大的比例。而且已有部分模型在实际生产中被应用,但是仍未开发出一个通 用性较好的可靠性模型。造成这种现象的根本原因在于: ①现有模型与实际开发过程之间存在较大的差异,主要体现在:某个可靠性 模型可能适用于软件开发的某个阶段,而不适用于其他阶段;在某些失效数据集 合上预测效果可能较好,而在另外一些数据库上效果又很差。从建模过程层面理 解,其原因是建模过程本身就是基于某个软件的某个阶段开发的,所以在其他阶 段或软件失效过程中使用难免出现预测精度不高的现象。 ②大部分基于统计分析方法的模型在建模过程建立于一定的假设条件之上, 但在通常情况下,这些假设条件与实际应用存在较大差异。也是导致模型预测效 果较差的一个重要原因。例如常见的假设条件包括:完美调试,立即排错,完美 排错等,这些假设在真实应用中都是较难满足甚至不合理的。因为软件测试是一 个较复杂的调试过程,当发现错误时可能无法立即排除,也可能在排除某处的错 误时,在另一处又引入新的错误等。该类模型又可细分为: 缺陷播种模型 静态模型 基于数据域模型 基于统计 的软件可 经验模型 靠性模型 微模型 动态模型 宏模型 图3.2 基于统计分析方法的软件可靠性模型分类 Figure 3.2 the classification of software reliability model based the statisticl analysis 14 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 3.1.2 基于计算智能方法的模型 [25] 计算智能 CI (computational intelligence )是受到大自然或人类智慧的启发而 开发出的新型算法和模型的总称。关于计算机智能的定义是由Bezdek 首次于1992 年提出,其最大的特点是:不依赖于知识表示,也无需建立问题本身的精确模型, 而直接使用最底层观测的数据建立模型,克服了统计方法建模过程中基于假设条 件建模的缺点。从建模过程的表象观察,基于智能方法的建模过程貌似撇开了与 现象相关的结构关系和因果关系。但从本质上而言,软件发生的所有的现象的结 构关系和因果关系,均体现在以往的失效数据上,通过这些已获得的数据构造模 型,正是考虑了以往所有现象的综合作用。 同基于统计方法的可靠性模型相比,计算智能方法克服了传统方法存在的缺 点,所以该类模型具有较好的通用性,其通用性较强的具体表现有以下三个方面: ①建模过程不是基于某一软件的某一阶段建模,所以一般情况下,对于某个 具体的计算智能模型即可用作静态可靠性模型也可用作动态可靠性模型,差别仅 在于:用于建立模型的数据是静态数据还是动态数据。 ②建模过程无需基于假设条件建立模型,所以在不同软件的失效行为上预测 精度普遍较高。 ③直接使用记录的历史数据建模,可以用于解决因那些较难获得先验知识而 无法使用传统方法处理的问题。 截至到目前为止,虽然针对该类方法的研究相对于传统的统计方法而言还处 于初步阶段,但其一定程度地解决了统计方法中存在的不足,所以基于计算智能 的建模方法在可靠性建模方面的应用将有较好地发展前景。 通常情况下,对于某计算智能模型即可以用作静态可靠性模型也可用作动态 可靠性模型, 基于以上原因,下图为根据模型启发源的不同对计算智能模型分类 15 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 遗传算法 演化策略 演化算法 演化规划 遗传程序设计 人工神经网络 差分演化 模糊系统 协同演化 计算智能 人工免疫系统 算法 计算智能中的统计学习 方法(支持向量机) 粒子群优化算法 蚁群优化算法发 群体智能 方法 蜂群算法 图3.3 计算智能方法分类 Figure 3.3 The classification of computational intelligence method 上图,计算智能方法中的演化算方法,人工神经网络和模糊系统发展相对成 熟,人工免疫系统和统计学习方法则仍然处于初步阶段。 3.1.3 两类模型的比较 到目前为止,大部分研究均是基于统计分析的方法建立软件可靠性预测模型。 其中较经典的模型包括:J-M 模型,.G-O 模型,Musa 模型等。但是基于统计分析 的建模方法存在一个共同的缺点:即模型的构造需建立于一些假设条件之上,例 如 J-M 模型的假设条件包括:①软件系统中每个故障被激活的概率相等;②立即 排错:即一旦发现故障立即排除;③完美排错:在排错过程中,不引入新的缺陷 或故障。但是实际的应用系统的测试过程相当复杂,每个缺陷被激活的概率通常 并不相同,而是与其对应的运行剖面有关;此外,有些故障虽然已经查出,但是 可能无法立即排除;又或者,在排除原有故障的同时,引入新的故障等,显而易 见,这些假设条件在实际系统中是不合理或者是难以满足的。根据这些固定的假 设条件建立可靠性预测模型,以预测受各种随机因素影响和综合环境作用,表现 出千变万化的故障预测过程,必然导致预测模型的预测精度不高,且适用能力较 差。为了解决该问题。Karunaithi 提出了一种新的建模方法,即利用人工神经元网 络方法建立软件可靠性模型,该方法是通过模拟人类的神经系统而建立的一种抽 16 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 象的数学模型。近年来,经历进一步的发展,以人工神经为重要分支的计算智能 算法因其独特的优越性受到科研者的广泛关注。与传统的基于统计分析的方法相 比,计算智能建模方法具有以下优点:①模型的建立不需建立在一些假设条件之 上,而是直接从已获得的各种数据或资源中自动提取能反应其本质规律和特征的 知识;②具有较强的自适应,自学习和容错能力。所以综上所述,可知计算智能 方法在软件可靠性预测领域的应用发展潜力较大。 3.2 计算智能与软件可靠性 计算智能算法是根据人类智慧和自然界智慧为雏形而形成的抽象数学建模方 法,是人工智发展的一个新阶段。计算智能的最初的定义可以追溯到1992 年:与 人工智能相比,该方法最大的特点是:不需要依赖于知识,仅依据收集的数据提 取其内部规律。判断是否是计算智能的根本依据是:如果一个模型的构造仅依据 收集的数据,而无需依赖知识,且能够实现模式识别的功能,则该建模方法即为 计算智能方法。该方法的优点表现在:其通过最底层的数据建立可靠性模型,摆 脱了传统的基于假设条件建模的局限性,同时具有较强的适应能力,具备自动推 理能力,例如泛化属性,联想和抽象属性等。所以与基于统计方法相比,计算智 能算法预测精度更高,自适应能力更强,该方法在软件可靠性建模方面存在较大 的发展潜力。它与人工智能和软件可靠性预测之间的关系如下所示: 用于可靠 人工智能 计算智 性预测的 能方法 计算智能 软件可靠性预测 方法 图3.4 人工智能,计算智能和软件可靠性预测之间的关系 Figure 3.4 The relationship between artificial intelligence, computational intelligence and software reliability prediction 计算智能方法根据其用途主要包括两类:建模方法和优化方法,但是这两类 方法之间不存在绝对的界限。例如,计算智能方法中的演化方法既可以用作建模 也用于优化,另外,群体智能算法则主要是用于优化。结合到本论文,第四章则 是介绍计算智能之统计方法的推广模型,即直接对含有缺失的样本进行预测的新 17 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 模型。第五章则是使用改进的群体优化算法优化第四章提出的模型。 3.3 基于智能方法之统计学习方法——支持向量机 [29] 支持向量机SVM (support vector machine ) 的提出可以追溯到1995 年,由 vapnik 根据统计学习理论中的VC 维和结构风险最小原理建立的统计学习模型。与 传统的研究样本趋于无穷大的渐进理论-统计学方法不同,统计学习建模目的不在 于对已知样本的描述能力,而是对未知数据的预测能力即泛化能力。统计学习理 论是一种研究小样本情况下的机器学习理论。支持向量机是基于统计学习原理提 出的第一个模型,其是统计学习领域的一个里程碑,也是一个具有革命性意义的 理论成果。它通过在训练样本描述的准确性与模型复杂性之间寻找一个合理的折 中点,从而提高了其泛化能力,克服了传统模型存在的过学习缺点。本节将对有 监督的分类预测作进一步的介绍。 3.3.1 统计学习的基本问题 统计学习过程的本质:通过把训练样本中的样本特征和样本标示分别作为系 统的输入和输出,以搜索一个最能反映其映射关系的函数,该函数也被称作模型, 然后即可把该模型用于预测未知数据为下一步的决策做出指导的过程。 从另一种角度而言,有监督的统计学习即:随机变量x 和 y 之间存在某种依 赖关系即满足某一联合概率P(x, y ) ,但是这种依赖关系是未知的。统计学习就是 根据已搜集的n 个独立同分布的训练样本,在一个函数集{f (x , )} 中找到一个能够 * 最优的反映x 和y 之间依赖关系的函数f (x , ) 作为其模型。其中函数的优劣判断 的依据为:该模型可使预测的期望风险 R( f )  L( y, f ( x) )P (x , y )d x d y (3. 1) 最小即模型具有良好的泛化能力。其中L(y, f (x)) 为损失函数,若为二分类问 题,可以定义如下损失函数 0 若y f (x ,w )  L(y , f (x ))  (3. 2) 1 若y  f (x ,w )  其中,y f (x ) 表示正确分类,y  f (x ) 则表明错误分类。损失函数并不是固 定的,可以根据实际情况调整损失函数,进而做出不同的决策。 3.3.2 经验风险最小 上式(3.1 )中的最小化期望无法计算,因为随机变量x 和y 之间的依赖关系 即联合概率P(x,y)是未知的。为解决该问题,引入了通过已获得的n 个样本的平 均风险近似描述,其形式如下 18 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 1 n Remp (w) L(y, f (x,)) (3. 3) n i 1 但是在有限的样本下,经验风险最小并不代表期望风险也最小。曾出现过极 端情况,建立的模型可以很好的记住每一个训练样本,对训练样本的预测正确率 为 100%,但是泛化能力极差,对新的待测试样本预测正确率为0% 。统计学习方 法通过引入结构风险最小化以克服此缺点。 3.3.3 结构风险最小 Vapnik 等人使用结构风险最小化代替以往的经验风险最小化原则。以确保在 训练样本上的经验风险最小的同时,尽可能的使其泛化能力得到保障。结构风险 的定义如下: R( f ) Remp ( f ) (h n) (3. 4) Remp ( f )  其中 表示经验风险, 表示置信范围,其代表该模型在未知样本上的 n h 预测结果的可信程度,该值的大小与样本总个数 和函数集的 VC 维 相关。VC 维是一个用于表示问题复杂度的度量指标,其值越高表明问题越复杂。 3.3.4 支持向量机 最初设计的支持向量机是用于处理完全数据情况下,线性可分的分类预测问 题。经过深入的研究和不断的改进,该模型已经持续被推广,目前已经可以高效 地解决线性不可分和回归预测问题。本节将详细讲解支持向量机。 ①线性可分支持向量机 在下图中,以线性可分为出发点介绍SVM 的实现原理。图中,原点和方块分 别表示两类样本。H 为分类面,H1 和H2 表示经过样本且与分类面平行的面,落 在H1 和H2 上的点表示支撑点,两者之间的距离被定义为分类间距,H 与H1 和  H 与H2 之间的间隔为几何间隔 。 19 重庆大学硕士学位论文 3 软件可靠性建模方法和常见可靠性模型 T w x b 1 T w x b 0 T w x b 1 图3.5 线性可分情况下的最优分类超平面 Figure 3.5 The optimal classification hyperplane with the linear separable case 结构风险最小化原则体现在:SVM 的核心思想是找到一个使分类间距最大的 分类面作为预测函数,从上图可以看出,可把两类样本完全分开的分类面不止一 个,能把样本正确分类正是经验风险的图形表示,但是为提高其泛化能力,SVM 寻找的是最优分类面,最优的判断依据是使分类间距最大。例如对于一个二分类 问题。 n {(x ,y ) i 1,2 n } xi d 若存在包含 个样本的训练集 i i ,其中 表示样本的 个特 d y i x R , y 1 征, 表示类别标示,其中 i i ,在线性可分的情况下,使分类间距最 w.x b 0 . g (x) y (w.x b) 大的分类函数为 ,其中 表示两个向量的内积。设间隔 , 则几何间隔为 g (x) y (wx b )  min i i (3. 5)

  “原创力文档”前称为“文档投稿赚钱网”,本网站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】

http://ammanphoto.com/yunxingpoumian/115.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有