MindMap
mindmap
root((软件可靠性))
软件可靠性建模
软件可靠性建模
软件可靠性管理
软件可靠性设计
软件可靠性评价
软件可靠性测试
软件可靠性概念
软件可靠性是指在规定的时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在的缺陷函数;系统输入将确定是否会遇到已存在的缺陷
软件可靠性的定量描述
软件的可靠性是在软件使用条件、在规定时间内、系统的输入/输出、系统使用等变量构成的数学表达式
- 规定时间:自然时间|运行时间|执行时间
- 失效概率:出现失效的概率是一个随机函数,成为失效概率
- 可靠度:在软件规定条件下,规定时间内不失效的概率
- 失效强度:单位时间内软件失效的概率
- 失效率
- 平均无效时间
可靠性的目标
软件可靠性是指用户对所使用的软件的性能满意程度的期望。可以用可靠度、平均失效时间和故障强度等来描述
软件可靠性建模
软件可靠性管理
软件可靠性管理的各阶段如下:
graph LR
A[需求分析阶段] --> B[概要设计]
B --> C[详细设计]
C --> D[编码]
D --> E[测试]
E --> F[实施]
软件可靠性设计
可靠性设计其实就是在常规的软件设计中,应用各种方法和技术,使程序设计在兼顾用户的功能和性能需求的同时,全面满足软件的可靠性要求。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制
软件可靠性设计的技术种类
- 容错设计技术
- 恢复块设计
- N 版本程序设计
- 冗余设计
- 检错技术
- 降低复杂度设计
- 系统配置技术
- 双机热备技术
- 采用“心跳”方法保证主系统与备用系统的联系
- 根据两台服务器的工作方式分为
- 双机热备模式(一台工作,一台后备)
- 双机互备模式(两台运行相对独立应用,互为后备)
- 双机双工模式(两台同时运行相同应用,互为后备)
- 服务器集群技术
- 集群内各节点服务器通过内部局域网相互通信,若某节点服务器发生故障,这台服务器运行的应用被另一节点服务器自动接管
- 双机热备技术
软件可靠性设计原则
-
软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突
-
软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标
-
软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑
软件可靠性评价
软件可靠性评价概念
评估和预测软件可靠性过程包括
- 选择可靠性模型
- 收集可靠性数据
- 可靠性评估和预测
如何选择可靠性模型
- 模型假设的适用性
- 预测的能力与质量
- 模型输出值能否满足可靠性的评价需求
- 模型使用的简便性
可靠性数据的收集
- 尽可能早地确定可靠性模型
- 数据收集计划要有较强的可操作性
- 重视测试数据的分析和整理
- 充分利用技术手段(数据库技术)来完成分析和统计
软件可靠性的评估和预测
目的:是评估软件系统的可靠性状况和预测将来一段时间的可靠性水平
评估和预测以软件可靠性模型分析为主,以失效数据的图形分析法和试探性数据分析技术等为辅
软件可靠性测试
软件可靠性测试包括的种类
- 可靠性目标的确定
- 运行剖面的开发
- 测试用例的设计
- 测试实施
- 测试结果分析
测试用例的组成
- 测试用例标识
- 被测对象
- 测试环境及条件
- 测试输入
- 操作步骤
- 预期输出
- 判断输出结果是否符合标准
- 测试对象的特殊需求
用时间定义的软件可靠性数据的分类
- 失效时间数据
- 失效间隔时间数据
- 分组时间内的失效数
- 分组时间的累积失效数
软件测试工具
测试工具根据工作原理不同可分为静态测试工具
和动态测试工具
静态测试工具:是对代码进行语法扫描,找到不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。它直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件,静态测试工具可用于对软件需求、结构设计、详细设计和代码进行评审、走审和审查,也可用于对软件的复杂度分析、数据流分析、控制流分析和接口分析提供支持;
动态测试工具与静态测试工具不同,它需要运行被测试系统,并设置探针,向代码生成的可执行文件中插入检测代码,可用于软件的覆盖分析和性能分析,也可用于软件的模拟、建模、仿真测试和变异测试等。
软件测试分类
软件测试一般分为两个大类:动态测试和静态测试
动态测试是指通过运行程序发现错误
包括黑盒测试法(等价类划分、边界值分析、错误推测、因果图)、白盒测试法(逻辑覆盖、循环覆盖、基本路径法)和灰盒测试法等
静态测试是采用人工和计算机辅助静态分析的手段对程序进行检测
包括桌前检査、代码审查和代码走查
软件集成测试
软件集成测试也称为组装测试、联合测试(对于子系统而言,则称为部件测试)
它将已通过单元测试的模块集成在一起,主要测试模块之间的协作性。从组装策略而言,可以分为一次性组装测试
和增量式组装(包括自顶向下、自底向上及混合式)
两种。集成测试计划通常是在软件概要设计阶段
完成的,集成测试一般采用黑盒测试方法
。