文档库 最新最全的文档下载
当前位置:文档库 › 什么是软件可靠性

什么是软件可靠性

什么是软件可靠性
什么是软件可靠性

关于软件可靠性

什么的软件可靠性?

软件可靠性是指在给定时间内,特定环境下软件无错运行的概率。

软件可靠性的内容

软件可靠性包含了以下三个要素:

1.规定的时间

软件可靠性只是体现在其运行阶段,所以将“运行时间”作为“规定的时间”的度量。“运行时间”包括软件系统运行后工作与挂起(开启但空闲)的累计时间。由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

2.规定的环境条件

环境条件指软件的运行环境。它涉及软件系统运行时所需的各种支持要素,如支持硬件、操作系统、其它支持软件、输入数据格式和范围以及操作规程等。不同的环境条件下软件的可靠性是不同的。具体地说,规定的环境条件主要是描述软件系统运行时计算机的配置情况以及对输入数据的要求,并假定其它一切因素都是理想的。有了明确规定的环境条件,还可以有效判断软件失效的责任在用户方还是研制方。

3.规定的功能

软件可靠性还与规定的任务和功能有关。由于要完成的任务不同,软件的运行剖面会有所区别,则调用的子模块就不同(即程序路径选择不同),其可靠性也就可能不同。所以要准确度量软件系统的可靠性必须首先明确它的任务和功能。

软件可靠性的测试

软件可靠性测试的目的

软件可靠性测试的主要目的有:

(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。

(2) 为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。

(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。

软件可靠性测试的特点

软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它们的正常运行时间。正常运行的平均时间越长, 则硬件就越可靠。软件失效是由设计缺陷造成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输入,并强调测试需求的覆盖面。软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。

此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要大于普通软件功能测试的要求。

对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。

软件可靠性测试的效果

软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证

明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的错误。这正是软件可靠性测试的目的之一。软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更

有效,所花的时间也更少。另外, 软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。

总之, 软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也不宜用于软件可靠性估计。

软件可靠性测试中需注意的问题

软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测试结果,编写测试报告。

制定测试方案时需要特别注意被测功能的识别和失效等级的定义。制定测试计划时需设计测试实例,决定测试时要确定输入顺序,并确定程序输出的预期结果,这时也需注意测试覆盖问题。

1. 功能识别

软件可靠性测试的第一步就是进行功能识别,确定使用剖面。功能识别的目标是:识别所有被测功能以及执行这些功能所需的相关输入,识别每一个使用需求及其相关输入的概率分布。为达到第一个目标,需要分析软件功能的所有集合,这些功能之间全部的约束条件,功能之间的独立性、相互关系和相互影响,还需分析系统的不同运行模式、失效发生时系统重构策略等对软件运行方式有较大影响的因素。第一个目标也是一般软件功能测试需要达到的目标,但第二个目标则是软件可靠性测试特别强调的。为了得到能够反映软件使用的有代表性的概率分布,测试人员必须和系统工程师、系统运行分析员和顾客共同合作。需要指出的是,由于可靠性的要求,输入数据的概率分布应包括合法数据的概率分布和非法数据的概率分布两部分。有时为了更好地反映实际使用状况,还需给出那些影响程序运行方式的条件,如硬件配置.负荷等的概率分布。

2. 定义换效等级

定义失效等级主要是为了解决下面两个问题:

·对发生概率小但失效后危害严重的功能需求的识别。

·对可不查找失效原因、并不做统计的功能需求的识别。

在制定测试计划时,失效及其等级的定义应由测试人员、设计人员和用户共同商定,达成协议。

3. 可靠性测试覆盖

可靠性测试必须保证输入覆盖和环境覆盖,这是准确估计软件可靠性的基础。

输入覆盖包括下面几个内容:

·输入域覆盖,即所有被测输入值域的发生概率之和必须大于软件可靠度的要求。

·重要输入变量值的覆盖。

·相关输入变量可能组合的覆盖,以确保相关输入变量的相互影响不会导致软件失效。

·设计输入空间与实际输入空间之间区域的覆盖,即不合法输入域的覆盖。

·各种使用功能的覆盖。

环境覆盖是指测试时必须覆盖所有可能影响程序运行方式的条件。

软件可靠性测试的步骤

软件可靠性测试分为四个阶段:

1.制订测试方案

本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率分布及需强化测试的功能。

以下是我们推荐的步骤。在一些特定的应用中,有的步骤并不是必须的。

(1)分析功能需求分析各种功能需求, 识别触发该功能的输入及相关的数据域(包括合法

与不合法的两部分)。分析时要注意下述问题:

·该软件是否存在不同的运行模式?如果存在,那么应列出所有的系统运行模式。

·是否存在影响程序运行方式的外部条件?如果存在,那么有多少?它们的影响程度如何

·各种功能需求之间是相互独立的还是相关的?如果相关,是密切相关还是部分相关?如果两种功能密切相关,那么可将两种功能合并为一种功能。如果功能之间为部分相关,则需列出相应输入变量的合法组合。

(2)定义失效等级

判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入领域。

(3)确定概率分布

·确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。

·判断是否需要强化测试某些功能。

(4)整理概率分布的信息将这些信息编码送入数据库。

2.制订测试计划

本阶段的目标是:

(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例预期的软件输出结果。

本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。

(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测

试实例。另外,有时预测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。总之,具体实施与被测应用软件的实际功能类型有关。

3. 测试

本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境

)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如

嵌入式软件)则应完全一致。测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和时间,以备以后核对。

4.编写测试报告

按软件可靠性估计的要求整理测试记录,并将结果写成报告。

笔者认为,软件可靠性测试的关键在于:

·对需求、输入、数据域的识别及相关概率分布的确定。

·按照概率分布随机生成测试实例,并确定测试顺序。

据国外有关文献报导,这种测试方法已成功应用于大量应用软件的可靠性测试,包括一些商用软件和航空、航天电子设备中嵌入式软件的测试,其效果很好。因此,我们有必要投入一定的人力、物力,针对我们的实际需要,有目的地对各类应用软件进行软件可靠性测试,从实践中逐步积累经验。同时需要软件开发方和使用方共同合作,进行软件可靠性测试方法的研究和有关支持工具的开发,促进我国软件可靠性水平的提高

软件可靠性的评测技术

软件可靠性评测是指运用统计技术对软件可靠性测试和系统运行期间采集的软件失效数据进行处理并评估软件可靠性的过程。软件可靠性评测的主要目的是测量和验证软件的可靠性,当然实施软件可靠性评测也是对软件测试过程的一种完善,有助于软件产品本身的可靠性增长。

软件测试者可以使用很多方法进行软件测试,如按行为或结构来划分输入域的划分测试,纯粹随机选择输入的随机测试,基于功能、路径、数据流或控制流的覆盖测试,等等。对于给定的软件,每种测试方法都局限于暴露一定数量和一些类别的错误。通过这些测试能够查找、定位、改正和消除某些错误,实现一定意义上的软件可靠性增长。但是,由于它们都是面向错误的测试,测试所得到的结果数据不宜用于软件可靠性评估。

软件可靠性测试是指在软件的预期使用环境中,为进行软件可靠性评估而对软件实施的一种测试。软件可靠性测试应该是面向故障的测试,以用户将要使用的方式来测试软件,每一次测试代表用户将要完成的一组操作,使测试成为最终产品使用的预演。这就使得所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。

软件可靠性评测由可靠性目标的确定、运行剖面的开发、测试的计划与执行和测试结果的分析与反馈等四个主要的活动组成。

可靠性目标是指客户对软件性能满意程度的期望。通常用可靠度、故障强度、MTTF等指标来描述,根据不同项目的不同需要而定。建立定量的可靠性指标需要对可靠性、交付时间和成本进行平衡。为了定义系统的可靠性指标,必须确定系统的运行模式,定义故障的严重性等级,确定故障强度目标。

为了对软件可靠性进行良好的预计,必须在软件的运行域上对其进行测试,首先定义一个相应的剖面来镜像运行域,然后使用这个剖面驱动测试,这样可以使测试真实的反映软件的使用情况。由于可能的输入几乎是无限的,测试必须从中选择出一些样本,即测试用例,测试用例要能反映实际的使用情况,反映系统的运行剖面。将统计方法应用到运行剖面开发和测试用例生成,在运行剖面中的

每个元素都被定量地赋予一个发生概率值和关键因子,然后根据这些因素分配测试资源、挑选和生成测试用例。在这种测试中, 优先测试那些最重要或最频繁使用的功能,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障,以保证软件的按期交付。一个产品有可能需要开发多个运行剖面,这取决于它所包含的运行模式和关键操作,通常需要为关键操作单独定义运行剖面。

在软件的开发过程中使用软件可靠性测试和利用软件可靠性测试对最终产品进行评价,在测试计划的制定上有所不同。用于设计过程的可靠性测试称为可靠性增长测试,测试与故障的排除联系在一起,一般安排在开发过程的系统测试阶段执行,将测试所确定的故障提交给开发者进行修改,建立软件的一个新的版本,再进行下一次测试。在这种“测试—排错—新版本”的迭代过程中,跟踪故障强度的变化,确认测试是否可以终止及软件是否可以发布。可靠性增长测试的测试脚本将执行多次。针对最终产品的可靠性测试称为可靠性验证测试,通过验证测试可确定软件产品当前的可靠性水平。就单个软件版本而言,可靠性验证测试的测试脚本将仅执行一次。软件可靠性故障数据的收集是测试活动的一部分,在测试周期内,纪录每个故障的资料,如与时间相关的故障频度、类型、严重性和故障的根源等,并且应区分设计阶段和最终产品的故障。

可靠性增长测试和可靠性验证测试将从不同的角度理解故障数据。在可靠性增长测试中,测试以迭代的方式进行,根据测试期间跟踪到的故障,使用基于软件可靠性增长模型和统计推理的可靠性评估程序进行故障强度的估计,并用于跟踪测试的进展情况。可靠性验证测试是软件系统提交前进行的最后测试。它是最终检验而不是调试。在验证测试中,其目标是确定一个软件组件或系统在风险限度内是被接受还是被拒绝。验证测试使用可靠性示图,故障被绘制在图上。根据它落入的区域,来决定被测软件是被接受还是被拒绝,或者继续进行测试。可以根据不同的客户风险(接受一个不良程序的风险)和供应商风险(拒绝一个好程序的风险)级别构造图表。

网络系统可靠性研究现状与展望资料

网络系统可靠性研究 现状与展望 姓名:杨玉 学校:潍坊学院 院系:数学与信息科学学院 学号:10051140234 指导老师:蔡建生 专业:数学与应用数学 班级:2010级二班

一、摘要 伴随着人类社会的网络化进程,人类赖以生存的网络系统规模越来越庞大、结构越来越复杂,这导致网络系统可靠性问题越来越严峻。本文首先探讨了网络系统可靠性的发展历程、概念与特点,进而从度量参数、建模、分析、优化四个方面系统综述了网络系统可靠性的研究现状,最后对网络系统可靠性研究未来的发展进行了展望。 二、关键词:可靠性;网络系统;综述;现状;展望 三、引言 21 世纪以来,以信息技术的飞速发展为基础,人类社会加快了网络化进程。交通网络、通信网络、电力网络、物流网络……可以说,“我们被网络包围着”,几乎所有的复杂系统都可以抽象成网络模型,这些网络往往有着大量的节点,节点之间有着复杂的连接关系。自从小世界效应[1]和无标度特性[2]发现以来,复杂网络的研究在过去10 年得到了迅速发展,其研究者来自图论、统计物理、计算机、管理学、社会学以及生物学等各个不同领域,仅发表在《Nature》和《Science》上的相关论文就达百篇。对复杂网络系统结构、功能、动力学行为的深入探索、科学理解以及可能的应用,已成为多个学科领域共同关注的前沿热点[3-14]。 随着复杂网络研究的兴起,作为复杂网络最重要的研究问题之一,网络系统可靠性研究的重大理论意义和应用价值也日益凸显出来[15, 16]。人们开始关注:这些复杂的网络系统到底有多可靠?2003 年8 月美加大停电事故导致美国的8 个州和加拿大的2 个省发生大规模停电,约5000 万居民受到影响,损失负荷量61800MW,经济损失约300 亿美元;2005 年12 月台湾海峡地震造成多条国际海底通信光缆发生中断,导致整个亚太地区的互联网服务几近瘫痪,中国大陆至台湾地区、美国、欧洲等方向国际港澳台通信线路受此影响亦大量中断;2008 年1 月,南方冰雪灾害导致我国十余个省市交通瘫痪、电力中断、供水停止、燃料告急、食物紧张……这些我们赖以生存的网络系统规模越来越庞大,结构越来越复杂,但越来越频繁发生的事故也将一系列严峻的问题摆在我们面前:一些微不足道的事故隐患是否会导致整个网络系统的崩溃?在发生严重自然灾

软件可靠性与安全性分析、评估方法及建议

软件可靠性与安全性分析、评估方法及建议 一、背景介绍 随着产品技术的发展及数字化技术的应用,软件在产品中所占的比重越来越大,其规模和复杂性急剧增加,对产品的可靠性、安全性工作提出了严峻的考验。为保证软件可靠性,需要对软件进行可靠性测试和评估工作,从而尽早发现并改进软件中影响产品质量的缺陷,有效提高软件可靠性。为保障软件安全性,需要对软件进行安全性分析与验证工作。 目前,随着GJB Z 161-2012 军用软件可靠性评估指南、GJB 900A-2012 装备安全性工作通用要求、GJB 102A-2012军用软件安全性设计指南、ARP4761与民用机载系统安全性评估流程及DO-178B/C机载系统合格审定过程中的软件考虑等标准的颁布实施,以及空军航定〔2012〕4号《航空军用软件定型测评进入条件评估准则》中明确提出关键软件在进入定型测评前必须具备《软件失效风险分析报告》;空军装型〔2010〕131号《空军重点型号软件工程化要求》中也明确提出在软件研制阶段中,必须要开展软件安全性分析与验证工作等规定。美国在70年代研制F/A-18飞机期间首次引入软件安全性技术。在研制F-22和F-35飞机时,则明确要求按照MIL-STD-882和DO-178B开展机载软件安全性工作。在民机领域,波音和空客均严格按照ARP-4761及DO-178B/C标准开展了软件安全性分析与验证,并作为适航审定的核心要素。在高铁、核工业、汽车、医疗等领域,同样要求按照IEC 61508、EN50128、IEC60880、IEC 61513、ISO 14971等标准,对构建高安全性软件做出严格规定。 从上述可以看出,当前世界各国对于软件产品的可靠性评估、安全性分析验

软件可靠性技术发展与趋势分析

软件可靠性技术发展及趋势分析 1引言 1)概念 软件可靠性指软件在规定的条件下、规定的时间内完成规定的功能的能力。 安全性是指避免危险条件发生,保证己方人员、设施、财产、环境等免于遭受灾难事故或重大损失。安全性指的是系统安全性。一个单独的软件本身并不存在安全性问题。只有当软件与硬件相互作用可能导致人员的生命危险、或系统崩溃、或造成不可接受的资源损失时,才涉及到软件安全性问题。由于操作人员的错误、硬件故障、接口问题、软件错误或系统设计缺陷等很多原因都可能影响系统整体功能的执行,导致系统进入危险的状态,故系统安全性工作自顶至下涉及到系统的各个层次和各个环节,而软件安全性工作是系统安全性工作中的关键环节之一。 因此,软件可靠性技术解决的是如何减少软件失效的问题,而软件安全性解决的是如何避免或减少与软件相关的危险条件的发生。二者涉及的范畴有交又,但不完全相同。软件产生失效的前提是软件存在设计缺陷,但只有外部输入导致软件执行到有缺陷的路径时才会产生失效。因此,软件可靠性关注全部与软件失效相关的设计缺陷,以及导致缺陷发生的外部条件。由于只有部分软件失效可能导致系统进

入危险状态,故软件安全性只关注可能导致危险条件发生的失效。以及与该类失效相关的设计缺陷和外部输入条件。 硬件的失效,操作人员的错误等也可能影响软件的正常运行,从而导致系统进入危险的状态,因此软件安全性设计时必须对这种危险情况进行分析,井在设计时加以考虑。而软件可靠性仅针对系统要求和约束进行设计,考虑常规的容错需求,井不需要进行专门的危险分析。在复杂的系统运行条件下,有时软件、硬件均未失效,但软硬件的交互 作用在某种特殊条件下仍会导致系统进入危险的状态,这种情况是软件安全性设计考虑的重点之一,但软件可靠性并不考虑这类情况。2)技术发展背景 计算机应用范围快速扩展导致研制系统的复杂性越来越高。软硬件密切耦合,且软件的规模,复杂度及其在整个系统中的功能比重急剧上升,由最初的20%左右激增到80%以上。伴随着硬件可靠性的提高,软件的可靠性与安全性问题日益突出。 在军事、航空航天、医疗等领域,核心控制软件的失效可能造成巨大的损失甚至威胁人的生命。1985年6月至1987年1月,Therac-25治疗机发生6起超大剂量辐射事故,其中3起导致病人死亡。1991年海湾战争。爱国者导弹在拦截飞毛腿导弹中几次拦截失败,其直接原因为软件系统未能及时消除计时累计误差。1996年阿里亚娜5型运载火箭由于控制软件数据转换溢出起飞40秒后爆炸,造成经济损

串并联可靠性模型的应用及举例

上海电力学院 选修课大型作业 课程名称:机电系统可靠性与安全性设计报告名称:串并联可靠性模型的应用及举例院系:能源与机械工程学院 专业年级:动力机械140101 学生姓名:潘广德 学号:14101055 任课教师:张建平教授 2015年4月28日

浅谈串并联可靠性模型的应用并举例 摘要 详细阐述了机械可靠性工程中串并联可靠性模型的应用,并详细的举例说明。系统可靠性与组成单元的数量、单元可靠性以及单元之间的相互联接关系有关。以便于可靠性检测,首先讨论了各单元在系统中的相互关系。在可靠性工程中,常用可靠性系统逻辑图表示系统各单元之间的功能可靠性关系。在可靠性预测中串并联的应用及其广泛。必须指出,这里所说的组件相互关系主要是指功能关系,而不是组件之间的结构装配关系。 关键词:机械可靠性串联并联混联应用举例 0前言 学技术的发展,产品质量的含义也在不断的扩充。以前产品的质量主要是指产品的性能,即产品出厂时的性能质量,而现在产品的质量已不仅仅局限于产品的性能这一指标。目前,产品质量的定义是:满足使用要求所具备的特性,即适用性。这表明产品的质量首先是指产品的某种特性,这种特性反应这用户的某种需求。概括起来,产品质量特性包括:性能、可靠性、经济性和安全性四个方面。性能是产品的技术指标,是出厂时产品应具有的质量属性,显然能出厂的产品就赢具备性能指标;可靠性是产品出厂后所表现出来的一种质量特性,是产品性能的延伸和扩展;经济性是在确定的性能和可靠性水平下的总成本,包括购置成本和使用成本两部分;安全性则是产品在流通和使用过程中保证安全的程度。在上述产品特性所包含的四个方面中,可靠性占主导地位。性能差,产品实际上是废品;性能好,也并不能保证产品可靠性水平高。反之,可靠性水平高的产品在使用中不但能保证其性能实现,而且故障发生的次数少,维修费用及因故障造成的损失也少,安全性也随之提高。由此可见,产品的可靠性是产品质量的核心,是生产厂家和广大用户所努力追求的目标。 1串联系统可靠性模型的工作原理 如果一个系统中的单元中只要有一个失效该系统就失效,则这种系统成为串联系统。或者说,只有当所有单元都正常工作时,系统才能正常工作的系统称为串联系统。 设系统正常工作时间(寿命)这一随机变量为t,则在串联系统中,要使系统能正常工作运行,就必须要求每一个单元都能正常工作,且要求每一单元的正常工作时间都大于系统正常工作时间t。假设各个单元的失效时间是相互独立的,按照概率的乘法定理和可靠性定

软件测试与软件可靠性研究

0引言 软件可靠性是指软件在规定的条件下和规定的时间内,完成规定功能的能力,软件可靠性包含三个要素,即“规定的条件”、“规定的时间”、和“完成规定的功能”。“规定的条件”指软件的用法和软件的运行环境;“规定的时间”指软件的工作周期;“完成规定功能”指软件不出现失效。 本文对软件测试和软件可靠性进行了论述,研究了如何将测试过程中产生的数据进行软件可靠性估计,从而为正确评价软件质量提供了一个方法。 1软件测试 软件测试在软件生存期开发阶段中占 有突出的地位,它是保证软件可靠性的重要手段,其基本任务是尽可能多的发现软件中的错误,排除软件缺陷,提高软件可靠性。 软件可靠性测试中最关键的三个环节是: 1)根据用户实际使用软件的方式,构造软件运行剖面,生成测试用例; 2)开发软件可靠性测试的环境,使被测软件能在该环境中得以测试; 3)对测试结果进行分析,并作出软件可靠性的预计。 软件的可靠性测试过程完整的测试过程包括测试前的检查、设计测试用例、测试实施、可靠性数据收集和编写测试报告5个步骤,其中最重要的是设计测试用例和可靠性数据收集。 1.1软件测试前的检查测试前的检查:在进行应用软件的可靠性测试前有必要检查软件需求与研制任务书是否一致,检查所交付的程序和数据以及相应的软件支持环境是否符合要求,检查文档与程序的一致性,检查软件研制过程中形成的文档是否齐全、文档的准确性和完整性以及是否通过了有关评审。 1.2设计测试用例在软件测试过程中,测试用例的生成是软件测试的关键和难点,直接影响着软件测试的有效性。测试用例是按一定顺序 软件测试与软件可靠性研究 张海锋 霍永华 中国电子科技集团公司第五十四研究所 河北石家庄 050081 执行的与测试目标相关的一系列测试,是测试数据以及与之相关的测试规程的一个特定集合。测试用例设计将产生许多测试所包括的输入值、期望输出以及其它任何运行测试的有关信息(例如环境要求)。 如果测试用例设计得好,不但可以在较短的时间内,测出较多的软件错误,也可以为修改软件错误提供时间。测试用例的选择既要有一般情况,也应有极限情况以及最大和最小的边界值情况。因为测试的目的是暴露应用软件中隐藏的缺陷,所以在设计选取测试用例和数据时要考虑那些易于发现缺陷的测试用例和数据,结合复杂的运行环境,在所有可能的输入条件和输出条件中确定测试数据,来检查应用软件是否都能产生正确的输出。 1.3测试实施 测试实施做好上述准备工作后,就可以实施测试了。研制方交付的任何软件文档中与可靠性质量特性有关的部分,包括产品说明书、用户文档、程序以及数据都应当按照需求说明和质量需求进行测试。在项目合同、需求说明书和用户文档中规定的所有配置情况下,程序和数据都必须进行测试。 在测试中,可以考虑进行“强化输入”,即输入比正常输入更恶劣(合理程度的恶劣)的输入。如果软件在强化输入下可靠,只能说明比正规输入下可靠得多。对需要进行大量的长期的运算试验,如连续运行108h 允许出现1次失效的测试,为获得更多的可靠性数据,我们可以采用多台计算机、多线程同时运行软件,以增加累计运行时间。 1.4可靠性数据收集 软件可靠性数据是可靠性评估的基础。应该建立软件错误报告、分析与纠正措施系统。按照相关标准的要求,制定和实施软件错误报告和可靠性数据收集、保存、分析和处理的规程,完整、准确地记录软件测试阶段的软件错误报告和收集可靠性数据。用时间定义的软件可靠性数据可以分为4类: 1)失效时间数据:记录发生一次失效所累积经历的时间 2)失效间隔时间数据:记录本次失效与上一次失效的间隔时间 3)分组数据:记录某个时间区内发生了多少次失效 4)分组时间内的累积失效数:记录某个区间内的累积失效数。 这4类数据可以相互转化。 将收集的软件可靠性数据用于软件可靠性模型可以对软件可靠性进行估计。 2软件可靠性模型 软件可靠性模型是随机过程的一种 表示,通过这一表示,可以将软件可靠性或与软件可靠性直接相关的量, 如 或表示成时间及过程的函数。一个软件可靠性模型通常由模型假设、性能度量、数据要求、参数估计方法组成。将软件 测试中收集到的可靠性数据带入软件可靠性模型 ( 或表示成时间及过程的函数) 可以对软件可靠性进行估计。 的执行时间模型,属于随机过 程模型,模型形式为: 假设程序内初始错误数为常数,n 为排除了的错误数,则程序中残存的错误数为: (1) 故障率函数 应于残留错误数成正比,则有: (2) 其中为线性执行频度,为错误暴露系数,则有: (3) 因 随增大,则为分段常数,逐渐减小,则错误修正率为: (4)由初始条件:,于是错误数为: (5) (6)于是软件的可靠度指标为:(7)在初始测试时,, 则,代入化简 (8)将代入 得: (9) 用以估算现时的值,并将它与目 标的平均无故障工作时间比较,如达到或超过,则表示测试已达到目标,测试于是就可以停止,否则测试继续进行。对于的最大似然估计,为达到由用户规定的目标值,所要求的执行时间增量: (10) 对于 和的估计,采用最大似 然估计法得: (11) (12) 其中 为第 次与第次的故障间隔时间,为最后一次的测试时刻,为次测试故障数。 3软件测试与可靠性模型关系 对于同一组软件测试所得的失效数 据,不同的软件可靠性模型会给出不同的软件可靠性估计,因此有必要对软件可靠性模型进行组合。将模型的结果进行线性组合,即使是以非常简单的形式,也会得到比单个模型更精确的测量结果。 构造组合模型的基本策略是:1) 选定一组基本模型。选择软件实际运行条件与所选模型假设最接近的模型; 2) 将每个基模型分别应用于数据;3) 应用所选择的评价规则为每个基模型加权,构成用以最后预测的组合模型。权值可以静态或动态地确定。一般,这种方案可以表达为如下混合分布形式: (13) 式(13) 中表示基模型个数,为 给定-1个失效观测数据的情况下, 第

系统可靠性设计与分析

可靠性设计与分析作业 学号:071130123 姓名:向正平一、指数分布的概率密度函数、分布函数、可靠度函数曲线 (1)程序语言 t=(0:0.01:20); Array m=[0.3,0.6,0.9]; linecolor=['r','b','y']; for i=1:length(m); f=m(i)*exp(-m(i)*t); F=1-exp(-m(i)*t); R=exp(-m(i)*t); color=linecolor(i); subplot(3,1,1); title('指数函数概率密度函数曲线'); plot(t,f,color); hold on subplot(3,1,2); title('指数函数分布函数函数曲线'); plot(t,F,color); hold on subplot(3,1,3); title('指数指数分布可靠度函数曲线 plot(t,R,color); hold on end (3)指数分布的分析 在可靠性理论中,指数分布是最基本、最常用的分布,适合于失效率为常数 的情况。指数分布不但在电子元器件偶然失效期普遍使用,而且在复杂系统和整 机方面以及机械技术的可靠性领域也得到使用。 有图像可以看出失效率函数密度f(t)随着时间的增加不断下降,而失效率随 着时间的增加在不断的上升,可靠度也在随着时间的增加不断地下降,从图线的 颜色可以看出,随着m的增加失效率密度函数下降越快,而可靠度的随m的增加 而不断的增加,则失效率随m的增加减小越快。 在工程运用中,如果某零件符合指数分布,那么可以适当增加m的值,使零 件的可靠度会提升,增加可靠性。 二、正态分布的概率密度函数、分布函数、可靠性函数、失效率函数曲线 (1)程序语言 t=-10:0.01:10; m=[3,6,9]; n=[1,2,3]; linecolor=['r','b','y'];

软件可靠性设计与分析

软件可靠性分析与设计 软件可靠性分析与设计 软件可靠性分析与设计的原因?软件在使用中发生失效(不可靠会导致任务的失败,甚至导致灾难性的后果。因此,应在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据,同时为避免类似问题的发生提供借鉴。 ?这些工作将会大大提高使用中软件的可靠 性,减少由于软件失效带来的各种损失。 Myers 设计原则 Myers 专家提出了在可靠性设计中必须遵循的两个原则: ?控制程序的复杂程度

–使系统中的各个模块具有最大的独立性 –使程序具有合理的层次结构 –当模块或单元之间的相互作用无法避免时,务必使其联系尽量简单, 以防止在模块和单元之间产生未知的边际效应 ?是与用户保持紧密联系 软件可靠性设计 ?软件可靠性设计的实质是在常规的软件设计中,应用各种必须的 方法和技术,使程序设计在兼顾用户的各种需求时, 全面满足软件的可靠性要求。 ?软件的可靠性设计应和软件的常规设计紧密地结合,贯穿于常规 设计过程的始终。?这里所指的设计是广义的设计, 它包括了从需求分析开始, 直至实现的全过程。 软件可靠性设计的四种类型

软件避错设计 ?避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法。的设计原则是控制和减少程序的复杂性。 ?体现了以预防为主的思想,软件可靠性设计的首要方法 ?各个阶段都要进行避错 ?从开发方法、工具等多处着手 –避免需求错误 ?深入研究用户的需求(用户申明的和未申明的 ?用户早期介入, 如采用原型技术 –选择好的开发方法

?结构化方法:包括分析、设计、实现 ?面向对象的方法:包括分析、设计、实现 ?基于部件的开发方法(COMPONENT BASED ?快速原型法 软件避错设计准则 ? (1模块化与模块独立 –假设函数C(X定义了问题X 的复杂性, 函数E(X定义了求解问题X 需要花费的工作量(按时间计,对于问题P1和问题P2, 如果C(P1>C(P2,则有 E(P1> E(P2。 –人类求解问题的实践同时又揭示了另一个有趣的性质:(P1+P2>C(P1 +C(P2 –由上面三个式子可得:E(P1+ P2> E(P1+E(P2?这个结论导致所谓的“分治法” ----将一个复杂问题分割成若干个可管理的小问题后更易于求解,模块化正是以此为据。 ?模块的独立程序可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。 软件避错设计准则 ? (2抽象和逐步求精 –抽象是抽出事物的本质特性而暂时不考虑它们的细节 ?举例

可靠性软件评估报告

可靠性软件评估报告 目前,关于可靠性分析方面的软件产品在市场上出现的越来越多,其中比较著名的有以下3种产品:英国的ISOGRAPH、广五所的CARMES和美国Relex。总体上来说,这些可靠性软件都是基于相同的标准,因此它们的基本功能也都十分类似,那么如何才能分辨出它们之间谁优谁劣呢?根据可靠性软件的特点和我厂的实际情况,我认为应主要从软件的稳定性、易用性和工程实用性三个方面进行考虑,现从这几个方面对上述软件进行一个简单的论证,具体内容如下。 稳定性 要衡量一个可靠性软件的好坏,首先是要看该软件的运行是否稳定。对一个可靠性软件来说,产品的稳定性十分重要。一个没有经过充分测试、自身的兼容性不好、软件BUG很多、经常死机的软件,用户肯定是不能接受的。当然,评价一个可靠性分析软件是否具有良好的稳定性,其最好的证明就是该产品的用户量和发展历史。 ISOGRAPH可靠性分析软件已将近有20年的发展历史,目前全球已有7000多个用户,遍布航空、航天、铁路、电子、国防、能源、通讯、石油化工、汽车等众多行业以及多所大学,其产品的每一个模块都已经过了isograph的工程师和广大用户的充分测试,因而其产品的稳定性是毋庸置疑的。而广五所的CARMES和美国Relex软件相对来说,其用户量比较少,而且其产品的每一个模块的发布时间都比isograph软件的相应模块晚得多,特别是一些十分重要的模块。 例如,isograph的故障树和事件树分析模块FaultTree+是一个非常成熟的产品,它的发展历史已经有15年了。Markov模块和Weibull模块也具有多年的发展历史,这些模块目前已经拥有一个十分广泛的用户群,它们已经被Isograph的工程师和大量的客户广泛的测试过,产品的稳定性值得用户信赖。而Relex的故障树和事件树相对比较新,它大约在2000年被发布,而Markov模块和Weibull模块2002年才刚刚发布,这些模块还没有经过大量用户的实际使用测试,其功能的稳定性和工程实用性还有待于时间的考验。广五所的CARMES软件的相应模块的发布时间就更晚了,有些甚至还没有开发出来,而且其用户主要集中在国内,并没有经过国际社会的广泛认可。 易用性 对一个可靠性分析软件产品来说,其界面是否友好,使用是否方便也十分重要,这关系到工程师能否在短时间内熟悉该软件并马上投入实际工作使用,能否充分发挥其作用等一系列问题。一个学习十分困难、使用很不方便的软件,即使其功能十分强大,用户也不愿使用。 ISOGRAPH软件可以独立运行在Microsoft Windows 95/98/Me/2000/NT/XP平台及其网络环境,软件采用大家非常熟悉的Microsoft产品的特点,界面友好,十分容易学习和使用。该软件提供了多种编辑工具和图形交互工具,便于用户在不同的模块间随时察看数据和进行分析。你可以使用剪切、复制、粘贴等工具,或者直接用鼠标“托放”来快速的创建各种分析项目,你还可以将标准数据库文件,如Microsoft Access数据库、Excel电子表格以及各种格式的文本文件作为输入直接导入到isograph软件中,使项目的建立变得非常简单。另外,Isograph 各软件工具都提供了功能强大的图形、图表和报告生成器,可以用来生成符合专业设计要求的报告、图形和表格,并可直接应用到设计分析报告结果中。 ISOGRAPH软件的一个显著特性就是将各软件工具的功能、设计分析信息、分析流程等有机地集成在一起,其全部的分析模块可以在同一个集成界面下运行,这既可以保证用户分析项目的完整性,还可以使用户在不同的模块间共享所有的信息,不同模块间的数据可以实时链接,而且还可以相互转化。例如,你可以在预计模块和FMECA模块之间建立数据链接,当你修改预计模块中的数据时,FMECA模块中对应的数据会自动修改,这既可以节省

软件可靠性模型综述(完整资料).doc

【最新整理,下载后即可编辑】 软件可靠性模型综述 可靠性是衡量所有软件系统最重要的特征之一。不可靠的软件会让用户付出更多的时间和金钱, 也会使开发人员名誉扫地。IEEE 把软件可靠性定义为在规定条件下, 在规定时间内, 软件不发生失效的概率。该概率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确定是否会遇到所存在的故障。 软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证有着重要的意义。一般说来,一个好的软件可靠性模型可以增加关于开发项目的效率,并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。因此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出必要的预测,花费极少的项目资源产生好的效益,对于企业的发展有一定的意义。 1软件失效过程 1.1软件失效的定义及机理 当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生失效的时间间隔越短,则该软件越不可靠。软件失效的机理如下图所示:

1)软件错误(Software error):指在开发人员在软件开发过程中出现的失误,疏忽和错误,包括启动错、输入范围错、算法错和边界错等。 2)软件缺陷(Software defect):指代码中存在能引起软件故障的编码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。如不正确的功能需求,遗漏的性能需求等。 3)软件故障(Software fault):指软件在运行期间发生的一种不可接受的内部状态,是软件缺陷被激活后的动态表现形式。 4)软件失效(Software failure):指程序的运行偏离了需求,软件执行遇到软件中缺陷可能导致软件的失效。如死机、错误的输出结果、没有在规定的时间内响应等。 从软件可靠性的定义可以知道,软件可靠性是用概率度量的,那么软件失效的发生是一个随机的过程。在使用一个程序时,在其他条件保持一致的前提下,有时候相同的输入数据会得到不同的输出结果。因此,在实际运行软件时,何时遇到程序中的缺陷导致软件失效呈现出随机性和不稳定性。 所有的软件失效都是由于软件中的故障引起的,而软件故障是一种人为的错误,是软件缺陷在不断的测试和使用后才表现出来的,如果这些故障不能得到及时有效的处理,便不可避免的会

几种常见软件可靠性测试方法综述及应用对比(精)

几种常见软件可靠性测试方法综述及应用对比 上海交通大学陈晓芳 [摘要]软件可靠性测试是软件可靠性工程的一项重要工作内容,是满足软件可靠性要求、评价软件可靠性水平及验证软件产品是否达到可靠性要求的重要途径。本文探讨、研究了软件可靠性测试的基本概念,分析、对比了几种软件可靠性测试主要方法的优缺点。 [关键词]软件可靠性软件可靠性测试软件测试方法 引言 软件可靠性工程是指为了满足软件的可靠性要求而进行的一系列设计、分析、测试等工作。其中确定软件可靠性要求是软件可靠性工程中要解决的首要问题,软件可靠性测试是在软件生存周期的系统测试阶段提高软件可靠性水平的有效途径。各种测试方法、测试技术都能发现导致软件失效的软件中残存的缺陷,排除这些缺陷后,一般来讲一定会实现软件可靠性的增长,但是排除这些缺陷对可靠性的提高的作用却是不一样的。其中,软件可靠性测试能最有效地发现对可靠性影响大的缺陷,因此可以有效地提高软件的可靠性水平。 软件可靠性测试也是评估软件可靠性水平,验证软件产品是否达到软件可靠性要求的重要且有效的途径。 一、软件可靠性测试概念 “测试”一般是指“为了发现程序中的错误而执行程序的过程”。但是在不同的开发阶段、对于不同的人员,测试的意义、目的及其采用的方法是有差别的。在软件开发的测试阶段,测试的主要目的是开发人员通过运行程序来发现程序中存在的缺陷、错误。而在产品交付、验收阶段,测试主要用来验证软件产品是否达到用户的要求。或者说,对于开发人员,测试是发现缺陷的一种途径、手段,而对于用户,测试则是验收产品的一种手段。

二、软件测试方法 软件测试方法有以下几个主要概念:白盒测试、黑盒测试、灰盒测试。 白盒测试(W h ite-box testing或glass-box testing是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 黑盒测试(B lack-box testing是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件或某种软件功能的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。通常测试人员在进行测试时不仅使用肯定出正确结果的输入数据,而且还会使用有挑战性的输入数据以及可能结果会出错的输入数据以便了解软件怎样处理各种类型的数据。 灰盒测试(Gray-box testing就像黑盒测试一样是通过用户界面测试,但是测试人员已经有所了解该软件或某种软件功能的源代码程序具体是怎样设计的,甚至于还读过部分源代码,因此测试人员可以有的放矢地进行某种确定的条件或功能的测试。这样做的意义在于:如果你知道产品内部的设计和透过用户界面对产品有深入了解,你就能够更有效和深入地从用户界面来测试它的各项性能。 1、白盒测试 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到: (1保证一个模块中的所有独立路径至少被使用一次; (2对所有逻辑值均需测试true和false;

软件可靠性模型综述

软件可靠性模型综述 可靠性是衡量所有软件系统最重要的特征之一。不可靠的软件会让用户付出更多的时间和金钱, 也会使开发人员名誉扫地。IEEE 把软件可靠性定义为在规定条件下, 在规定时间, 软件不发生失效的概率。该概率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确定是否会遇到所存在的故障。 软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证有着重要的意义。一般说来,一个好的软件可靠性模型可以增加关于开发项目的效率,并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。因此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出必要的预测,花费极少的项目资源产生好的效益,对于企业的发展有一定的意义。 1软件失效过程 1.1软件失效的定义及机理 当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生失效的时间间隔越短,则该软件越不可靠。软件失效的机理如下图所示: 1)软件错误(Software error):指在开发人员在软件开发过程中出现的失误,疏忽和错误,包括启动错、输入围错、算法错和边界错等。 2)软件缺陷(Software defect):指代码中存在能引起软件故障的编码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。如不正确的功能需求,遗漏的性能需求等。3)软件故障(Software fault):指软件在运行期间发生的一种不可接受的部状态,是软件缺陷被激活后的动态表现形式。 4)软件失效(Software failure):指程序的运行偏离了需求,软件执行遇到软件中缺陷可能导致软件的失效。如死机、错误的输出结果、没有在规定的时间响应等。

软件可靠性的评价准则

软件可靠性的评价准则 迄今为止,尚无一个软件可靠性模型对软件的不同特性和不同使用环境都有效。已公开发表的100余种软件可靠性模型,表达形式不同,适应性各异,与实际的软件开发过程有较大差异。而且,新模型还在不断发表。因此,在进行软件可靠性预计、分析、分配、评价和设计之前,对软件可靠性模型进行评价及选择与软件项目相符或相近的模型非常重要。通过建立有效的评价准则,在考虑它们与各种软件的关系的基础上,对拟评价的可靠性模型就有效性、适应性和模型能力等进行评价,判定它们的价值,比较它们的优劣,然后选择有效的软件可靠性模型。另一方面,在可接受的模型之间无法做出明确的选择时,可根据模型的使用环境等,在模型评价准则的基础上,进行模型择优。当然,软件可靠性模型的评价不仅依赖于模型的应用,还依赖于理论的支持和丰富的、高质量可靠性数据的支持。软件可靠性模型的评价最早始于1984年Iannino、Musa、Okumoto和Littlewood所提出的原则。根据这一原则,结合后人的工作,形成了基本的软件可靠性评价准则集。它们是软件可靠性模型比较、选择和应用的基础。 准则一:模型预测有效 软件可靠性模型最重要的评价指标是模型预测的有效性。它根据软件现在和过去的故障 行为,用模型预测软件将来的故障行为和可靠性水平。它主要通过能有效描述软件故障随机过程特性的故障数方式对模型进行描述与评价。基于软件故障时间特性的随机过程也是一种常用的方法,而且这两种方法相互重叠。 要确定软件可靠性模型预测的有效性,首先要比较模型预测质量。这种比较通常通过相 对误差法、偏值、U图法、Y图法、趋势法等方法进行。故障数度量是一种在工程上被广泛应 用的方法。此外,还可以通过比较不同数据集合所做出的中位线图形来评价模型预测的有效性。如果一个模型产生的曲线最接近于0,则该模型是最优的。而且,这种有效性测定方法有效地克服了规范化图形评价与具体软件项目之间的联系,保证了它的独立性。 用给定可靠性数据对软件可靠性模型进行比较时,必须考察拟合模型与观察数据的一致 性和符合性。当然,根据拟合模型进行采样,是否可以获得足够的观察数据非常重要。拟合优度检验是一种系统地表达并证明观察数据和拟合模型之间全局符合性的方法,使用最广泛的是x2检验。 1.准确性 软件可靠性模型预测的准确性可用前序似然函数来测定。设观察到的失效数据对应于软 件相继失效之间的时间序列t1,t2,..,ti-1,并用这些数据来预测软件在未来可能的Ti,即希 望得到Ti的真实概率密度函数Fi(t)的最优估计值。假设以t1,t2,...,ti-1为基础预测Ti的 分布Fi(t)的概率密度函数 @@42D11000.GIF;表达式1@@ 对Ti+1,Ti+2,...,Ti+n的这种向前一步预测,即进行了n+1次预测之后的前序似然函数为 @@42D11001.GIF;表达式2@@ 由于这种度量常常接近于0,所以常用其自然对数进行比较。假定比较的两个软件可靠性 模型分别为A和B,则对它们进行n次预测之后的前序似然比为 @@42D11002.GIF;表达式3@@

对软件可靠性测试的认识

一、对软件可靠性测试的认识 1.有关术语 (1)软件可靠性在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故障。 (2)软件可靠性估计应用统计技术处理在系统测试和运行期间采集、观察到的失效数据,以评估该软件的可靠性。 (3)软件可靠性测试在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性。 2.软件可靠性测试的目的 软件可靠性测试的主要目的有: (1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。 (2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。 (3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。 3.软件可靠性测试的特点 软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输入,并强调测试需求的覆盖面。 软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。 此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要大于普通软件功能测试的要求。对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。 4.软件可靠性测试的效果 软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的错误。这正是软件可靠性测试的目的之一。 软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更有效,所花的时间也更少。 另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。 总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也不宜用于软件可靠性估计。 二、软件可靠性测试中需注意的问题 软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测试结果,编写测试

软件可靠性和安全性设计指南

软件可靠性和安全性设计指南 (仅供内部使用) 文档作者:_______________ 日期:___/___/___ 开发/测试经理:_______________ 日期:___/___/___ 产品经理: _______________ 日期:___/___/___ 管理办:_______________ 日期:___/___/___ 请在这里输入公司名称 版权所有不得复制

软件可靠性和安全性设计指南 1 范围 1 .1主题内容 [此处加入主题内容] 1 .2适用范围 [此处加入适用范围] 2 引用标准 GBxxxx 信息处理——数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定。 GB/Txxx 软件工程术语 GB/Txxxxxx 计算机软件质量保证计划规范 GB/T xxxxx 计算机软件配置管理计划规范 GB/T xxxxx 信息处理——程序构造及其表示的约定 GJBxxxx 系统安全性通用大纲 GJBxxxxx 系统电磁兼容性要求 GBxxxx 电能质量标准大纲 GBxxxxx 电能质量标准术语 3 定义 [此处加入定义] 3 .1失效容限 [此处加入失效容限] 3 .2扇入 [此处加入扇入] 3 .3扇出 [此处加入扇出] 3 .4安全关键信息 [此处加入安全关键信息] 3 .5安全关键功能 [此处加入安全关键功能]

3 .6软件安全性 [此处加入软件安全性] 4 设计准则和要求 4 .1对计算机应用系统设计的有关要求 4 .1.1 硬件软件功能的分配原则 [此处加入硬件软件功能的分配原则] 4 .1.2 硬件软件可靠性指标的分配原则[此处加入硬件软件可靠性指标的分配原则] 4 .1.3 容错设计 [此处加入容错设计] 4 .1.4 安全关键功能的人工确认 [此处加入安全关键功能的人工确认] 4 .1. 5 设计安全性内核 [此处加入设计安全性内核] 4 .1.6 记录系统故障 [此处加入记录系统故障] 4 .1.7 禁止回避检测出的不安全状态[此处加入禁止回避检测出的不安全状态] 4 .1.8 安全性关键软件的标识原则 [此处加入安全性关键软件的标识原则] 4 .1.9 分离安全关键功能 [此处加入分离安全关键功能] 4 .2对硬件设计的有关要求 [此处加入对硬件设计的有关要求] 4 .3软件需求分析 4 .3.1 一般要求 [此处加入一般要求] 4 .3.2 功能需求 [此处加入功能需求] 4.3.2.1输入 [此处加入输入] 4.3.2.2处理 [此处加入处理] 4.3.2.3输出 [此处加入输出]

可靠性建模资料整理

软件可靠性建模 1模型概述 1.1软件可靠性的定义 1983年美国IEEE计算机学会对“软件可靠性”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。该定义包括两方面的含义: (1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率; (2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力; 其中的概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障(如果故障存在的话)。 软件失效的根本原因在于程序中存在着缺陷和错误,软件失效的产生与软件本身特性、人为因素、软件工程管理都密切相关。影响软件可靠性的主要因素有软件自身特性、人为因素、软件工程管理等,这些因素具体还可分为环境因素、软件是否严密、软件复杂程度、软件是否易于用户理解、软件测试、软件的排错与纠正以及软件可靠性工程技术研究水平与应用能力等诸多方面。 1.2软件可靠性建模思想 建立软件可靠性模型旨在根据软件可靠性相关测试数据,运用统计方法得出软件可靠性的预测值或估计值,下图给出了软件可靠性建模的基本思想。

图软件可靠性建模基本思想 从图中可以看出软件失效总体来说随着故障的检出和排除而逐渐降低,在任意给定的时间,能够观测到软件失效的历史。软件可靠性建模的目标如下:(1)预测软件系统达到预期目标所还需要的资源开销及测试时间;(2)预测测试结束后系统的期望可靠性。1.3软件可靠性建模基本问题 软件可靠性建模需要考虑以下基本问题: (1)模型建立 模型建立指的是怎样去建立软件可靠性模型。一方面是考虑模型建立的角度,例如从时间域角度、数据域角度、将软件失效时刻作为建模对象,还可以将一定时间内软件故障数作为建模对象;另一方面是考虑运用的数学语言,例如概率语言。 (2)模型比较 在软件可靠性模型分类的基础上,对不同的模型分析比较,并对模型的有效性、适用性、简洁性等进行综合权衡,从而确定出模型的适用范围。 (3)模型应用 软件可靠性模型的应用需要从以下两方面考虑:一是给定了软件的开发计划,如何选择适当的模型;二是给定了软件可靠性模型,如何指导软件可靠性工程实践。 软件系统的失效历史可以通过对测试得到的失效数据分析获得,而实际情况中,人们最为关注的是软件未来的失效趋势。软件可靠性模型基本都是建立在一定的假设基础之上,所以,即使花费了大量的时间和精力对软件的可靠性进行预计,也只是一种预测,这

软件可靠性设计研究及应用

软件可靠性设计研究及应用 无论您的终端应用是什么,可靠性都将是设计的主要考虑因素之一。实现可靠性的方法多种多样。 在考虑设计可靠性时,大部分工程师都将注意力集中在一个综合性度量标准:平均故障间隔时间。事实上,平均故障间隔时间(MTBF)是评估设计可靠性重要参数之一。但是另一个参数成功概率,也同样重要。因此为了最终推出可靠的设计方案,设计人员应该充分考虑其它因素并确保进行准确的可靠性分析。 无论您设计哪种产品,可靠性都是必不可少的,尽管原因不尽相同,但都取决于终端应用。航空航天与军事设计人员必须确保操作员/乘客的安全,确保成功完成任务。在电信领域,实现可靠性的目的则是防止出现服务中断的情况,因为这样会影响收入流与声誉。工业和流程控制工程师的任务就是尽可能缩短停机时间,在故障发生时,能够确保安全、无故障运行。对于商业应用,设计人员必须确保其产品在规定的质保期内不会出现任何问题。 使用FPGA可以研发出集成度更高的解决方案,从而可以延长系统的平均故障间隔时间。当器件制造商定期提供季度可靠性报告时,这一点更为明显,赛灵思就是如此做的,其出版的季度可靠性报告名为《UG116》。 从最高层次来说,可从两个角度来考虑可靠性。第一,系统在规定使用寿命内顺利运行的可信度。这一点可以采用MTBF、成功概率以及熟悉的浴盆曲线。第二,发生错误事件时,如何确保您的设计可以继续工作并保持无故障运行,或者针对尚未解决的问题出具报告。我们工程师开展设计与分析的方法可以影响到可靠性的上述两个方面。 为了确保解决方案的可靠性,您的开发环境必须建立正确的工程设计治理制度,设置审查关口、设计规则与指南,同时在生命周期内,应该安排同行在适当的点进行独立审核。MTBF与浴盆曲线MTBF的定义是从统计学角度预测系统运行过程中的故障间隔时间。制造商取各个组件的故障率倒数计算MTBF。我们一般将这些故障率称为FIT率,其中,故障时间(FIT)为1e-9小时-1。您既可向组件供应商索取故障率,亦可根据军用手册MIL-HDBK-217F或Bell-core/Telcordia SR332标准计算。MTBF与FIT率之间的关系如下

相关文档