《计算机软件论文浅探软件可靠性工程的应用》由会员分享,可在线阅读,更多相关《计算机软件论文浅探软件可靠性工程的应用(4页珍藏版)》请在金锄头文库上搜索。
1、浅探软件可靠性工程的应用 摘要:本文就武器装备软件开发的现状和中存在的问题,介绍了软 件可靠性工程的发展及其研究的内容,对软件可靠性工程如何在软件开发中应用进行了重 点说明,并提供了成功应用软件可靠性工程的典型案例,指出软件可靠性工程研究的必要 性。 关键词: 软件 可靠性工程 随着科学技术的不断进步,计算机技术被越来越多地应用到武器系统中。计算机软件的 复杂程度随着功能的增强,因而系统的可靠性也越来越与软件直接相关。例如 AFTI/F-16 飞机首航因软件问题推迟 1 年,事先设计的先进程序 wu 法使用;海湾战争中 F/A18 飞机 飞行控制系统计算机 500 次故障中,软件故障次数超过硬
2、件。软件可靠性成为我们关注的 1 个问题,本文仅就软件可靠性工程在软件开发过程中的应用谈谈自己的认识。 1、软件可靠性工程的基本概念及发展 1.1 什么是软件可靠性工程 软件可靠性工程简单地说就是对基于软件产品的可靠性进行预测、建模、估计、度量及 管理,软件可靠性工程贯穿于软件开发的整个过程。 1.2 软件可靠性工程的发展历程 软件可靠性问题获得重视是 2 十世纪 60 年代末期,那时软件危机被广泛讨论,软件不可 靠是造成软件危机的重要原因之 1。1972 年正式提出 JelinskiMoranda 模型,标志着软件 可靠性系统研究的开始。在 70 年代软件可靠性的理论研究获得很大发展,1 方
3、面提出了 数十种软件可靠性模型,另 1 方面是软件容错的研究。在 80 年代,软件可靠性从研究阶段 逐渐迈向工程化。进入 90 年代后,软件可靠性逐渐成为软件开发考虑的主要因素之 1,软 件可靠性工程在软件工程领域逐渐取得相对独立的地位,成为 1 个生机勃勃的分支。 1.3 软件可靠性工程研究的基本问题 软件可靠性工程的主要目标是保证和提高软件可靠性。为达到这 1 目标,首先要弄清软 件为什么会出现故障或失效。只有这样,才有可能在软件开发过程中减少导致软件故障或 失效的隐患,且 1 旦出现软件故障或失效,有可能采取有效措施加以清除。但是软件是开 发出来的,满足可靠性要求的软件也是开发出来的,因
4、此,软件可靠性工程的核心问题是 如何开发可靠的软件。而有了软件,又该如何检验其是否满足可靠性要求?这是软件可靠性 工程的又 1 个问题。 2、软件可靠性工程在软件开发中的应用 2.1 项目开发计划及需求分析阶段 在项目开发计划阶段需根据产品具体要求作出软件项目开发计划,明确项目的目的、条 件、运行环境、软件产品要求、人员分工和职责及进度,并估计产品的可靠性。需求分析 阶段要根据项目开发计划阶段确定软件开发的主要任务、次要任务和其它任务,并设计软 件程序的基本流程、软件结构、模块的定义和输入输出数据、接口和数据结构等同时应对 项目开发计划阶段作出的可靠性预计进 1 步细化形成可靠性需求,建立具体
5、的可靠性指标。 这个阶段的可靠性工作 1 般应如下安排: 确定功能概图 所谓功能概图就是产品的各种功能及其在不同环境条件下使用的概率。为确立功能概图 必须定义产品的功能,功能定义不但包括要完成的任务,还包括影响处理的环境因素。 对失效进行定义和分类 这里应从用户的角度来定义产品失效,将软件和硬件失效及操作程序上的失效区分开,并将其按严重程度进行分类。 确定用户的可靠性要求 在这个阶段应由系统设计师、软件设计师、可靠性师、测试人员及用户方代表可靠性评 估小组共同根据用户提出的系统可靠性来确定软件的可靠性。 进行平衡关系研究 通常应考虑可靠性和功能之间的关系以及可靠性、开发费用和开发周期之间的关系
6、。1 般来说,增加功能会导致可靠性降低,可靠性提高的程度 1 般与测试加强程度相对应,这 意味着时间和费用的增加。 建立可靠性指标 在这个阶段应对每种失效分别建立可靠性指标。通常,首先建立系统可靠性指标,然后 在硬件和软件间分配。影响建立可靠性指标的因素主要有:合同或有关标准中明确规定的 可靠性指标,相似产品的可靠性指标,产品的质量保证,使用已有模块的可靠性,技术能 力和局限(如容错技术的使用)等。 2.2 软件设计和功能实现阶段 软件设计是对上 1 阶段定义的每 1 个功能模块逐步细化,确立系统体系结构,形成若干 可编程的模块。说明硬件和软件模块之间的接口及它们与外部环境的接口,详细描述各模
7、 块的输入、处理过程及输出。功能实现是根据设计方案进行软件编程。该阶段主要应做: 在模块间分配可靠性指标 定义系统体系结构时,应将系统分解成模块同时保证总体可靠性指标。进行系统分解是 应考虑以下因素:系统的物理特性、以前收集的数据的特性及收集数据需要的工作量等。 确定每个模块的可靠性要求时,首先进行可靠性分配,然后根据试分配值计算系统的可靠 性。这样及时调整,使各模块开发周期、难度和风险大致相当,系统的开发费用也才能降 至最低。 按可靠性指标进行设计 目前,可靠性设计有以下几种方法:设计恢复策略、使用冗余软件单元、鉴别高风险区 域。设计恢复策略是指软件只须重新启动即可消除失效的设计,设计恢复应
8、能保存修复可 能破坏的数据,应具备确定失效发生时间和阻止继续运行的机制,以减少程序数据的破坏。 使用冗余软件单元时是采用与原软件单元不同的冗余软件单元来提高可靠性。鉴别高风险 区域采用 FMEA(失效类型与后果分析)和 FTA(错误树分析)的方法来进行可靠性分析。根据功能概图集中资源配置 根据功能概图把人力、物力等资源用到用户认为最重要的地方。 控制错误的引入和传播 错误是引起软件失效的根本原因,所以控制每个开发步骤中引入的错误数目及未被察觉 的而传入下 1 步的错误数目,对于控制产品的可靠性是非常重要的。错误控制受多种因素 影响,其中主要有: a.构造模块化系统; b.进行软件重用; c.进
9、行单元和集成测试,阻止错误向下 1 开发步骤传播; d.进行检查和复核; e.控制改动。 度量现成软件的可靠性 如果在产品中使用现成的未在本产品中开发或测试过的软件,必须对其进行可靠性证明, 证明其可靠性指标在可以接受的范围内方可采用。2.3 系统测试和现场试运行阶段 系统测试和现场运行以确认产品的软件要求是否得到满足,用户是否可以实际应用。系 统测试阶段是开发过程阶段的最后阶段,如果措施得当,可以在产品首次使用前进 1 步提 高可靠性。现场试运行阶段在用户环境中验证产品的各种说明及系统测试所得的可靠性指 标。这个阶段的工作有以下工作: 确定操作概图 操作概图是指实现系统功能的操作及其概率的集
10、合,1 个操作可以是特定环境下执行的 1 条命令,或同时附有限定范围内的参数或输入变量集。确定操作概图是测试计划的 1 个 重要部分,1 般在系统测试阶段之前由测试计划人员,在系统设计师和软件设计人员的协 助下完成。 进行可靠性增强测试 在系统测试阶段需进行可靠性增强测试。在可靠性增强测试中,系统测试员根据操作概 图描述各种操作的现场发生概率,按比例的执行测试用例,通过模仿用户的应用方式可靠 性增强测试,易于发现令用户最不满意的失效,能够反映出用户使用时的可靠性感受。 根据测试进展并证明可靠性指标是否达到要求 在可靠性增强测试中,要收集失效数据,利用已有或自行设计并经验证的可靠性工具跟 踪测试
11、进展及规划必须的额外测试,根据进展情况在系统测试进行中可以对资源和进度安 排随时做必要的调整。 现场可靠性评估 系统测试阶段完成后,转入现场试运行阶段。在试运行中,从现场收集失效数据,利用 此数据和软件工具评估现场可靠性,然后与系统测试结束后测得的可靠性相比较,同时对 可靠性差异的产生原因进行分析。 2.4 维护阶段 维护阶段是在产品用户使用过程中改正软件暴露出来的与失效有关的错误。在这个阶段 监视产品现场运行的可靠性,并和预定指标及用户的满意程度进行对照比较,以便提高后 继版本的可靠性,改进软件开发过程中的质量。此阶段主要做的工作是: 用可靠性模型规划产品交付使用之后的人员需求,如:用户恢复
12、失效操作的人员,承 制方处理用户报告的失效的人员,承制方处理与用户报告的失效有关的错误的软件开发人 员。 监视现场可靠性是否达到预期指标,根据其间的差距采取相应的措施。同时还应跟踪 用户是否满意,根据不满意的情况,进行必要的现场支持服务及产品改动。 当加入新的功能时,通过监视可靠性,消除由此带来的失效强度增加。 分析软件交付使用后的失效产生原因,指导工程的改进,降低引入类似错误的可能性。3、软件可靠性工程成功应用的实例 美国 ATT 公司的国际 DEFINITYR 程控交换机部在系统软件开发过程中应用了软 件可靠性工程,相对于以前发行的主要软件版本,产品的质量提高是惊人的: 用户反映的问题下降
13、了 10 倍; 项目维护费用下降了 10 倍; 系统测试件的间隔缩短了 2 倍; 引入新产品的间隔缩短了 30%。 而且,在投入运行的前两年,从未发生严重影响业务的机器中断,客户满意程度大为提 高。具体分析原因,有以下两点: 把可靠性作为确定是否发行的标准,可避免用户在使用中反映过多问题和进行相应的 维护工作。 采用“操作概图驱动”的测试方法,提高了测试效率;20%的操作覆盖了 95%的应用, 20%的错误导致了 95%的实效;先测试 20%的使用最频繁的操作可以加速可靠性的提高。 4、结束语 软件的可靠性中正越来越引起软件研发部门的重视,但因为这是 1 门新兴的学科,对于 提高软件质量,国内外还未能从软件可靠性工程的角度总结出 1 套行之有效的管理方法。 软件可靠性工程是 1 项涉及面很广的系统工程,应加强这项技术的研究力度。尤其要结 合具体项目进行课题研究,使软件的开发过程同时也是软件可靠性工程的实施过程。使自 发的可靠性工作成为有计划、有组织和有目标的研究工作。相信经过不断的探索和实践, 软件可靠性工程会象硬件可靠性工程那样走向成熟,它的应用将对提高我国软件开发的可 靠性起到积极的推动作用。毕业论文网 论文