日期:2023-01-24 阅读量:0次 所属栏目:软件技术
浅析检察系统软件可靠性设计
1、软件可靠性设计的基本概念
1.1软件及软件故障。软件(也称程序)本质上是一种把一组离散输入变成一组离散输出的工具,它由一组编码语句组成,这些语句的功能基本上是以下功能之一:(1)计算一个表达式并将其结果存储在单元里;(2)决定下一步要执行哪个语句;(3)进行输入/输出控制。
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%。
2.4 mttr。它反映了出现软件缺陷后采取对策的效率。在一定程度上也反映了软件企业对社会服务的责任心。对于在线系统而言,mtt只要求不超过2天,变差系数应小于1。一般的mttr也应小于7天,变差系数小于1。
2.5平均不工作时间(mdt)。即由于软件故障,系统不工作的均值。对在线系统而言。mdt要求不超过10min一般的mdt<30min。
2.6初期故障。一般以软件交付使用后的三个月内为初期故障期。初期故障率的大小取决于软件设计水平、检查项日数、软件规模、软件调试彻底与否等因素。
2.7偶然故障率。一般以软件交付给使用方四个月后为偶然故障期,偶然故障率以每1000h的故障数为单位,它反映了软件处于稳定状态下的质量。一般最少要求偶然故障率不超过1,即每千小时不到1个故障,亦即mtbf超过1000h。
2.8用户提出补充要求数。这反映软件未能充分满足用户的需要,有时要求是特定用户的特定要求,生产方为了更好地为社会服务,应该尽力满足他们的要求。
2.9处理能力。处理能力有各种指标。例如可用每小时平均处理多少文件、每项工作的反应时间多少秒等来表示,根据需要而定。在评价软件及系统的经济效益时需用这项指标。
3、软件可靠性设计方法
从软件可靠性的概念可知,软件的缺陷可以导致错误并造成系统的故障,因此,缺陷是一切错误的根源。软件的错误概括地说可能由规范(要求/规格说明)、软件系统设计及编码过程产生。
3.1要求/规格说明。只要在规格说明与用户要求说明之间存在误差,就会产生规范错误。
规范它不仅规定程序的要求,还规定所用的结构、研制及试验中需要的程序试验要求和文件,以及程序语言、输入和输出的基本要求。通过对这些方面作出适当的规定,就可以建立使产生错误的可能性最小、并保证错误能被发现和改正的程序生成的结构。
这种说明书是软件设计人员和用户间相互了解的基础,是软件设计人员进行程序设计、调试的基础和评价软件的依据。要求/规格说明书应具有以下性质:
(1)可测性:生产出来的软件产品应能根据要求/规格说明书的内容进行测试。(2)完整性:对软件要求的描述要完整无缺。(3)明确性:对软件的要求必须是明确的,不存在语义上的支义性。(4)一致性:要求说明书中的概念与规范化。(5)弹性:当软件的工作环境发生变化时,其功能说明也相应地扩充或压缩。
3.2软件设计。软件系统是根据要求/规格说明(规范)设计的,通过设计将确定程序结构、测试点及限制等。为设计出可靠的软件,需要在考虑诸如机型、资源、语言、模型及数据结构等实际问题的基础上,采取一些有效的设计方法。
3.2.1“自顶向下设计”法。这种设计方法是处理分级问题最有效的设计技术。它是以一个系统功能的最抽象描述开始作为最高层次;从它出发,设计一系列较详细的子系统。由这些子系统来完成员高层次的功能;再以每个子系统为基础,设计出一系列更详细的子系统,等等。
3.2.2结构化程序设计。软件结构论文联盟http://对软件的可靠性具有重要的意义。结构良好的程序易于编写、检查,便于查错定位、修改和维护。结构化程序设计(也称为模块化程序设计)把程序要求分成若干独立的、更小的程序要求或模块化的功能要求,分别提出各自的要求/规格说明,并注明是如何与程序中的其他部分接口,还必须指出所有的输入与输出,以及测试要求。对每一个更小的程序和模块,可分别编程和测试,使得模块间高度分离。
3.2.3容错设计。对软件错误所引起的后果特别严重的情况,如飞机的飞行控制系统、空中交通管制系统、核反应堆安全系统等,需采用容错软件。容错设计的途径有:(1)加强软件的健壮性;使程序设计得能够缓解错误的影响,不致造成诸如死锁或崩溃这样的严重后果,并能指出错误源。(2)采用n(>2)版本编程法:即尽可能用不同的算法与编程语言,经不同的班组编制,以提高各软件版本的独立性。(3)恢复块法:给需要作容错处理的块(基本块)提供备份块,并附加错误检测和恢复措施。
3.3 软件编码。在软件结构设计的基础上就可以进行编码,编码产生的缺陷是软件错误的主要来源。一般的编码错误是:键入错代码;数值错误(尤其是单位不统一时易出这类错误);丢失代码(如括号);用了被零除这样不定值的表达式等。
4、结束语
软件可靠性设计工程是一门虽然得到普遍承认,但还处于不成熟的正在发展确立阶段的新工程学科,任然存在很多问题,需要去探索、研究和解决。本文介绍只在软件可靠性设计方面抛砖引玉,提供借鉴。
上一篇:谈嵌入式系统软件开发技术