软件可靠介绍.ppt_第1页
软件可靠介绍.ppt_第2页
软件可靠介绍.ppt_第3页
软件可靠介绍.ppt_第4页
软件可靠介绍.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件可靠性介绍 目录 一 软件危机介绍二 软件可靠性概述三 软件可靠性的检测方法四 提高软件可靠性的方法 一 软件危机介绍 什么是软件危机 软件危机 softwarecrisis 是指落后的软件生产方式无法满足迅速增长的计算机软件需求 从而导致软件开发与维护过程中出现一系列严重问题的现象 软件危机的背景 20世纪60年代以前 计算机刚刚投入实际使用 软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制 采用密切依赖于计算机的机器代码或汇编语言 软件的规模比较小 文档资料通常也不存在 很少使用系统化的开发方法 设计软件往往等同于编制程序 基本上是个人设计 个人使用 个人操作 自给自足的私人化的软件生产方式 60年代中期 大容量 高速度计算机的出现 使计算机的应用范围迅速扩大 软件开发急剧增长 高级语言开始出现 操作系统的发展引起了计算机应用方式的变化 大量数据处理导致第一代数据库管理系统的诞生 软件系统的规模越来越大 复杂程度越来越高 软件可靠性问题也越来越突出 原来的个人设计 个人使用的方式不再能满足要求 迫切需要改变软件生产方式 提高软件生产率 软件危机开始爆发 软件危机的提出 1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议 第一次讨论软件危机问题 会上提出 软件危机的主要问题之一就是软件可靠性低 经常出故障 会上正式提出 软件工程 一词 从此一门新兴的工程学科 软件工程学 为研究和克服软件危机应运而生 软件危机的形成原因 硬件生产率大幅提高软件规模增大 复杂度增大以美国宇航局的软件系统为例 1963年水星计划系统200万条指令1967年双子星座计划系统400万条指令1973年阿波罗计划系统1000万条指令1979年哥伦比亚航天飞机系统4000万条指令软件生产率很低硬 软件供需失衡 软件危机的具体体现 1 软件开发进度难以预测拖延工期几个月甚至几年的现象并不罕见 这种现象降低了软件开发组织的信誉 以丹佛新国际机场为例 该机场规模是曼哈顿机场的两倍 宽为希思机场的10倍 可以全天侯同时起降三架喷气式客机 投资1 93亿美元建立了一个地下行李传送系统 总长21英里 有4000台遥控车 可按不同线路在20家不同的航空公司柜台 登机门和行李领取处之间发送和传递行李 支持该系统的是5000个电子眼 400台无线电接受机 56台条形码扫描仪和100台计算机 按原定计划要在1993年万圣节前启用 但一直到1994年6月 机场的计划者还无法预测行李系统何时能达到可使机场开放的稳定程度 软件危机的具体体现 2 软件开发成本难以控制投资一再追加 令人难于置信 往往是实际成本比预算成本高出一个数量级 而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量 从而不可避免地会引起用户的不满 软件危机的具体体现 3 用户对产品功能难以满足开发人员和用户之间很难沟通 矛盾很难统一 往往是软件开发人员不能真正了解用户的需求 而用户又不了解计算机求解问题的模式和能力 双方无法用共同熟悉的语言进行交流和描述 在双方互不充分了解的情况下 就仓促上阵设计系统 匆忙着手编写程序 这种 闭门造车 的开发方式必然导致最终的产品不符合用户的实际需要 软件危机的具体体现 4 软件产品质量无法保证系统中的错误难以消除 软件是逻辑产品 质量问题很难以统一的标准度量 因而造成质量控制困难 软件产品并不是没有错误 而是盲目检测很难发现错误 而隐藏下来的错误往往是造成重大事故的隐患 软件危机的具体体现 5 软件产品难以维护软件产品本质上是开发人员的代码化的逻辑思维活动 他人难以替代 除非是开发者本人 否则很难及时检测 排除系统故障 为使系统适应新的硬件环境 或根据用户的需要在原系统中增加一些新的功能 又有可能增加系统中的错误 软件危机的具体体现 6 软件缺少适当的文档资料缺乏必要的文档资料或者文档资料不合格 将给软件开发和维护带来许多严重的困难和问题 最典型失败系统的例子是 IBM公司开发OS 360系统 共有4000多个模块 约100万条指令 投入5000人年 耗资数亿美元 结果还是延期交付 在交付使用后的系统中仍发现大量 2000个以上 的错误 二 软件可靠性概述 软件可靠性定义 在规定的条件下 在规定的时间内 软件不引起失效的概率 规定的条件 软件运行的软 硬件环境软件操作剖面 软件运行的输入空间及其概率分布规定的时间 日历时间时钟时间执行时间 软件可靠性问题的提出 1968年在联邦德国召开的北大西洋公约组织国际软件工程会议上提出的 软件危机 的主要问题之一 就是软件可靠性低 经常出故障 从那时起 业界才开始认识到软件可靠性的重要性 软件故障 软件可靠性 软件故障的特点 举例 由于软件故障造成的重大事故 美国空军的范登堡中心在60年代后期发生过多次导弹试射失败的事故 事后发现几乎都是由软件错误造成的 我国某型号飞机首飞前航空电子系统在地面测试中测出的故障共800多个 其中软件故障就达600多个 约占75 美国的Therac 25放射性治疗仪由于软件存在缺陷导致几个癌症病人受到非常严重的过量放射性治疗 其中4个人因此死亡 2002年11月28日 欧洲的亚里安娜5型火箭因发动机控制系统软件的错误而导致飞行试验失败 事故原因分析 据统计 计算机系统中 由于软件错误引起的故障占所有故障的65 美国贝尔 Bell 实验室曾对一个AT T运行支持系统作了统计 发现80 的故障与软件有关 究其原因是软件太复杂了 一个小小的程序 其可能的路径可以是天文数字 以致于在软件开发过程中难以对其作穷尽的测试 或者说难于完全排除软件缺陷 调用路径太多 其中每个结点或圆圈代表一段可能以转移语句结束的顺序执行语句 每条弧代表两段程序间的控制转移 程序含有一个最少重复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亿 软件与硬件可靠性的区别 影响软件可靠性的因素 1 运行环境 剖面 同一软件在不同运行剖面下 其可靠性行为可能极不相同 软件故障是软件缺陷在一定输入情况下被激活的结果 假设软件输入域划分为两个部分 G和F 运行剖面不包含F中的输入 则软件不会出现故障 其可靠性恒为l 反之 如果运行剖面不包含G中的输入 则每一输入情况下均出现故障 如果没有容错措施 则R 0 2 软件规模随着软件规模的增大 软件可靠性问题愈显突出 在我们考虑软件可靠性问题时 软件一般是指中型以上软件 4000 5000条以上语句 这时可靠性问题难以对付 软件工程实践的一个侧面可以反映这一点 即单元测试一般由编程人员本人进行 而综合测试则需独立的测试人员 影响软件可靠性的因素 3 软件内部结构结构越复杂 软件复杂度越高 内含缺陷数越大 因而软件可靠度越低 4 软件可靠性设计技术一般是指软件设计阶段中采用的用以保证和提高软件可靠性为主要目标的软件技术 5 软件可靠性测试研究表明 软件测试方法与资源投入对软件可靠性有不可忽视的影响 6 软件可靠性管理软件可靠性管理旨在系统管理软件生存期各阶段的可靠性活动 使之系统化 规范化 一体化 这样就可以避免许多人为错误 以提高软件可靠性 影响软件可靠性的因素 7 软件开发人员能力和经验软件开发人员 包括测试人员 的能力愈强 经验愈丰富 所犯错误便可能愈少 所得软件产品质量愈高 相应的可靠性也愈高 8 软件开发方法软件工程表明 开发方法对软件可靠性有显著影响 与非结构化方法比较 结构化方法可以明显减少软件缺陷数 9 软件开发环境研究表明 程序语言 软件开发环境影响软件的可靠性 而软件测试工具的优劣则影响可靠性测试结果 三 软件可靠性的检测方法 软件可靠性的11种检测方法 1 用户权限限制 软件是否按功能模块划分用户权限 权限划分是否合理 考察超级用户对各个用户的权限管理是否合理 包括修改用户的登录资料等 2 用户和密码封闭性 软件对用户名和密码有无校验 有无保护措施 尤其对密码有无屏蔽功能 3 系统对用户错误登录的次数限制 软件对用户错误登录有无次数限制 一般做法是连续三次登录失败就退出系统 软件可靠性的11种检测方法 4 留痕功能 软件是否提供操作日志 比如某用户登录的时间 查询 修改或删除的动作以及离开的时间等 5 屏蔽用户操作错误 考察对用户常见的误操作的提示和屏蔽情况 例如可否有效避免日期的录入错误或写入无效的日期 6 错误提示的准确性 当用户操作错误或软件发生错误时 能否有准确清晰的提示 使用户知道造成错误的原因 例如当用户未输入完有效信息时存盘 系统应当给出关于未输入项的提示 软件可靠性的11种检测方法 7 错误是否导致系统异常退出 考察软件运行的稳定性 当软件发生一般错误或严重错误时 软件是否会自动退出 8 数据备份与恢复手段 主要针对有数据存储需要的软件 有的软件依靠数据库操作系统本身的备份与恢复机制 这需要用户具备一定的操作知识 好的软件会提供备份与恢复的操作 不需要用户直接对数据库系统进行操作 9 输入数据有效性检查 当用户输入的数据有错时 软件应能判断数据的有效性 避免无效数据的生成 软件可靠性的11种检测方法 10 异常情况的影响 在程序运行过程中进行掉电等试验 考查数据和系统的受影响程度 若受损 是否提供补救工具 补救的情况如何 11 网络故障对系统的影响 当网络中断连接时 是否会造成数据的丢失 四 提高软件可靠性的方法 一 加强测试 软件测试是保证软件可靠性的重要手段测试前要确定测试标准 规范 测试过程中要建立完整的测试文档 把软件置于配置控制下 用形式化的步骤去改变它 保证任何错误及对错误的动作都能及时归档 测试方法 静态测试 代码走查 静态分析工具动态测试 白盒测试 黑盒测试 单元测试尽量采用白盒法 集成测试 系统测试则采用黑盒法 二 软件复用 现有的成熟软件 已经过严格的运行检测 大量的错误已在开发 运行和维护过程中排除 可靠性相对较高 最大限度地重用现有的成熟软件 不仅能缩短开发周期 提高开发效率 也能提高软件的可维护性和可靠性 软件重用不仅仅是指软件本身 也可以是软件的开发思想方法 文档 甚至环境 数据等 三 建立以可靠性为核心的质量标准 在软件项目规划和需求分析阶段就要建立以可靠性为核心的质量标准 制定质量标准度量 质量标准度量包括 需求分析质量度量 需求分析定义是否完整 准确 有无二义性 开发者和用户间有没有理解不同的情况 文档完成情况等 要有明确的可靠性需求目标 分析设计及可靠性治理措施等 设计结果质量度量 设计工时 程序容量和可读性 可理解性 测试情况数 评价结果 文档完成情况等 测试结果质量度量 测试过程中差错状况 差错数量 差错检出率及残存差错数 差错影响评价 文档等 以及有关非法输入的处理度量 验收结果质量度量 包括完成的功能数量 各项性能指标 可靠性等 四 采用合适的软件开发方法和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论