- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件可靠性与安全性转训材料讲述
2
对高质量软件的需求
软件应用广泛, 在许多领域已成为产品创新的源泉
软件使系统更加智能、灵活, 越来越多的系统能力由软件实现
系统对软件的需求和依赖, 使得软件既要满足用户的功能要求, 又必须稳定可靠地完成赋予的任务
在许多应用场景下, 软件失效有可能带来重大损失, 安全性必须得到保证
3
软件的质量状况
硬件飞速发展, 越来越可靠, 软件成为系统失效的主要原因
软件规模和复杂性持续增加, 给获得安全可靠的软件带来巨大挑战
软件质量的定量评估困难, 往往成为项目要素中最容易被忽略的部分
经济性使得相关各方都在考虑成本, 在资源受限的情况下, 质量的要求会降低, 常常不得不在带有许多缺陷的情况下发布软件
4
软件质量
明确声明的功能和性能需求、明确文档化的开发标准、以及专业开发人员开发的软件所应具有的所有隐含特征都得到满足
软件质量模型是多样的
软件质量模型是动态的
软件质量是多维度的
软件质量是多视角的
软件质量特性之间存在交互影响
5
动态的软件质量
软件质量的关键特性
6
软件失效机理
导致软件失效的缺陷主要是设计问题
老化/磨损不会导致软件失效, 软件失效没有趋势性预兆
周期性的重启可帮助防止/修复一些软件失效
除非输入(指令、数据、运行环境)发生变化,否则, 运行时间的长短不会对软件可靠性产生影响
除非影响到软件的输入(指令、数据、运行环境), 否则, 物理环境因素的变化不会对软件可靠性产生影响
通常, 不能通过对单条语句的分析来预计软件失效率
软件的接口完全是概念上的、不可见的, 但对软件可靠性有影响
标准件可用于改善可靠性和可维护性, 但软件重用还没有形成工程趋势
硬件维修使其恢复到良好状态, 而软件修改使其到达未知状态
7
使用环境对失效的影响
软件缺陷只有被遇到时才会产生故障, 才有可能导致失效, 不同使用方式下, 对软件可靠性的感受是不一样的决定软件使用方式的因素很多
内部参数、历史数据、当前输入、……
软件失效状态受到操作及环境条件的影响
软件不会脱离环境运行
软件失效对系统的影响程度取决于使用环境, 在某个环境中是安全的软件, 可能在另一个环境中就不安全了
软件失效的统计特性
IBM关于缺陷与失效的统计研究数据
客户所看到的57%以上的失效是由占缺陷总数2%以下的缺陷引起的
超过总数61%的缺陷只引起低于3%的客户将会经历的失效
不同的缺陷在所引发的失效率上存在高达4个数量级的巨大差异
8
软件缺陷的特性及影响
变异的预期常常产生缺陷
在实际项目中, 完全消除缺陷是不可能的, 基于软件开发经济学的考虑, 减少缺陷是现实的选择
缺陷有可能非常简单, 也有可能极其复杂
程序设计语言与缺陷的复杂性和数量的关系是未知的
不论人的能力和背景, 都可能产生缺陷
缺陷在软件中的位置未知
软件缺陷的影响
缺陷可能导致故障, 甚至失效
同样的缺陷在不同的场景下导致的失效状态可能会有很大的差别, 可能只是使用不便, 也有可能带来灾难性后果
缺陷的复杂度与失效的严重性之间的关系是未知的
最大限度的减少缺陷, 可以提高软件的可靠性
缺陷除了带来失效损失之外, 还带来开发、验证和维护成本的全面增加
9
软件防错策略
第一次就做正确(Do It Right the First Time)
建立先进的理念, 避免错误及预防失误
采取适当的实践, 形成缺陷预防的趋势
利用一切可用的方法及工具, 确保不引入缺陷到软件
典型实践
建立组织级别的规范和指南, 全体人员共同遵守
用户的早期参与
进行专业分工, 使用有能力、经验及进取心的人员
在生命周期各阶段, 使用现代的方法论和自动化工具, 促进生产力提升的同时及达到预定质量的目标
10
软件排错策略
尽早检测, 一旦可行立即修正(Detect It Early; Fix It as Soon as Practicable)
测试及修复成为计划性和经常性活动, 对缺陷进行早期检测及消除, 使得缺陷一旦产生就立刻解决
修正系统缺陷时, 应考虑问题的严重程度、发生频率及完成测试及管理的可能性
在操作和维护阶段发现的缺陷, 不一定要立即修正
典型实践举例
在生命周期各阶段, 对软件进行原型化、仿真、审查和检查, 验证正确性, 改善可靠性
尽早开展多层次的测试工作, 发现并消除缺陷和隐患
优先解决最高风险的问题, 加强配置管理, 防止变更失控
建立并运行软件故障报告、分析及纠正措施系统, 做好软件故障管理
11
可靠性问题的答案在哪里?
你的软件可靠吗?
你是如何知道的?
不可靠的原因是什么?
你的开发过程需要改进吗?
你的测试过程需要改进吗?
12
软件失效管理
利用“信息反馈, 闭环控制”的原理, 通过一套规范化的程序, 使分散发生的产品失效能得到及时报告、查清原因、正确纠正, 防止失效再现
文档评论(0)