background image

用方对说明理解不深,操作不熟练,但也有可能是说明没有讲得很清楚而引起误解。

 

  

2.9 用户提出补充要求数。这反映软件未能充分满足用户的需要,有时要求是特定用户

的特定要求,生产方为了更好地为社会服务,应该尽力满足他们的要求。

 

  

2.10 处理能力。处理能力有各种指标。例如可用每小时平均处理多少文件、每项工作的反

应时间多少秒等来表示,根据需要而定。在评价软件及系统的经济效益时需用这项指标。

 

  

3 软件可靠性设计方法 

  从软件可靠性的概念可知,软件的缺陷可以导致错误并造成系统的故障,因此,缺陷
是一切错误的根源。软件的缺陷来自软件寿命周期的各个阶段,因此应想方设法在寿命周期
的各个阶段减少缺陷。缺陷在一定的环境条件下暴露,导致系统运行中出现错误。软件的错
误概括地说可能由规范(要求

/规格说明)、软件系统设计及编码过程产生。 

  

3.1 要求/规格说明 

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

 

  

3.2 软件设计 

  软件系统是根据要求

/规格说明(规范)设计的,通过设计将确定程序结构、测试点及

限制等。为设计出可靠的软件,需要在考虑诸如机型、资源、语言、模型及数据结构等实际问
题的基础上,采取一些有效的设计方法。

 

  

3.2.1 

“自顶向下设计”法。这种设计方法是处理分级问题最有效的设计技术。它是以一个

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

 

  

3.2.2 结构化程序设计。软件结构对软件的可靠性具有重要的意义。结构良好的程序易于

编写、检查,便于查错定位、修改和维护。结构化程序设计把程序要求分成若干独立的、更小
的程序要求或模块化的功能要求,分别提出各自的要求

/规格说明,并注明是如何与程序中

的其他部分接口,还必须指出所有的输入与输出,以及测试要求。对每一个更小的程序和模
块,可分别编程和测试,使得模块间高度分离。

 

  

3.2.3 容错设计。对软件错误所引起的后果特别严重的情况,如飞机的飞行控制系统、空

中交通管制系统、核反应堆安全系统等,需采用容错软件。容错设计的途径有:(

1)加强软

件的健壮性;使程序设计得能够缓解错误的影响,不致造成诸如死锁或崩溃这样的严重后
果,并能指出错误源。(

2)采用 N(>2)版本编程法:即尽可能用不同的算法与编程语言,

经不同的班组编制,以提高各软件版本的独立性。这

N 个软件版本同时在 N 台计算机上运

行,各计算机间能进行高效通信,并作出快速比较,当结果不一致时,按多数表决或预定
的策略选择输出。(

3)恢复块法:给需要作容错处理的块(基本块)提供备份块,并附加

错误检测和恢复措施。

 

  

3.3 软件编码 

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