当前位置:文档之家› 如何开展软件可靠性工程

如何开展软件可靠性工程

如何开展软件可靠性工程
随着科学高速发展,武器装备系统和自动化指挥系统等军用系统对软件的依赖程度越来越高。

软件在武器装备、航空航天等要求高可靠性的系统中扮演着越来越重要的角色。

我公司主要从事航空发动机研制和生产等方面工作,随着航空发动机技术的逐代更新,燃油控制系统由以往的机械液压控制结构改成了控制精度更高的数字控制系统,而数字控制系统的核心就是软件控制,软件的质量将会直接影响发动机的性能和安全。

因此,军用设备软件可靠性就成为确保军事系统质量的瓶颈和关键。

软件可靠性是软件质量中最为重要的一项属性,软件可靠性设计技术是确保和提高软件质量的重要手段。

软件可靠性工程是以保证和提高软件可靠性为目标,采取系统化的技术,通过工程化方法加以实施并对其过程进行工程化管理的过程技术。

软件可靠性工程是软件工程研究与实践的必然结果,是可靠性工程发展的必然选择,已经成为软件业界和可靠性工程界关注的焦点,研究的热点,实践的重点。

上世纪70年代中后期,以软件工程发展为契机,软件可靠性工程得以产生和广泛研究与实践,取得了一定成效:大量可靠性模型相继推出并不断改进;可靠性设计与测试技术得以开发并逐步应用于工程实践;可靠性分析、评估技术体系与标准得以建立并在一些重点工程项目中得到应用;可靠性工程管理技术开发倍受推崇,以过程、组织、
管理模式改进为重点的管理方法得以产生。

尽管如此,软件可靠性正日益严重地制约着软件更广泛的应用,甚至造成灾难性后果,武器系统等大型复杂系统软件越来越证明是一个薄弱环节,即使是通过测试的软件也常常受到错误的困扰。

与此同时,一个前所未有日益增长的需求是:软件应具有检定合格的可靠性,即使是工业和日常生活中的一般应用软件也无不对其可靠性提出了前所未有的高要求。

况且,不能保证软件的可靠性水平哪怕是在一段时间的将来是足够的。

软件可靠性模型是软件可靠性工程界倍受关注、研究最早、成果最丰富、目前仍然最活跃的领域,模型验证与应用依然是软件可靠性工程的热点。

软件可靠性建模是针对具体的软件特征,根据可靠性数据以统计方法给出软件可靠性的估计值或预测值,是一个在不同结构元素中不断分解其依赖关系的迭代过程,旨在评估软件所提供的服务以及软件过程之间的依赖关系,是从本质上理解软件可靠性行为的基础。

软件可靠性模型是软件开发过程、开发技术、测试技术、验证方法、设计语言、运行环境、开发人员素质等相关因素的函数。

一个优秀的软件可靠性模型,应尽可能反映这些因素。

但包含所有这些因素的模型可能是一个高阶多维方程,不便于工程应用。

因此,可靠性建模时应作适当假设,简化模型。

模型假设必须准确、合理、具有有效的数据支持和逻辑一致性。

但大多数模型假设所固有的目的性制约了模型的有效性和适用范围。

此外,假设质量尤其是那些未经验证或粗略的假设对模型的精确性具有显著影响。

基于拟合优度检验的模型假设
检验较好地解决了假设的准确性问题,但对其趋势、噪音等的验证依然是一个难题。

建模过程包括模型的比较与选择、参数选择以及模型应用。

模型参数取决于软件性能、过程特征、需求变更、软件更改等。

但由于可靠性数据匮乏,加之软件的固有特性,建立满足各种因素的可靠性模型非常困难,且难以验证,尤其是对于高可靠性的验证和完全测试策略的制定还存在着巨大的困难,虽然可以通过软件容错等措施来克服这些困难,但其有效应用尚待深入研究。

软件可靠性设计的实质就是在软件开发过程中,严格遵循软件工程原理,采用有效的可靠性设计技术和方法,避免人为差错以及人为引入错误,预防为主,此谓避错设计。

但避错设计只能确保软件达到一定的可靠性限度,要进一步提高可靠性,进行避错设计的同时,还需采用查错设计、纠错设计、容错设计等技术。

软件可靠性测试是指在预期的使用环境中,为检出软件缺陷,验证和评估是否达到用户对软件可靠性需求而组织实施的一种软件测试。

软件可靠性测试是面向故障的测试,每一次测试均代表用户将要完成的一组操作,使得测试成为最终软件产品运行的预演。

软件可靠性测试包括可靠性增长测试和可靠性验证测试。

在产品研制过程中,我们常常将软件的目标值或规定值作为软件可靠性的设计目标,将软件生命周期过程中不同阶段的最低可接受值或门限值作为相应阶段的考核验证指标。

软件生命周期过程中,其可靠性工程的工作主要体现在以下几方面:
(1)需求获取阶段:根据软件拟实现的功能、性能及拟完成的任务,提出软件可靠性的目标值并以此确定其门限值。

(2)需求分析阶段:确定开发过程中软件可靠性门限值和目标值,经分析、预计、分配之后如发现其门限值和目标值与分配需求所给定的目标值和门限值存在着较大差距或难以实现时,应同使用使用方协商后予以调整。

(3)软件设计与编码实现阶段:对确定的可靠性参数予以再分配,细化和优化设计目标,经过可靠性的设计、分配以及可靠性增长,实现设计目标。

(4)软件测试阶段:不仅要按照规定的要求和标准组织开展软件的单元测试、软部件测试、配置项测试和系统测试,检测出软件错误,实现软件的可靠性增长。

同时,在测试过程中,尤其是在系统测试和确认测试过程中,按照软件的实际使用方式来镜像运行剖面,驱动测试、验证软件可靠性指标的实现程度。

(5)验收交付阶段:经测试获得软件可靠性的验证值,验证是否达到软件开发的最低可接受值。

(6)使用维护阶段:经过使用验证获得软件的可靠性水平,验证所交付的软件的可靠性是否达到目标值,在此阶段,目标值最低不能低于门限值。

软件可靠性度量和软件可靠性工程管理贯穿于整个过程活动。

软件可靠性是软件质量中最为重要的一项属性,软件可靠性设计技术是确保和提高软件质量的重要手段。

虽然现在硬件设计与生产已有一套得以广泛应用的方法使其可靠性可以给定、可以预测、可以证明。

但要开发足够可靠的软件并测量其可靠性,仍然非常困难。

软件可靠性工程的理论和实践有别于传统的可靠性工程,目前存在的问题比已有的答案要多得多,还在很大程度上受到理论、方法、工具等支持的限制,还有待发展。

相关主题