毕业设计(论文)针对网络教学平台软件的可靠性测试研究与实践.doc
《毕业设计(论文)针对网络教学平台软件的可靠性测试研究与实践.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)针对网络教学平台软件的可靠性测试研究与实践.doc(32页珍藏版)》请在三一办公上搜索。
1、目录第 1 章 绪论1.1 课题背景1.2 国内外研究动1.2.1 软件可靠性研究的发展及现状1.2.2 软件可靠性领域面临的主要问题1.3 论文主要研究内容及意义第 2 章 软件可靠性测评相关理论研究2 .1 软件可靠性的基本概念2.1.1 软件可靠性的定义2.1.2 软件可靠性的度量2.1.3 软件可靠性工程2.2 软件测试与可靠性2.2.1 软件测试2.2.1.1 软件测试方法2.2.1.2 软件测试技术2.2.1.3 软件测试模型2.2.2 软件可靠性评价技术2.2.3 软件可靠性模型2.2.3.1 软件可靠性模型的概念2.2.3.2 建模原理2.2.3.3 建模的一般过程2.3 软件
2、测试与可靠性评价的关系2.4 小结第 3 章 传统的软件可靠性测试方法3.1 软件可靠性测试方法的概念3.1.1 软件可靠性测试的提出3.1.2 软件可靠性测试的定义3.1.3 软件可靠性测试的过程3.2 两种主要的软件可靠性测试方法3.2.1 基于使用模型的统计测试方法3.2.1.1 统计测试原理3.2.1.2 使用模型的构造3.2.1.3 测试用例的生成3.2.1.4 测试的充分性以及可靠性度量3.2.2 基于运行剖面的可靠性测试方法1 绪论1.1 课题背景二十世纪七十年代以来,计算机系统被越来越广泛地用来监视和控制与人类生活相关的一些物理过程。这些计算机系统监视其外部物理过程的变化,并根
3、据变化产生控制指令,引导物理过程按照正确的方式运转。典型的应用包括飞行器和航天器的控制系统、汽车电子系统、工业过程控制系统、电站控制系统、危重病人的生命维持系统、通信系统以及目前正在大规模兴起的消费类电子产品。在这种情况下,对计算机系统的质量和可靠性的要求也越来越高,这是因为这些系统的功能一旦失效,将引起生命、财产的重大损失以及环境可能遭到严重破坏1,从而使社会生产和经济活动陷入不可收拾的混乱状态。计算机系统的可靠性包含硬件可靠性与软件可靠性两方面的内容。由于硬件可靠性技术已有五十余年的发展历史,冗余技术、差错控制、故障自动检测、容错技术和避错技术等可靠性设计技术已经成熟,以及大规模超大规模集
4、成电路的被采用,可使整机的可靠性大体上每经六年就提高十倍。相比之下,软件可靠性的研究只有二十年左右的发展历史,加上软件生产基本上仍处于作坊式的手工制作,其提高软件可靠性的技术与管理措施还处于十分不完善的状况。而且随着计算机技术迅猛发展,软件的销售量和使用量呈几何级数增长,软件的规模也越来越大,复杂性急剧提高。例如,航天飞机的飞行软件达 50 万行源代码,F-22 战斗机更达 150 多万行源代码,软件失效已成为系统瘫痪的主要原因。根据美国国防部和 NASA 的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量级。而且工程应用中由软件引发的、震惊科技界的故障持续不断,在某些类型的
5、设备中软件故障甚至远远超过了硬件,成为系统的主要故障源。1.2 国内外研究动态1.2.1 软件可靠性研究的发展及现状第一篇关于软件可靠性的论文是 1967 年 Hudon提出的生灭过程模型,该模型导出了故障间隔的威布尔分布。继 Hudon之后,1972 年 Jelinski等人进一步研究了软件的故障率,他们都假定有一个故障的分段常数,故障率同残留差错数成正比。以上模型中的参数估计大多采用经典统计的方法。但大量的事实表明,当观察值的分布偏离原来的假设模式时,由经典统计所得的参数估计值往往很不可靠。因此,1977 年 J.W.Tukey提出了探索数据分析方法(EDA),该方法区别于经典统计方法的主
6、要之处是:对数据作极少假定或根本不假设模型,非常不重视问题的数学结构,而强调直接研究数据本身,了解数据的特征、结构,以此出发,分析如何得到更多的信息,然后采用适合这种数据的估计。70 年代末至 80 年代初,软件可靠性的研究开始集中于对软件可靠性模型进行比较和选择。早期工作的不足之处是缺乏较好的故障数据和所需的比较准则。90 年代以来,软件可靠性研究工作进展较快,主要有:(1) 软件可靠性设计。在软件设计过程中,为了提高软件可靠性,经常采用一些专门的技术将可靠性“设计”到软件中去。提高软件可靠性的技术主要有 2类:一类是避免故障,即在开发过程中,不让缺陷和差错潜入软件的技术;另一类是容错技术,
7、其中最常用的设计技术就是恢复块技术和-版本程序设计技术。F.Belle 等人从可靠度优化、费用优化等方面考虑了软件的容错技术。在此基础上,将上述诸技术结合起来,Belle 等人提出了一致性恢复块、接受表决、自检程序设计以及考虑版本间失效相关的容错技术,但目前这些技术仍处于理论上的研电子科技大学硕士论文:软件可靠性测试与评价技术的研究与实现究,其工程上的实践尚有待于进一步探讨。(2) 软件可靠性测试。通过对软件可靠性的测试发现软件中的故障,从而不断排除故障以提高软件可靠性。传统的软件测试方法主要有面向程序的静态测试和动态测试 2 大类。1991 年,T.Downs 针对现有大多数软件可靠性模型在
8、测试阶段将软件处理成黑盒子的作法,提出对测试过程直接建模。1993 年,Whittaker 等人采用马尔可夫过程对软件的测试过程和测试用例作了研究。在 1997 年的第 19届国际软件工程会议上,美国的 P.Frank 在一个发现程序失效并修改软件而消除失效的模型中,比较了几种测试方法,所考虑的问题是,使用测试用例来发现失效或通过模拟使用并在使用过程中发现失效是不是最好的。“最好”是用在所有测试到的失效都消除以后获得的可靠性来度量的。另外,美国的 A.Podgurski等人在这次会议上维护之后的软件可靠性重新评价一文中指出:回归测试中测试用例复用与修改后软件可靠性的评价是不相容的。作者提出了一
9、种在某些普通环境下评价修改后软件可靠性的比较经济的方法。随着面向对象编程(OOP)技术的兴起,相应地发展了面向对象的软件测试技术,该技术首先由 M.J.Harrold 等人提出,其基本思想是找出服务内部和服务间的定义-引用对,围绕定义-引用对的覆盖确定测试用例。针对目前大多数 OOP 测试主要集中在类的测试上,Liu. C等人通过建立一个状态模型来获得软件的动态运行时行为,提出了一个系统级的OOP 软件测试方法。(3) 软件可靠性数据的收集。软件可靠性数据的收集是估测软件可靠性的基础,所收集的数据是否有效,是否满足模型的要求,直接影响到软件可靠性评价的准确性和可靠性。通常收集的软件可靠性数据有
10、 2 类:失效计数数据和失效间隔数据。但由于软件中一个相同的错误可能会导致许多失效,并且若干个错误之间有时存在相关性,从而会降低所收集到数据的精确度,因此收集软件可靠性数据时,首先要制订出详细的计划和标准,如人力资源、时间的分配,所收集数据的形式、记录方式、存储方式等问题。其次,应对数据作具体的分析处理后方可应用,如数据的提取、合并、相关性分析等,采用的主要技术有算法、分段拟合技术等。另外,当应用某一具体的软件可靠性模型时,可能会出现需要的是其中的一类失效数据,而收集到的却是另一类,这时需进行失效数据间的转换。目前虽已开发出了一些自动收集软件可靠性数据的支持工具,但局限性很大,因此,如何准确而
11、高效地自动收集各种软件可靠性数据,还是一项有待于进一步研究和实践的课题。(4) 软件可靠性预测。传统的软件可靠性预测模型大多通过拟合已收集到的软件失效数据来预测软件在未来时间的失效数。考虑到不同时期软件失效数据对软件可靠性预测的影响会有所不同,M.Xie 提出了一个双指数平滑软件可靠性预测模型,即对近期所观察到的软件失效数据赋予一个较大的权值,与传统的预测模型相比,该模型简单易行且准确程度高。对于软件可靠性预测中的不一致问题,Karunanithi等人在 1991 和 1992 年这两届的 IEEE 关于软件可靠性工程的国际会议上,提出了利用神经网络来解决该问题。在训练人工神经网络阶段,使用执
12、行时间作为输入,而将观察到的累积错误数作为目标输出,在训练结束时,输入一个附加的、未来的、执行时间的区间段,并考察人工神经网络对累积错误数的估计精度。HanS.Son 等人利用熵论针对软件开发阶段由于开发方法的差异而引起的软件可靠性预测问题作了定量分析。(5) 硬-软件混合系统可靠性问题。计算机系统是由硬件、软件组成的一个有机整体,硬件与软件之间相互依赖、相互作用,因此为了评价计算机系统的可靠性,必须从硬-软件综合系统的角度来认识问题。国外从 70 年代中期开始研究综合系统的可靠性问题。1983 年 ARMS 会议上开始将“综合硬/软件可靠性”作为会议专题之一。同年,还专门召开了“全系统可靠性
13、研讨会”,国外这方面的研究成果已经在航空等领域得到应用。从 80 年代中期开始,我国科学工作者也投入了这项研究及应用。几种常见的硬- 软件混合系统可靠性模型有:Costes-Landrauit-Lapie 马氏模型,Thompson模型,Sumita-Masuda 模型,Shooman模型,IBM 模型,Iyer-Tang 模型等。上述模型大多假定系统包含一个硬件子系统和一个软件子系统,所以,当任意一个子系统失效,都会导致系统失效。WelkeSR讨论了具有冗余硬件元件和多个软件版本的混合系统可靠性,建立了一个硬-软件统一模型,该模型将软件中的 G-O/NHP 模型与硬件马氏过程模型综合起来考虑
14、。通过确定软件失效的转移概率,将软件失效在硬件可靠性模型中体现出来。国内软件可靠性研究始于 80 年代初,黄锡滋等在软件可靠性建模、软件可靠性分配及软件可靠性管理等方面作了有益的探索;陈望梅等开展软件避错技术研究;姚一平等在软件可靠性建模、软件可靠性评价工具和混合硬件-软件系统可靠性等方面作了努力;刘纯生在软件容错方面作了重要工作;蔡开元在软件可靠性建模(提出模糊软件可靠性模型)、软件可靠性模型应用选择、软件可靠性测试、软件可靠性度量体系作了有益的探讨。徐仁佐、李德银、张宇虹等在软件可靠性理论方面作了研究。在工程实践方面,姚一平等曾利用自己的软件可靠性评价工具对 ACT 验证机软件可靠性给予评
15、价。蔡开元也将自己的模糊软件可靠性模型应用于 ACT验证机。徐仁佐等人利用 CLIPS 开发了软件可靠性专家系统,从而为软件可靠性模型的选择和比较提供了有力的支持。1.2.2 软件可靠性领域面临的主要问题软件可靠性的研究虽然已取得了很大的成就,但存在的问题仍很多,主要有:(1) 软件可靠性测试。软件可靠性测试是适用于软件可靠性工程中的一种测试方法,旨在有效地发现程序中影响软件可靠性的缺陷,有别于传统的测试方法。软件可靠性测试在软件可靠性工程中很重要,甚至必不可少,是正确估计软件产品的可靠性的基础。但目前在这方面的研究工作很薄弱,急需开展。(2) 软件可靠性模型问题。虽然目前已建立了数百种软件可
16、靠性模型,但均具有一定的局限性,因此,从软件可靠性模型的假设是否合理、实际应用是否简单方便、适用范围是否广泛等问题出发,如何进一步建立合理、实用的软件可靠性模型还有待于进一步研究。(3) 软件测试用例的自动生成问题。现有的软件测试用例生成方法缺乏形式化方式,因此各种软件测试工具中测试用例的自动生成工具还有待于进一步开发和完善。(4) 实时软件的可靠性评价。目前在软件可靠性评价技术的研究中,大多针对通用软件而忽视了实时软件。虽然两者在评价方法上有一部分是相同的,但实时软件的可靠性评价还有自身的特殊性,如对时间资源的管理与通用软件存在差异。(5) 高可靠性软件的可靠性评价。对某些可靠性要求极高的软
17、件,如核电站、航天飞机软件,单纯依赖软件可靠性模型进行软件可靠性评价似乎不现实,因为所需的测试时间远远超出了有实际意义的界限。那么怎样对这些软件进行可靠性评价呢?目前还缺乏有效方法。(6) 硬-软件混合系统可靠性问题。计算机系统中硬、软件故障产生的方式截然不同,故硬、软件可靠性不完全一致,同时考虑到人的可靠性,目前虽然已建立了一些硬-软件可靠性模型,但这些模型都是针对一些具体的问题提出的,其侧重点各不相同,因而模型的问题还很多。1.3 论文主要研究内容及意义本论文是在国家“十五”项目“高可信赖的嵌入式实时操作系统”和合作项目“航空燃油计算机管理系统”的支持下进行的。本文主要围绕软件可靠性测试与
18、评价技术展开,针对当前软件可靠性领域面临的主要问题,在以下几个方面做了重点研究:1 软件可靠性测试方法的研究。2 软件可靠性评价技术的研究。3 实时软件的可靠性评价技术的研究。4 软件可靠性测试用例的自动生成技术,以及自动化软件可靠性测试与评价框架的研究与实现。软件可靠性是软件质量的重要指标之一,软件业也越来越关注软件的可靠性问题。在这样的前提下,讨论软件的可靠性测试与可靠性评价技术,是十分有必要的,本文研究的意义主要有以下几点:第一,对于软件的可靠性测试方法起一定的改进作用。基于使用模型的统计测试方法的应用越来越广泛,然而使用模型的建立却缺乏成熟的方法。本文利用作为工业标准的 UML 建模语
19、言,探讨并给出了一种基于 UML 模型的统计测试方法。该方法从 UML 模型导出使用模型,并首次给出了从 UML 状态图和用例图转化为使用模型的形式化算法。本文的研究使得统计测试方法更加可行、高效。第二,提出了一种比较有效的可靠性评价方法来验证软件的可靠性。由于软件可靠性模型本身存在的诸多不足和缺陷,传统的基于可靠性增长模型的可靠性评价方法已经不适合软件的可靠性评价,尤其是高可靠性需求的软件。本文通过研究基于假设检验的可靠性评价方法,并在其基础上做出改进,提出了一种基于贝叶斯理论的可靠性评价方法。该方法克服了传统可靠性评价方法的一些弊端。第三,针对实时多任务软件的可靠性评价做了一些研究。与通用
20、软件相比,实时软件的可靠性评价有自身的特殊性。在实时多任务系统中,任务通常是一个相对独立的运行实体,具有不同的运行时间比例、故障率、重要度等,对整个系统的可靠性影响也不一样。本文提出了一种基于任务模块的实时软件可靠性评价模型,能较好地反映系统中实时软件的故障过程。第四,构建了一个软件可靠性测试与评价的辅助工具平台(SATRETools),并将上述理论研究应用到该平台框架的设计中。SATRETools 是一个集成化的测试系统,集成了软件的可视化建模、可靠性测试用例自动生成与管理、测试进程的执行和跟踪、以及可靠性评价等功能。针对传统的软件测评工具功能单一、自动化程度不高等缺陷,SATRETools
21、 努力提供一个完整、自动化的可靠性测评环境。2 软件可靠性测评相关理论研究2.1 软件可靠性的基本概念2.1.1 软件可靠性的定义1983 年,美国 IEEE 计算机学会软件工程技术委员会对软件可靠性的定义如下:1在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否会遇到已存在的错误(如果错误存在的话)。2在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。软件可靠性定义中提到的“规定的条件”和“规定的时间”,在工程中有重要的意义,需要进一步解释。软件测试和运行中有三种时间度量。第一种是日历时间,日历
22、时间是指日常生活中使用的日、周、月、年等计时单元;第二种是时钟时间,时钟时间是指从程序运行开始,到运行结束所用的时、分、秒,其中包括等待时间和其他辅助时间,但是不包括计算机停机占用的时间;第三种是执行时间,执行时间是指计算机在执行程序时,实际占用的中心处理器(CPU)的时间,所以又称为 CPU 时间。定义中所指的“条件”,是指环境条件。环境条件包括了与程序存储、运行有关的计算机及其操作系统。例如计算机的型号、字长、内存容量、外存介质的数量及容量、输入和输出设备的数量、通信网络、操作系统和数据管理系统、编译程序及其他支持软件。这些因素显然对程序的运行有重要的影响。但是这些因素在使用中一般没有变化
23、。定义中的环境条件还包括软件的输入分布。程序在启动运行时,需要给变量赋值,即给程序提供输入数据。输入数据可能是由外部设备输入,也可能早已存储于计算机内存等待读取。2.1.2 软件可靠性的度量对软件产品具有可靠性程度的定量评价称为软件可靠性度量。软件可靠性度量参数(常简称软件可靠性参数)是指表示软件可靠性的一个或几个变量。软件可靠性指标是指从用户的角度对产品的可靠性参数应达到的目标值所作的规定。第 2 章软件可靠性测评相关理论研究软件可靠性很难用一个度量参数表示。对于不同的软件、不同的应用,可能使用不同的参数。和硬件可靠性度量一样,软件可靠性度量也可应用概率论和数理统计的方法、技术,因为软件的失
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 针对 网络 教学 平台 软件 可靠性 测试 研究 实践

链接地址:https://www.31ppt.com/p-3985281.html