【新版】系统架构设计师 - 软件可靠性分析与设计

news2024/11/28 11:33:20

在这里插入图片描述

个人总结,仅供参考,欢迎加好友一起讨论

文章目录

  • 架构 - 软件可靠性分析与设计
  • 考点摘要
  • 可靠性相关基本概念
  • 软件可靠性分析
    • 可靠性指标
    • 串联系统(可靠性)
    • 并联系统(可靠性)
    • 混合系统(可靠性)
  • 软件可靠性建模
  • 软件可靠性管理
  • 软件可靠性设计
    • N版本程序设计
    • 恢复块方法
    • N版本程序设计和恢复块方法对比
    • 防卫式程序设计
    • 双机容错技术
    • 集群技术
  • 软件可靠性测试与评价

架构 - 软件可靠性分析与设计

考点摘要

  • 可靠性相关基本概念(★)
  • 软件可靠性分析(★★★★)
  • 软件可靠性设计(★★★★)

对应第二版教材第9章,教材内容整体比较浅,以介绍普及为主,没有太多技术参考价值,个人认为掌握一下容错技术基本就可以。相关的这部分内容也可以参考:系分 - 系统可靠性分析与设计

可靠性相关基本概念

  • 系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。也就是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
  • 系统可用性是指在某个给定时间点上系统能够按照需求执行的概率,也就是系统能够正常运行的时间比例。

软件可靠性 ≠ 硬件可靠性,其区别:

  • 复杂性,软件复杂性比硬件高,大部分失效来自于软件失效
  • 物理退化,硬件失效主要是物理退化所致,软件不存在物理退化
  • 唯一性软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样
  • 版本更新周期,硬件较慢,软件较快

软件可靠性分析

可靠性指标

  • 平均无故障时间,MTTF = 1 / λ,λ为失效率
  • 平均故障修复时间,MTTR = 1 / μ,μ为修复率
  • 平均故障间隔时间,MTBF = MTTR + MTTF
  • 系统可用性,MTTF / MTBF = MTTF / (MTTR + MTTF) × 100%

在这里插入图片描述

串联系统(可靠性)

在这里插入图片描述

并联系统(可靠性)

在这里插入图片描述

混合系统(可靠性)

在这里插入图片描述

软件可靠性建模

软件可靠性模型是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。

一个软件可靠性模型通常(但不是绝对)由以下几部分组成:

  1. 模型假设。模型是实际情况的简化或规范化,总要包含若干假设,例如测试的选取代表实际运行剖面,不同软件失效独立发生等。
  2. 性能度量。软件可靠性模型的输出量就是性能度量,如失效强度、残留缺陷数等。在软件可靠性模型中性能度量通常以数学表达式给出。
  3. 参数估计方法。某些可靠性度量的实际值无法直接获得,例如残留缺陷数,这时需通过一定的方法估计参数的值,从而间接确定可靠性度量的值。
  4. 数据要求。一个软件可靠性模型要求一定的输入数据,即软件可靠性数据。

绝大多数的模型包含3个共同假设:

  1. 代表性假设。是指可以用测试产生的软件可靠性数据预测运行阶段的软件可靠性行为。
  2. 独立性假设。此假设认为软件失效是独立发生于不同时刻,一个软件失效的发生不影响另一个软件失效的发生。
  3. 相同性假设。此假设认为所有软件失效的后果(等级)相同,即建模过程只考虑软件失效的具体发生时刻,不区分软件的失效严重等级。

软件的可靠性模型分类:

  1. 种子法模型。利用捕获一再捕获抽样技术估计程序中的错误数,在程序中预先有意“播种”一些设定的错误“种子”,然后根据测试出的原始错误数和发现的诱导错误的比例,来估计程序中残留的错误数。
  2. 失效率类模型。用来研究程序的失效率。
  3. 曲线拟合类模型。用回归分析的方法研究软件复杂性、程序中的缺陷数、失效率、失效间隔时间。
  4. 可靠性增长模型。这类模型预测软件在检错过程中的可靠性改进,用增长函数来描述软件的改进过程。
  5. 程序结构分析模型。是根据程序、子程序及其相互间的调用关系,形成一个可靠性分析网络。
  6. 输入域分类模型。选取软件输入域中的某些样本“点”运行程序,根据这些样本点在“实际”使用环境中的使用概率的测试运行时的成功/失效率,推断软件的使用可靠性。
  7. 执行路径分析方法模型。分析方法与上面的模型相似,先计算程序各逻辑路径的执行概率和程序中错误路径的执行概率,再综合出该软件的使用可靠性。
  8. 非齐次泊松过程模型。是以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测在今后软件的某使用时间点的累计失效数。
  9. 马尔可夫过程模型。
  10. 贝叶斯模型。是利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。

软件可靠性管理

软件可靠性管理是软件工程管理的一部分,它以全面提高和保证软件可靠性为目标,以软件可靠性活动为主要对象,是把现代管理理论用于软件生命周期中的可靠性保障活动的一种管理形式。

软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务和修正措施等。可靠性各阶段设计任务如下:

  • 需求分析阶段:确定可靠性目标、分析影响因素、确定验收标准、制定框架、制定文档编写规范、制定初步计划、确定数据收集规范。
  • 概要设计阶段:确定可靠性度量、制定详细验收方案、可靠性设计、收集数据、调整计划、明确后续阶段详细计划、编制文档。
  • 详细设计阶段:可靠性设计、预测、调整计划、收集数据、明确后续阶段详细计划、编制文档。
  • 编码阶段:可靠性测试(单元)、排错、调整计划、收集数据、明确后续阶段详细计划、编制文档。
  • 测试阶段:可靠性测试(集成和系统)、排错、可靠性建模、评价、调整计划、收集数据、明确后续阶段详细计划、编制文档。
  • 实施阶段:可靠性测试(验收)、排错、收集数据、调整模型、评价、编制文档。

软件可靠性设计

从技术的角度来看,影响软件可靠性的主要因素包括:运行环境、软件规模、软件内部结构、软件的开发方法和开发环境、软件的可靠性投入。

影响软件可靠性的主要因素:

在这里插入图片描述

在这里插入图片描述

N版本程序设计

N版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略。
在这里插入图片描述

  • 与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成分规范评审、相异性确认、背对背测试。
  • N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非精确表决、Cosmetie表决)、—致比较问题、数据相异性。

恢复块方法

恢复块方法是一种动态的故障屏蔽技术,采用后向恢复策略。

在这里插入图片描述

  • 设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。
  • 必须保证验证测试程序的正确性。

N版本程序设计和恢复块方法对比

对比N版本程序设计恢复块方法
硬件运行环境多机单机
错误检测方法表决验证测试程序
恢复策略前向恢复后向恢复
实时性
  • 前向恢复,使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
  • 后向恢复,系统恢复到前一个正确状态,继续执行。

防卫式程序设计

N版本程序设计和恢复块方法都是基于设计冗余的思想,这给程序员和处理机都增加了许多工作,而且它们的结构本身又带来了一些问题和困难,例如,多版本程序设计中的相关性错误问题和恢复块方法中的验证测试的设计等。

防卫式程序设计是一种不采用任何传统的容错技术就能实现软件容错的方法,对于程序中存在的错误和不一致性,防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码,使得一旦发生错误,程序就能撤消错误状态,恢复到一个已知的正确状态中去。

实现策略包括:错误检测、破坏估计和错误恢复三个方面。

双机容错技术

双机容错技术是一种软硬件结合的容错应用方案。该方案是由两台服务器和一个外接共享磁盘阵列及相应的双机软件组成在双机容错系统中,两台服务器一般区分为主系统和从系统(备用系统),两台服务器互为主从关系。每台服务器都有自己的系统盘(本地盘),安装操作系统和应用程序。每台服务器至少安装两块网卡,一块连接到网络上,对外提供服务;另一块与另一台服务器连接,用以侦测对方的工作状况。同时,每台服务器都连接在共享磁盘阵列上,用户数据存放在共享磁盘阵列中,当一台服务器出现故障时,另一台服务器主动替代工作,保证网络服务不间断。整个网络系统的数据通过磁盘阵列集中管理,极大地保护了数据的安全性和保密性。

双机容错系统根据两台服务器的工作方式不同,可以有三种不同的工作模式,分别是双机热备模式、双机互备模式和双机双工模式。

  • 双机热备模式

    正常情况下,一台服务器处于工作状态(主系统),另一台服务器处于监控准备状态(备用系统)。如果没有采用共享磁盘阵列,则用户数据同时往两台服务器中写入,以保证数据的即时同步。当主系统出现故障时,通过双机软件将备用系统激活,保证应用在短时间内完全恢复正常使用。当主系统修复后,可重新接入系统要回自己的应用。双机热备模式是目前采用较多的一种模式,典型应用有证券资金服务器或行情服务器等。双机热备模式的主要缺点在于,备用系统长期处于后备的状态,存在一定的计算资源浪费。

  • 双机互备模式

    两台服务器均处于工作状态,为前端客户机提供各自不同的应用服务,并互相检测对方的运行情况。也就是说,两台服务器同时运行,但彼此均设为备用系统。当某一台服务器出现故障时,另一台服务器可以在短时间内将故障服务器的应用接管过来,从而保证了应用的持续性。双机互备模式的主要缺点是对服务器的性能要求比较高。

  • 双机双工模式

    双机双工模式是集群(cluster)技术的一种形式,两台服务器均处于工作状态,同时为前端客户机提供相同的应用服务,以保证整体系统的性能,实现负载均衡和互为备份。

集群技术

集群技术就是将多台计算机组织起来进行协同工作,它是提高系统可用性和可靠性的一种技术。在集群系统中,每台计算机均承担部分计算任务和容错任务,当其中一台计算机出现故障时,系统使用集群软件将这台计算机从系统中隔离出去,通过各计算机之间的负载转嫁机制完成新的负载分担,同时向系统管理人员发出警报。集群系统通过功能整合和故障过渡,实现了系统的高可用性和可靠性。

  • 高性能计算集群

    指以提高科学计算能力为目的计算机集群技术,它是一种并行计算集群的实现方法。并行计算是指将一个应用程序分割成多块可以并行执行的部分,并指定到多个处理器上执行的方法。

  • 负载均衡集群

    负载均衡集群在多节点之间按照一定的策略(算法)分发负载。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法来扩展服务器带宽,增加吞吐量,提高数据处理能力。负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理分配出去。

    比较常用的负载均衡实现技术主要有以下几种:

    1)基于特定软件的负载均衡(应用层)。很多网络协议都支持重定向功能,例如,基于HTTP重定向服务,其主要原理是服务器使用HTTP重定向指令,将一个客户端重新定位到另一个位置。服务器返回一个重定向响应,而不是返回请求的对象。客户端确认新地址然后重发请求,从而达到负载均衡的目的。

    2)基于DNS的负载均衡属于传输层负载均衡技术,其主要原理是在DNS服务器中为同一个主机名配置多个地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。

    3)基于NAT的负载均衡。将一个外部IP地址映射为多个内部IP地址,对每次连接需求动态地转换为一个内部节点的地址,将外部连接请求引到转换得到地址的那个节点,上从而达到负载均衡的目的。

    4)反向代理负载均衡。将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。

    5)混合型负载均衡。

  • 高可用性集群

    在高可用性集群系统中,多台计算机一起工作,各自运行一个或几个服务,各为服务定义一个或多台备用计算机。当某台计算机出现故障时,备用计算机便立即接管该故障计算机的应用,继续为前端的用户提供服务。

软件可靠性测试与评价

软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。

测试步骤:定义软件运行剖面(为软件的使用行为建模)一个 => 设计可靠性测试用例 => 实施可靠性测试。

软件可靠性评价3个过程:选择可靠性模型、收集可靠性数据、可靠性评估和预测。

选择可靠性模型考虑因素:模型假设的适用性、预测的能力与质量、模型输出值能否满足可靠性评价需求、模型使用的简便性。

可靠性数据的收集:可靠性数据主要是指软件失效数据,是软件可靠性评价的基础,主要是在软件测试、实施阶段收集的。应采用的解决方法:及早确定所采用的的可靠性模型、制订可实施性较强的可靠性数据收集计划、重视软件测试数据的整理和分析、充分利用数据库来完成可靠性数据的存储和统计分析。

可靠性评估和预测:判断是否达到了可靠性目标;如未能达到要再投入多少;在软件系统投入实际运行一年或若干时间后,经过维护、升级和修改,软件能否达到交付或部分交付用户使用的可靠性水平。辅助方法:失效数据的图形分析法、试探性数据分析技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(转载)从0开始学matlab—总结

1.编程实例 下面的例子将向大家介绍如何用 MATLAB 解决问题。 例1 温度转换程序 问题: 设计一个 MATLAB 程序,读取一个华氏温度的输入,输出开尔文温度。 答案: 华氏温度和开尔文温度的转换关系式可在物理学课本中找到。其关系式…

压力测试分为稳定性测试和破坏性测试

压力测试分为稳定性测试和破坏性测试 压力测试是一种对软件系统进行负载测试的常见手段,可以评估其在不同负载条件下的稳定性、性能和可靠性等指标。常见的压力测试分为两种类型:稳定性测试和破坏性测试。 1. 稳定性测试 稳定性测试也称为基准测试&#…

shell脚本基础3——正则表达式

文章目录 一、基本了解二、基本正则表达式2.1 字符匹配2.2 位置锚定2.3 匹配次数2.4 分组 三、扩展正则表达式3.1 字符匹配3.2 位置锚定3.3 匹配次数3.4 分组3.5 或者 一、基本了解 正则表达式分2种:基本正则表达式和扩展正则表达式。grep 、sed命令使用正则较多&am…

软考A计划-系统架构师-官方考试指定教程-(9/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

spiderflow的初步使用

1、简介 spider-flow 是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫 官网地址:https://www.spiderflow.org/ 2、spiderflow的初步使用 2.1拉取,配置和启动 从gitee上拉取 执行db里面的sql 里面会有6张表 …

为什么说高性能计算工程师越老越吃香?还难以被AI替代?

一般越老越吃香的岗位或者行业,一定是拥有无法或者难以轻易被替代的经验。 这些经验一般是靠时间、靠思维、靠试错不断积累起来的。然而AIGC来了,好像宣布AI会取代所有人一样,如经验丰富的律师、医生、教师等等,尤其是贡献了AIGC…

java ssm贸易平台-物流管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm贸易平台-物流管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主…

【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)

本篇文章依托kod可道云项目继续介绍阿里云产品,介绍DNS解析,CDN缓存,Web应用防火墙,弹性伸缩。 DNS解析 这里我将二级域名设为kod,一般都是设为www和,带表示可以不加二级域名,直接访问。也可以…

基于html+css的图展示117

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Java 八股文-集合框架篇

Java 集合框架 一、常见集合 1.说说有哪些常见集合? 集合相关类和接口都在java.util中,主要分为3种:List(列表)、Map(映射)、Set(集)。 其中Collection是集合List、Set的父接口&#xff0c…

AI热度降温?揭秘加德纳技术成熟度曲线与AI发展阶段

一文解决你所有对 AI 的焦虑 近期,我们发现ChatGPT的热度似乎不如前几个月。许多人尝试了这个技术,觉得它非常强大,但似乎与自己的日常生活和工作关系不大,因此逐渐失去了兴趣。 然而,这实际上是技术发展的正常周期&…

学术界用ChatGPT写论文,真的靠谱吗?

写论文时,赵铭用ChatGPT查询了国内外云计算技术的研究进展,并请它一一详细介绍。他用搜索引擎简单核实了真实性,润色后就放进了论文中,“我感觉它说的东西都是一些现状,也没什么好调整的,就直接用了&#x…

传感器-陀螺仪芯片

https://www.cnblogs.com/tomatokely/p/16392997.html 陀螺仪芯片厂家: ST ICM42605, MPU 6050, Murata SCL3300/3400 陀螺仪可选量程: 15.6/31.2/62.5/125/250/500/1000/2000 dps 加速度可选量程: 2/4/8/16 g 计算单位: 陀…

vue安裝及配置 nodejs安装配置

vue安装及配置 vue安装步骤 nodejs安装 安装nodejs环境:https://nodejs.org/en/ 查看node版本:node-v vue3.0需要使用node 8版本以上 npm镜像配置 npm是nodejs内置的资源管理器 npm两个镜像: 淘宝镜像:https://registry.npm.…

Mars3d的PolygonEntity的边框宽度outlineWidth只能是1

1.Mars3d的PolygonEntity的边框宽度只能是1 2.问题来源: 尝试在Mars3d官网的面的示例中修改高亮样式是,发现修改边框宽度为3或者是10,效果一致 function addDemoGraphic4(graphicLayer) { const graphic new mars3d.graphic.PolygonEntit…

车载以太网网络管理之UDPNM

前言 首先,请问大家几个小小问题,你清楚: 你知道UdpNm模块的主要作用是什么吗?UdpNm模块与其他AUTOSAR基础软件模块交互关系;UdpNm模块的网络管理算法,状态机如何运转?UdpNm模块的PNC功能如何…

TLE4250-2G-ASEMI代理英飞凌汽车芯片TLE4250-2G

编辑:ll TLE4250-2G-ASEMI代理英飞凌汽车芯片TLE4250-2G 型号:TLE4250-2G 品牌:Infineon(英飞凌) 封装:SCT-595-5 特性:驱动芯片、汽车芯片 温度范围-40C~150C 最大输入电压:-42 V~45 V TLE4250-2G…

跨境电商app系统开发

近年来,随着跨境电商行业的发展,越来越多的企业开始关注跨境电商app系统的开发。这些系统可以帮助企业更加高效地管理跨境电商业务,提高产品销售的效率,并且为消费者提供更加方便快捷的购物体验。 跨境电商app系统的开发需要考虑…

品牌618如何宣传,才能为业绩加油助力?

传媒如春雨,润物细无声,大家好,我是51媒体 胡老师。 随着618年中消费季的临近,许多企业和品牌都已经卯足了马力,争取在年终狂欢中多多增加公司业绩,现在的618 不仅仅涉及我们的吃穿用行,而且各…

计算机网络开荒2.2-Socket编程

文章目录 一、Socket概述二、Socket API 概述三、WinSock常用API3.1 常用API3.1.1 WSAStartUP3.1.2 WSACleanup3.1.3 Socket3.1.4 Closesocket3.1.5 bind3.1.6 listen3.1.7 connect3.1.8 accept3.1.9 send, sendto3.1.10 recv, recvfrom3.1.11 etsockopt, getsockopt 3.2 网络字…