当前位置: 首页 > article >正文

系统架构设计师—系统架构设计篇—软件可靠性

文章目录

  • 软件可靠性的定义
  • 软件可靠性定量描述
    • 可靠度
    • 失效强度
    • 平均失效前时间
    • 平均恢复前时间
    • 平均故障间隔时间
  • 可靠性测试
    • 广义的可靠性测试
    • 狭义的可靠性测试
    • 可靠性测试的目的
  • 影响软件可靠性的因素
  • 软件可靠性的建模方法
    • 可靠性模型的组成
    • 好的可靠性模型
    • 可靠性模型分类
  • 软件可靠性管理
    • 需求分析阶段
    • 概要设计阶段
    • 详细设计阶段
    • 编码阶段
    • 测试阶段
    • 实施阶段
  • 容错技术
    • N版本程序设计
    • 恢复块设计
    • 冗余设计
  • 检错技术
  • 系统配置技术
  • 软件可靠性测试
  • 软件可靠性评价
    • 可靠性评价过程
      • 选择可靠性模型
      • 收集可靠性数据
      • 可靠性评估和预测

软件可靠性的定义

软件可靠性(Software Reliability)是软件产品在规定的条件下规定的时间区间完成规定功能的能力

软硬件可靠性的不同点:

  • 复杂性
    • 软件失效可能性大于硬件
  • 物理退化
    • 硬件有物理退化,软件没有
  • 唯一性
    • 软件唯一,硬件不唯一
  • 版本更新快
    • 软件更新比硬件快

软件可靠性定量描述

可靠度

软件规定的条件下、规定的时间内不发生失效的概率

失效强度

单位时间软件系统出现失效的概率

平均失效前时间

Mean Time To Failure,MTTF:从t=0时,到故障发生时,系统的持续运行时间的期望值,不包括老化失效。

平均恢复前时间

Mean TIme To Restoration,MTTR:从出现故障到修复成功的一段时间。

平均故障间隔时间

Mean Time Between Failures,MTBF:失效或维护中所需的平均时间,包括故障时间以及检测和维护设备的时间。

MTBF = MTTF + MTTR

在这里插入图片描述

可靠性测试

广义的可靠性测试

为了最终评价软件系统的可靠性而运用建模、统计、实验、分析和评价等一系列手段对软件系统实施的一种测试。

在这里插入图片描述

狭义的可靠性测试

为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。

可靠性测试的目的

  1. 发现软件系统的缺陷
    1. 需求分析
    2. 软件设计
    3. 系统编码
    4. 测试实施
  2. 为软件的使用和维护提供可靠性依据
  3. 确认软件是否达到可靠性的定量要求

影响软件可靠性的因素

  • 运行环境
  • 软件规模
  • 软件的内部结构
  • 软件的开发方法和开发环境
  • 软件的可靠性投入

软件可靠性的建模方法

可靠性模型的组成

  1. 模型的假设
    1. 代表性假设
    2. 独立性假设
    3. 相同性假设
  2. 性能度量
  3. 参数估计方法
  4. 数据要求

好的可靠性模型

  • 基于可靠的假设
  • 简单
  • 计算一些有用的量
  • 给出未来失效行为的好的映射
  • 可广泛应用

可靠性模型分类

模型特点
种子法模型预先在程序中播种错误“种子”,根据测试找出错误以及估计残留错误数量。
失效率类模型用来研究程序的失效率。
曲线拟合类模型用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间,包括参数方法和非参数方法两种。
可靠性增长模型预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程。
程序结构分析模型根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络。
输入域分类模型选取软件输入域中的某些样本“点”运行程序,根据这些样本点在“实际”使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。
执行路径分析方法模型先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性。
非其次泊松过程模型以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某种使用时间点的累计失效数。
马尔科夫过程模型用于预测未来的数据模型。
贝叶斯分析模型利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。

软件可靠性管理

需求分析阶段

分析目标,制定框架、规范、计划。

  • 确定软件的可靠性目标。
  • 分析可能影响可靠性的因素。
  • 确定可靠性的验收标准。
  • 制定可靠性管理框架。
  • 制定可靠性文档编写规范。
  • 制定可靠性活动初步计划。
  • 制定可靠性数据收集规范。

概要设计阶段

确定度量,制定验收方案,收集数据,调整计划。

  • 确定可靠性度量
  • 制定详细的可靠性验收方案
  • 调整可靠性活动计划。
  • 收集可靠性数据
  • 明确后续阶段的可靠性活动的详细计划。
  • 编制可靠性文档。

详细设计阶段

设计、预测,收集数据,调整计划。

  • 可靠性设计
  • 可靠性预测(确定可靠性度量估计值)
  • 调整可靠性活动计划。
  • 收集可靠性数据
  • 明确后续阶段的可靠性活动的详细计划。
  • 编制可靠性文档。

编码阶段

测试、排错,收集数据,调整计划。

  • 可靠性测试(单元测试)
  • 排错
  • 调整可靠性活动计划。
  • 收集可靠性数据
  • 明确后续阶段的可靠性活动的详细计划。
  • 编制可靠性文档。

测试阶段

测试、排错,建模、评价,收集数据,调整计划。

  • 可靠性测试(集成测试、系统测试)
  • 排错
  • 可靠性建模
  • 可靠性评价
  • 调整可靠性活动计划。
  • 收集可靠性数据
  • 明确后续阶段的可靠性活动的详细计划。
  • 编制可靠性文档。

实施阶段

验收、排错,收集数据,调整计划。

  • 可靠性测试(验收测试)
  • 排错
  • 调整可靠性活动计划。
  • 收集可靠性数据
  • 明确后续阶段的可靠性活动的详细计划。
  • 编制可靠性文档。

容错技术

  • 恢复块设计
  • N版本程序设计
  • 冗余设计

N版本程序设计

多版本程序,相同的输入,表决结果,少数服从多数。

前向恢复:表决,选取正确结果,避免错误。
在这里插入图片描述

恢复块设计

主块测试不合格时,调用备用块验证,直到通过测试。

在这里插入图片描述

冗余设计

另起炉灶,建立一套完全不同的系统,冗余设计。

检错技术

  • 检错对象
  • 检错延时
  • 实现方式
  • 处理方式

系统配置技术

  • 双机热备
    • A服务器是工作状态
    • B服务器是监控准备状态
    • 主要应用运行于主机,备机做备用。
  • 双机互备
    • A服务器是工作状态A
    • B服务器是工作状态B
    • 部分应用运行于主机,部分应用运行于备机。
  • 双机双工
    • A、B服务器都是工作状态
    • 两台机器同时运行应用。

软件可靠性测试

  • 可靠性目标的确定
  • 运行剖面的开发
  • 测试用例的设计
  • 测试实施
  • 测试结果分析
  • 进度、成本

测试报告的内容:

  • 软件产品标识
  • 测试环境配置(软件和硬件)
  • 测试依据
  • 测试问题
  • 测试结果
  • 测试时间

软件可靠性评价

可靠性评价过程

选择可靠性模型

  • 模型假设的适用性
  • 预测的能力与质量
  • 模型输出值能否满足可靠性评价需求
  • 模型使用的简便性

收集可靠性数据

  • 尽早确定可靠性模型
  • 制定数据收集计划
  • 重视测试产生的数据
  • 利用数据库分析

可靠性评估和预测

  • 评估和预测依赖于可靠性模型

http://www.kler.cn/a/580261.html

相关文章:

  • Docker 配置镜像源
  • 【JavaScript】09-构造函数+数据常用函数
  • matlab慕课学习3.1
  • 大模型工具Ollama存在安全风险
  • 【无脑 海螺AI api 合成音频 实例 】
  • HTML星球大冒险之路线图
  • 图形编辑器基于Paper.js教程24:图像转gcode的重构,元素翻转,旋转
  • AI革命编程学习:Python语法速通与高阶突破全实战(第二部分:AI辅助调试与高阶编程)
  • PaddleDetection目标检测自定义训练
  • 主流大语言模型中Token的生成过程本质是串行的
  • sparkTTS window 安装
  • 什么是Flask
  • 论文阅读笔记——π0: A Vision-Language-Action Flow Model for General Robot Control
  • 【华三】STP端口角色与状态深度解析
  • 游戏引擎学习第149天
  • [数据结构]堆详解
  • TDengine 接入帆软 BI 工具
  • 深度学习算法实战——语音识别(主页有源码)
  • Python 爬虫实战案例 - 获取拉勾网招聘职位信息
  • RuleOS:DApp开发的“破局者”,区块链创新的“加速器