剖析计算机软件可靠性设计

2012-04-29 02:04李磊
都市家教·下半月 2012年6期
关键词:计算机软件机理

李磊

【摘要】本文介绍了软件可靠性设计的基本概念,软件故障产生的机理,软件质量的可靠性参数,并且着重介绍了软件可靠性设计方法。

【关键词】计算机软件;可靠性设计;机理;参数

随着科学技术的不断进步,软件可靠性成为我们关注的一个问题,软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,在一些关键的应用领域,如航空、航天等,其可靠性要求尤为重要,在银行等服务性行业,其软件系统的可靠性也直接关系到自身的声誉和生存发展竞争能力。特别是软件可靠性比硬件可靠性更难保证,会严重影响整个系统的可靠性。在许多项目开发过程中,对可靠性没有提出明确的要求,开发商(部门)也不在可靠性方面花更多的精力,往往只注重速度、结果的正确性和用户界面的友好性等,而忽略了可靠性。在投入使用后才发现大量可靠性问题,增加了维护困难和工作量,严重时只有束之高阁,无法投入实际使用。本文仅就软件可靠性工程在软件开发过程中的应用谈谈自己的认识。

1 软件可靠性设计的基本概念

1.1 软件及软件故障。软件(也称程序)本质上是一种把一组离散输入变成一组离散输出的工具,它由一组编码语句组成,这些语句的功能基本上是以下功能之一:①计算一个表达式并将其结果存储在单元里;②决定下一步要执行哪个语句;③进行输入/输出控制。

软件产品与硬件产品一样。软件的可靠性工作也是贯穿于软件的整个寿命周期的。软件的寿命周期,是指从软件任务的提出一直到它完成使命,因陈旧而被废弃为止的整个时间历程,这个寿命周期包括了提出要求/规格说明、设计、实现、检验、维护等五个阶段,前四个阶段为开发期,维护阶段为使用期。

1.2 软件可靠性。关于软件可靠性的定义是什么。较多的人认为软件的可靠性与“概率统计的可靠性”的概念密切相关,软件的可靠性是软件在规定的条件下、规定的时间周期内执行所要求功能的能力。软件的可靠度是软件在规定的条件下、规定的时间内不引起系统故障的概率,该概率是系统输入与系统使用的函数。

2 件质量的可靠性参数

2.1 系统平均不工作间隔时间(MTBSD或MTBD)。设d为软件正常工作总时间,d为系统由于软件故障而停止工作的次数,则定义TBSD=Tv/(d+1)。式中,TBSD—MTBSD;Tv—软件正常工作总时间(h);d—系统由于软件故障而停止工作的次数。MTBSD反映了系统的稳定性。

2.2 系统不工作次数(一定时期内)。由于软件故障而停止工作,必须由操作者介入再启动才能继续工作的次数。

2.3 可用度A。设Tv为软件正常工作总时间,TD为由于软件故障使系统不工作的时间,则定义A=TV/(TV+TD)。它反映了系统的稳定性,亦可表达为A=TBD/(TBD+TDT)。式中,TBD—MTBD(h),TDT—平均不工作时间,以下简称MDT(h)。对一般生产用计算机系统,要求A≥99.8%;银行计算机系统,要求A>99.9%。

3 软件可靠性设计方法

从软件可靠性的概念可知,软件的缺陷可以导致错误并造成系统的故障,因此,缺陷是一切错误的根源。为了提高软件的可靠性,最关键的还是力求减少软件中的缺陷。软件的缺陷来自软件寿命周期的各个阶段,因此应想方设法在寿命周期的各个阶段减少缺陷。缺陷在一定的环境条件下暴露,导致系统运行中出现错误。软件的错误概括地说可能由规范(要求/规格说明)、软件系统设计及编码过程产生。

3.1 要求/规格说明。只要在规格说明与用户要求说明之间存在误差,就会产生规范错误。

规范它不仅规定程序的要求,还规定所用的结构、研制及试验中需要的程序试验要求和文件,以及程序语言、输入和输出的基本要求。通过对这些方面作出适当的规定,就可以建立使产生错误的可能性最小、并保证错误能被发现和改正的程序生成的结构。

这种说明书是软件设计人员和用户间相互了解的基础,是软件设计人员进行程序设计、调试的基础和评价软件的依据。要求/规格说明书应具有以下性质: ①可测性:生产出来的软件产品应能根据要求/规格说明书的内容进行测试。②完整性:对软件要求的描述要完整无缺。③明确性:对软件的要求必须是明确的,不存在语义上的支义性。④一致性:要求说明书中的概念与规范化。⑤弹性:当软件的工作环境发生变化时,其功能说明也相应地扩充或压缩。

3.2 软件设计。软件系统是根据要求/规格说明(规范)设计的,通过设计将确定程序结构、测试点及限制等。为设计出可靠的软件,需要在考虑诸如机型、资源、语言、模型及数据结构等实际问题的基础上,采取一些有效的设计方法。

3.2.1 “自顶向下设计”法。这种设计方法是处理分级问题最有效的设计技术。它是以一个系统功能的最抽象描述开始作为最高层次;从它出发,设计一系列较详细的子系统。由这些子系统来完成员高层次的功能;再以每个子系统为基础,设计出一系列更详细的子系统,等等。如此逐次向下作功能分解,直到最低层次的子系统能够比较方便用计算机程序设计语言来实现为止。自顶向下设计方法的价值在于,它在设计的同时,指出了复杂性不同的处理层次,而且各种设计要素之间的关系是比较清楚的。通过这样一种结构化构造途径,有可能在早期就洞察出设计问题,从而避免了不必要地先去考虑较低层次的细节问题。

3.2.2 结构化程序设计。软件结构对软件的可靠性具有重要的意义。结构良好的程序易于编写、检查,便于查错定位、修改和维护。结构化程序设计(也称为模块化程序设计)把程序要求分成若干独立的、更小的程序要求或模块化的功能要求,分别提出各自的要求/规格说明,并注明是如何与程序中的其他部分接口,还必须指出所有的输入与输出,以及测试要求。对每一个更小的程序和模块,可分别编程和测试,使得模块间高度分离。

3.3 软件编码。在软件结构设计的基础上就可以进行编码,编码产生的缺陷是软件错误的主要来源。一般的编码错误是:键入错代码;数值错误(尤其是单位不统一时易出这类错误);丢失代码(如括号);用了被零除这样不定值的表达式等。为了减少编码错误,实现设计与生产分离,首先由高水平的软件工程师完成结构设计,再由程序设计员完成程序的编制是合理的、必要的,并在编码过程中尽早地查出缺陷予以改正。

4 结束语

软件可靠性设计工程是一门虽然得到普遍承认,但还处于不成熟的正在发展确立阶段的新工程学科,仍然存在很多问题,需要去探索、研究和解决。本文介绍只在软件可靠性设计方面抛砖引玉,提供借鉴。

参考文献:

[1]张磊,周继锋,张强.系统软件可靠性验证测试方法研究[J].计算机与数字工程,2010,06.

[2]曾福萍,靳慧亮,陆民燕.软件缺陷模式的研究[J].计算机科学,2011,02.

猜你喜欢
计算机软件机理
隔热纤维材料的隔热机理及其应用
煤层气吸附-解吸机理再认识
基于C语言的计算机软件编程
浅谈不同编程语言对计算机软件开发的影响
计算机软件数据库设计应用探析
雾霾机理之问
浅谈基于C语言的计算机软件程序设计
神州修车救援APP取得计算机软件著作权
球形ADN的吸湿机理
DNTF-CMDB推进剂的燃烧机理