软件可靠性介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.屏蔽用户操作错误。
考察对用户常见的误操作的提示和屏蔽情况,例如
可否有效避免日期的录入错误或写入无效的日期。

6.错误提示的准确性。
当用户操作错误或软件发生错误时,能否有准确清
晰的提示,使用户知道造成错误的原因。例如当用 户未输入完有效信息时存盘,系统应当给出关于未 输入项的提示。
软件可靠性的11种检测方法
软件危机的具体体现

6. 软件缺少适当的文档资料 缺乏必要的文档资料或者文档资料不合格, 将给软件开发和维护带来许多严重的困难和问题。 最典型失败系统的例子是: IBM公司开发OS/360系统,共有4000多个模 块,约100万条指令,投入5000人年,耗资数亿 美元,结果还是延期交付。在交付使用后的系统 中仍发现大量(2000个以上)的错误。
之系统化、规范化、一体化,这样就可以避免许多人为错误,以提 高软件可靠性。
影响软件可靠性的因素

7、软件开发人员能力和经验
软件开发人员(包括测试人员)的能力愈强,经验愈丰富,所犯错误
便可能愈少,所得软件产品质量愈高,相应的可靠性也愈高。

8、软件开发方法
软件工程表明,开发方法对软件可靠性有显著影响。
影响软件可靠性的因素

1、运行环境(剖面)
同一软件在不同运行剖面下,其可靠性行为可能极不相同。 软件故障是软件缺陷在一定输入情况下被激活的结果. 假设软件输入域划分为两个部分:G和F:运行剖面不包含F中的输
入,则软件不会出现故障,其可靠性恒为l。反之,如果运行剖面 不包含G中的输入,则每一输入情况下均出现故障,如果没有容错 措施,则R=0。
软件危机的提出
1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,第一次讨论软件危机问题。 会上提出,软件危机的主要问题之一就是软件可 靠性低,经常出故障。 会上正式提出“软件工程”一词,从此一门新兴 的工程学科——软件工程学——为研究和克服软 件危机应运而生。

软件危机的形成原因
用白盒法,集成测试、系统测试则采用黑盒法)
(二)软件复用
现有的成熟软件,已经过严格的运行检测,大 量的错误已在开发、运行和维护过程中排除, 可靠性相对较高。 最大限度地重用现有的成熟软件,不仅能缩短 开发周期,提高开发效率,也能提高软件的可 维护性和可靠性。 软件重用不仅仅是指软件本身,也可以是软件 的开发思想方法、文档,甚至环境、数据等。
软件危机的背景


20 世纪60年代以前,计算机刚刚投入实际使用,软件设计往 往只是为了一个特定的应用而在指定的计算机上设计和编制, 采用密切依赖于计算机的机器代码或汇编语言;软件的规模 比较小,文档资料通常也不存在,很少使用系统化的开发方 法;设计软件往往等同于编制程序,基本上是个人设计、个 人使用、个人操作、自给自足的私人化的软件生产方式。 60年代中期,大容量、高速度计算机的出现,使计算机的应 用范围迅速扩大,软件开发急剧增长。高级语言开始出现; 操作系统的发展引起了计算机应用方式的变化;大量数据处 理导致第一代数据库管理系统的诞生。软件系统的规模越来 越大,复杂程度越来越高,软件可靠性问题也越来越突出。 原来的个人设计、个人使用的方式不再能满足要求,迫切需 要改变软件生产方式,提高软件生产率,软件危机开始爆发 。
2002年11月28日,欧洲的亚里安娜5型火箭因发动 机控制系统软件的错误而导致飞行试验失败。


事故原因分析
据统计,计算机系统中,由于软件错误引起的故障 占所有故障的65%。 美国贝尔(Bell)实验室曾对一个AT&T运行支持系 统作了统计,发现80%的故障与软件有关。 究其原因是软件太复杂了,一个小小的程序,其可 能的路径可以是天文数字,以致于在软件开发过程 中难以对其作穷尽的测试,或者说难于完全排除软 件缺陷。
A c d e g f j h i k l ≥ 20 次
m B
软件与硬件可靠性的区别
硬件 故障机理 复杂性 老化损耗 内部逻辑较为简单 软件 残留缺陷在一定环境下造成的 软件错误 内部逻辑高度复杂,这就在很 大程度上决定了设计错误是导 致软件故障的主要原因 软件是唯一的,软件拷贝不改 变软件本身
唯一性

软件危机的具体体现

1. 软件开发进度难以预测 拖延工期几个月甚至几年的现象并不罕见, 这种现象降低了软件开发组织的信誉。
以丹佛新国际机场为例: 该机场规模是曼哈顿机场的两倍,宽为希思机场的 10倍,可以全天侯同时起降三架喷气式客机;投资1.93 亿美元建立了一个地下行李传送系统,总长21英里,有 4000台遥控车,可按不同线路在20家不同的航空公司柜 台、登机门和行李领取处之间发送和传递行李;支持该 系统的是5000个电子眼、400台无线电接受机、56台条形 码扫描仪和100台计算机。按原定计划要在1993年万圣节 前启用,但一直到1994年6月,机场的计划者还无法预测 行李系统何时能达到可使机场开放的稳定程度。
软件可靠性介绍
目 录
一、软件危机介绍 二、软件可靠性概述 三、软件可靠性的检测方法 四、提高软件可靠性的方法
一、软件危机介绍
什么是软件危机
软件危机(software
crisis),是指落 后的软件生产方式无法满足迅速增长的计 算机软件需求,从而导致软件开发与维护 过程中出现一系列严重问题的现象。
任何两个硬件不可能绝对 相同
可靠性的核心
纠错维护方法 可靠性检验标 准化 产品市场 错误性质
内部元部件
修复或更换失效的元部件 已标准化且有一整套完整 的理论 已有成熟的产品市场 一些瞬间的硬件错误可能 会被误认为是软件错误
设计者的思维和软件的复杂性
重设计 仍未建立,更没有完整的理论 体系 产品市场还很新 软件错误是永恒的,可重现的

软件故障
软件可靠性
软件故障的特点
激活软件 缺陷的数据 输入域
软件缺陷
软件
不可接受的结果 (软件故障) 输出域
举例——由于软件故障造成的重大事故

美国空军的范登堡中心在60年代后期发生过多次导 弹试射失败的事故,事后发现几乎都是由软件错误 造成的;

我国某型号飞机首飞前航空电子系统在地面测试中 测出的故障共800多个,其中软件故障就达600多个, 约占75%; 美国的Therac-25放射性治疗仪由于软件存在缺陷 导致几个癌症病人受到非常严重的过量放射性治疗, 其中4个人因此死亡;

3、软件内部结构
结构越复杂,软件复杂度越高,内含缺陷ห้องสมุดไป่ตู้越大,因而软件可靠度
越低。

4、软件可靠性设计技术
一般是指软件设计阶段中采用的用以保证和提高软件可靠性为主要
目标的软件技术。

5、软件可靠性测试
研究表明,软件测试方法与资源投入对软件可靠性有不可忽视的影
响。

6、软件可靠性管理
软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动,使
软件危机的具体体现

2. 软件开发成本难以控制 投资一再追加,令人难于臵信。往往是实际 成本比预算成本高出一个数量级。而为了赶进度 和节约成本所采取的一些权宜之计又往往损害了 软件产品的质量,从而不可避免地会引起用户的 不满。
软件危机的具体体现

3. 用户对产品功能难以满足 开发人员和用户之间很难沟通、矛盾很难统 一。往往是软件开发人员不能真正了解用户的需 求,而用户又不了解计算机求解问题的模式和能 力,双方无法用共同熟悉的语言进行交流和描述。 在双方互不充分了解的情况下,就仓促上阵 设计系统、匆忙着手编写程序,这种“闭门造车” 的开发方式必然导致最终的产品不符合用户的实 际需要。

(三)建立以可靠性为核心的质量标准
在软件项目规划和需求分析阶段就要建立以可靠性 为核心的质量标准、制定质量标准度量。 质量标准度量包括:

需求分析质量度量。需求分析定义是否完整、准确(有

2.用户和密码封闭性。
软件对用户名和密码有无校验,有无保护措施,尤
其对密码有无屏蔽功能。

3.系统对用户错误登录的次数限制。
软件对用户错误登录有无次数限制,一般做法是连
续三次登录失败就退出系统。
软件可靠性的11种检测方法

4.留痕功能。
软件是否提供操作日志,比如某用户登录的时间,
查询、修改或删除的动作以及离开的时间等。

9.输入数据有效性检查。
当用户输入的数据有错时,软件应能判断数据的有
效性,避免无效数据的生成。
软件可靠性的11种检测方法

10.异常情况的影响。
在程序运行过程中进行掉电等试验,考查数据和系
统的受影响程度;若受损,是否提供补救工具,补 救的情况如何。

11.网络故障对系统的影响。
当网络中断连接时,是否会造成数据的丢失。
四、提高软件可靠性的方法
(一)加强测试
软件测试是保证软件可靠性的重要手段 测试前要确定测试标准、规范,测试过程中要 建立完整的测试文档,把软件臵于配臵控制下, 用形式化的步骤去改变它,保证任何错误及对 错误的动作都能及时归档。 测试方法:

静态测试:代码走查;静态分析工具
动态测试:白盒测试;黑盒测试(单元测试尽量采
与非结构化方法比较,结构化方法可以明显减少软件缺陷数。

9、软件开发环境
研究表明,程序语言、软件开发环境影响软件的可靠性,而软件测
试工具的优劣则影响可靠性测试结果。
三、软件可靠性的检测方法
软件可靠性的11种检测方法

1.用户权限限制。
软件是否按功能模块划分用户权限,权限划分是否
合理,考察超级用户对各个用户的权限管理是否合 理,包括修改用户的登录资料等。

2、软件规模
随着软件规模的增大,软件可靠性问题愈显突出。在我们考虑软件
可靠性问题时,软件一般是指中型以上软件(4000-5000条以上语 句),这时可靠性问题难以对付。 软件工程实践的一个侧面可以反映这一点,即单元测试一般由编程 人员本人进行,而综合测试则需独立的测试人员。
影响软件可靠性的因素

7.错误是否导致系统异常退出。
考察软件运行的稳定性,当软件发生一般错误或严
重错误时,软件是否会自动退出。

8.数据备份与恢复手段。
主要针对有数据存储需要的软件,有的软件依靠数
据库操作系统本身的备份与恢复机制,这需要用户 具备一定的操作知识;好的软件会提供备份与恢复 的操作,不需要用户直接对数据库系统进行操作。
硬件生产率大幅提高 软件规模增大,复杂度增大

以美国宇航局的软件系统为例: 1963年 水星计划系统 200万条指令 1967年 双子星座计划系统 400万条指令 1973年 阿波罗计划系统 1000万条指令 1979年 哥伦比亚航天飞机系统 4000万条指令
软件生产率很低 硬、软件供需失衡
二、软件可靠性概述
软件可靠性定义
“在规定的条件下,在规定的时间内,软件不引起 失效的概率”。 规定的条件:

软件运行的软、硬件环境
软件操作剖面:软件运行的输入空间及其概率分布

规定的时间:
日历时间 时钟时间 执行时间
软件可靠性问题的提出
1968年在联邦德国召开的北大西洋公约组织国际 软件工程会议上提出的“软件危机”的主要问题 之一,就是软件可靠性低,经常出故障。 从那时起,业界才开始认识到软件可靠性的重要 性。

调用路径太多
其中每个结点或圆圈代表一段 可能以转移语句结束的顺序执 行语句,每条弧代表两段程序 间的控制转移。程序含有一个 最少重复20次的循环语句。由 于有5条贯穿循环体的路径,即 c→d→e→f→h→m; c→d→e→f→i→m; c→d→e→g→j→m; c→d→e→g→k→m; c→d→l→m,那么从 点A到点 B的所有独立路径数为520 +519 +…+5,约为1014 或1016亿。
软件危机的具体体现

4. 软件产品质量无法保证 系统中的错误难以消除。软件是逻辑产品, 质量问题很难以统一的标准度量,因而造成质量 控制困难。 软件产品并不是没有错误,而是盲目检测很 难发现错误,而隐藏下来的错误往往是造成重大 事故的隐患。
软件危机的具体体现

5. 软件产品难以维护 软件产品本质上是开发人员的代码化的逻辑 思维活动,他人难以替代。除非是开发者本人, 否则很难及时检测、排除系统故障。 为使系统适应新的硬件环境,或根据用户的 需要在原系统中增加一些新的功能,又有可能增 加系统中的错误。
相关文档
最新文档