九、软考-系统架构设计师笔记-软件可靠性基础知识

1、软件可靠性概念

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

  • 规定的条件是指直接与软件运行相关的使用该软件的计算机系统的状态和软件的输入条件,或统称为软件运行时的外部输入条件。
  • 规定的时间区间是指软件的实际运行时间区间。
  • 规定功能是指为提供给定的服务,软件产品所必须具备的功能。

软件可靠性的定量描述
从软件可靠性的定义可以看到,软件的可靠性可以基于使用条件、规定时间、系统输入、系统使用和软件缺陷等变量构建的数学表达式。

1.规定时间
规定时间有三种概念:

  • 自然时间,也就是日历时间
  • 运行时间
  • 执行时间

2.失效概率
从软件运行开始,到某一时刻t为止,出现失效的概率。可以看作是关于软件运行时间的一个随机函数。用F(t)表示。或指单位时间内失效的元件数与元件总数的比例。通常用λ表示。

3.可靠度
软件系统在规定的条件下、规定的时间内不发生失效的概率。可靠度的公式为R(t)=1-F(t)

4.失效强度
失效强度的物理解释就是单位时间软件系统出现失效的概率。
公式如下:
在这里插入图片描述
5.平均失效前时间
系统平均失效前时间 (MTTF)也叫平均失效等待时间,定义为从0时到故障发生时系统的持续运行时间的期望值。

6.平均恢复前时间
平均恢复前时间(MTTR)也叫平均故障修复时间,是从出现故障到修复成功中间的这段时间,它包括确认失效发生所必需的时间,记录所有任务的时间,还有将设备重新投入使用的时间。MTTR越小表示易恢复性越好。

7.平均故障间隔时间MTBF
是指相邻两次故障之间的平均时间,也称为平均故障间隔。MTBF= MTTR+ MTTF 实际MTTR很小,所以MTBF≈MTTF

例:
系统( )是指在规定的时间内和规定条件下能有效地实现规定功能的能力。它不仅取决于规定的使用条件等因素,还与设计技术有关。常用的度量指标主要有故障率(或失效率)、平均失效等待时间、平均失效间隔时间和可靠度等。其中,( ) 是系统在规定工作时间内无故障的概率。

A.可靠性 B.可用性 C.可理解性 D.可测试性

A.失效率 B.平均失效等待时间 C.平均失效间隔时间 D.可靠度

答案: A 、D

解析:
软件可靠性(Software Reliability):是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。
可靠度是指:软件系统在规定的条件下、规定的时间内不发生失效的概率。

可靠性目标
使用失效强度来表示软件缺陷对软件运行的影响程度。然而在实际情况中,对软件运行的影响程度不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。这里引出另外一个概念–失效严重程度类。失效严重程度类就是对用户具有相同程度影响的失效集合。

对失效严重程度的分级可以按照不同的标准进行,常见的是按对成本影响、对系统能力的影响等标准划分。
在这里插入图片描述
在这里插入图片描述

可靠性测试
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析和评价等一系列手段对软件系统实施的一种测试。一个完整的软件可靠性测试包括:
在这里插入图片描述

狭义的软件可靠性测试
是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。狭义的软件可靠性测试也叫“软件可靠性试验”,它是面向缺陷的测试。

可靠性测试的目的可归纳为以下3 个方面:

  • (1)发现软件系统在需求、设计、编码、测试和实施等方面的缺陷。
  • (2)为软件的使用和维护提供可靠性数据。
  • (3)确认软件是否达到可靠性的定量要求。

影响软件可靠性的因素
软件可靠性模型是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型,建立可靠性模型是为了将复杂系统的可靠性逐
级分解为简单系统的可靠性,以便于定量预计、分配、估算和评价复杂系统的可靠性。

从技术的角度来看,影响软件可靠性的因素如下:

  • (1)运行剖面(环境)
  • (2)软件规模
  • (3)软件内部结构
  • (4)软件的开发方法和开发环境
  • (5)软件的可靠性投入

软件可靠性模型分类

  • 种子法模型
  • 失效率类模型
  • 曲线拟合类模型
  • 可靠性增长模型
  • 程序结构分析模型
  • 输入域分类模型
  • 执行路径分析方法模型
  • 非齐次泊松过程模型
  • 马尔可夫过程模型
  • 贝叶斯分析模型

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

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

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

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

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

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

6.实施阶段
可靠性测试(含于验收测试)
排错
收集可靠性数据
调整可靠性模型
可靠性评价
编制可靠性文档

2、软件可靠性管理

软件可靠性设计的原则:

  • (1)软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
  • (2)软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
  • (3)软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,并且排在功能度、用户需求和开发费用之后考虑。

被认可的且具有应用前景的软件可靠性设计技术主要有:

  • 容错设计技术
  • 检错设计技术
  • 降低复杂度设计技术

容错设计技术
常用的软件容错技术主要有:

  • 1.恢复块设计
  • 2.N版本程序设计
  • 3.冗余设计

1.恢复块设计
恢复块方法是一种动态的故障屏蔽技术,采用后向恢复策略。它提供具有相同功能的主块和几个后备块,一个块就是一个执行完整的程序段,主块首先投入运行,结束后进行验证测试,如果没有通过验证测试,系统经现场恢复后由一后备块运行。被选择用来构建恢复块的程序块可以是模块、过程、子程序和程序段等。

2.N版本程序设计
N版本程序设计是一种静态的故障屏蔽技术,采用前向恢复的策略,其设计思想是用n个具有相同功能的程序同时执行 一项计算,结果通过多数表决来选择。n份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。目的是减少n版本软件在表决点上相关错误的概率。

3.冗余设计
软件的冗余设计技术实现的原理是在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。

检错技术
检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。
检错技术实现的代价一般低于容错技术和冗余技术,但它有一个明显的缺点,就是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。采用检错设计技术要着重考虑几个要素:检测对象、检测延时、实现方式和处理方式。

降低复杂度
降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。

软件复杂性分为模块复杂性和结构复杂性。

  • 模块复杂性主要包含模块内部数据流向和程序长度两个方面。
  • 结构复杂性用不同模块之间的关联程度来表示。

系统配置技术

1.双机热备技术
双机热备技术是一种软硬件结合的较高容错应用方案。该方案由两台服务器系统和一个外接共享磁盘阵列柜和相应的双机热备份
软件组成。操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。
用户的数据存放在外接共享磁盘阵列中,当一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。

双机热备方案中,根据两台服务器的工作方式可以有 3 种不同的
工作模式,

  • 双机热备模式(Active/Standby)
  • 双机互备模式
  • 双机双工模式(实现负载均衡)

2.服务器集群技术
集群技术是指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。集群中所有的计算机拥有一个共同的名称,集群内任一系统上运行的服务可被所有的网络客户所使用。当某结点服务器发生故障时,这台服务器上所运行的应用程序将在另一结点服务器上被自动接管。

3、软件可靠性测试

软件可靠性测试概述
传统的软件测试是面向错误的测试,测试所得的数据不能直接用于软件可靠性评价,必须经过一定的分析处理后方可使用可靠性
模型进行可靠性评价。软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等活动组成。

定义软件运行剖面
定义运行剖面首先需要为软件的使用行为建模,然后是开发使用模型,明确需要测试的内容。定义使用概率的最佳方法是使用实际的用户数据,如来自系统原型、前一版本的使用数据;其次是由该软件应用领域的用户和专家提供的预期使用数据,在没有任何数据可用的情况下,只能是将每个状态现有的弧分配相同的概率,这是最差的一种方法。

由于软件可靠性行为是相对于软件实际的运行剖面而言的,同一软件在不同运行剖面下其可靠性表现可能大不相同,所以用于可靠性测试准备的运行剖面的开发与定义必须充分分析和考虑软件的实际运行情况。

可靠性测试用例设计
设计测试用例就是针对特定功能或组合功能设计测试方案,并编写成文档。测试用例的选择既要有一般情况,也应有极限情况以及最大和最小的边界值情况。因为测试的目的是暴露应用软件中隐藏的缺陷,所以在设计选取测试用例和数据时要考虑那些易于发现缺陷的测试用例和数据,结合复杂的运行环境,在所有可能的输入条件和输出条件中确定测试数据,来检查应用软件是否都能产生正确的输出。优先测试那些最重要或最频繁使用的功能,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障,以保证软件的按期交付。

典型的测试用例包括以下内容:

  • 测试用例标识
  • 被测对象
  • 测试环境及条件
  • 测试输入
  • 操作步骤
  • 预期输出
  • 判断输出结果是否符合标准
  • 测试对象的特殊需求

可靠性测试的实施
开发方交付的任何软件文档中与可靠性质量特性有关的部分、程序以及数据都应当按照需求说明和质量需求进行测试。在项目合同、需求说明书和用户文档中规定的所有配置情况下,程序和数据都必须进行测试。软件可靠性数据是可靠性评价的基础。为了获得更多的可靠性数据,应该使用多台计算机同时运行软件,以增加累计运行时间。应该按照相关标准的要求,制定和实施软件错误报告和可靠性数据收集、保存、分析和处理的规程,完整、准确地记录软件测试阶段的软件错误报告和收集可靠性数据。

测试活动结束后要编写《软件可靠性测试报告》,对测试用例及
测试结果在测试报告中加以总结归纳。
测试报告应包括以下内容:

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

软件可靠性评价概述
软件可靠性评价工作是指选用或建立合适的可靠性数学模型,运用统计技术和其他手段,对软件可靠性测试和系统运行期间收集
的软件失效数据进行处理,并评估和预测软件可靠性的过程。

软件可靠性评价过程包含如下三个方面

  • 1.选择可靠性模型
  • 2.收集可靠性数据
  • 3.可靠性评估和预测

选择可靠性模型
对于不同的软件系统,不同的可靠性分析目的,模型的适用性是不一样的。可以从以下四方面进行模型的比较和选择。

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

收集可靠性数据
面向缺陷的可靠性测试产生的测试数据经过分析后,可以得到非常有价值的可靠性数据,是可靠性评价所用数据的一个重要来源,这部分数据取决于定义的运行剖面和选取的测试用例集。可靠性数据主要是指软件失效数据,是软件可靠性评价的基础,主要是在软件测试、实施阶段收集的。在软件工程的需求、设计和开发阶段的可靠性活动,也会产生影响较大的其他可靠性数据。因此,可靠性数据的收集工作是贯穿
于整个软件生命周期的。

可靠性评估和预测
软件可靠性的评估和预测的主要目的,是为了评估软件系统的可靠性状况和预测将来一段时间的可靠性水平。目前有不少支持软件可靠性估计的软件工具,只要将收集的失效数据分类、录入合适的可靠性模型,就可以获得软件可靠性的评价结果。软件可靠性评估和预测以软件可靠性模型分析为主,但也要在模型之外运用一些统计技术和手段对可靠性数据进行分析,作为可靠性模型的补充、完善和修正。

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

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

相关文章

自反检索增强生成 (SELF-RAG)

理想情况下,生成式 AI 的落地应用需要提供真实且高质量的响应。SELF-RAG 正是为解决此问题而被创建的。 背景介绍 有趣的是,RAG的发展轨迹与提示工程(prompt engineering)非常相似。RAG 最初是一个简单而有效的概念,其…

cocos2d-x-3.17 android升级 gradle NDK_DEBUG=0 -o NDK_DEBUG=1 -o cocos2dlua_shared

由于需要升级sdk版本 需要对应升级gradle版本 记录下升级内容 externalNativeBuild { ndkBuild { - //arguments NDK_DEBUG0 -o 修改成下面 arguments NDK_DEBUG0 } } debug { …

音频功率放大器方案LM4863替代DP4863

音频放大器是在产生声音的输出元件上重建输入的音频信号的设备,其重建的信号音量和功率级都要理想——如实、有效且失真低。音频范围为约20Hz~20000Hz,因此放大器在此范围内必须有良好的频率响应。根据应用的不同,功率大小差异很大…

光学硬件——二向色片

二向色镜(Dichroic Mirrors )又称双色镜,常用于激光技术中。 产品介绍: 指45度入射或大角度入射时,把光源分离出特定的光谱改变部分光谱光路方向,常用于酶标仪器、荧光显微镜系统、投影光引擎系统、激光灯…

一站式数据采集物联网平台:智能化解决方案,让数据管理更高效、更安全

JVS物联网平台的定位 JVS是企业信息化的“一站式解决方案”,其中包括了基础的数字化底座、各种企业级能力、企业内常见的应用,如下图所示: 整体平台能力层有三大基础能力: 低代码用于业务的定义;数据分析套件用于数据的自助式分…

2024年1月饮料行业数据:热销品牌商品排行榜出炉!

鲸参谋监测的某东平台1月份饮料市场销售数据已出炉! 根据鲸参谋电商数据分析平台显示,今年1月份,某东平台上饮料的销量约770万件,环比上个月增长62%,同比去年下滑35%;销售额约25亿元,环比上个月…

【数据结构】特殊的线性表——栈

🧧🧧🧧🧧🧧个人主页🎈🎈🎈🎈🎈 🧧🧧🧧🧧🧧数据结构专栏🎈🎈🎈&…

torch.cuda.is_available()=False

问题: 显示torch.cuda.is_available()False 解决办法:说明这个虚拟环境不可用,删除虚拟环境,重建一个新的虚拟环境 1、删除原来的虚拟环境,假如原虚拟环境为pytorch-old,输入以下命令,先退出当…

vsto 打开excel同时同花顺插件自动登录报错

excelApp.Workbooks.Open(path, false); Svstem,Runtime,Interopservices,COMException(0x800706BE):远程过程调用失败。(号常来自 HRESULT:0X800706BE)在 Micosot olieieroo.Excelworbols0penstma fiename.0hiectUodatelinks 0biectReadony 0hedtfomat 0hiectPaswond. 0hectwt…

基于SWOT法的信阳本土房地产企业现状及对策分析

目 录 摘要 1 Abstract 1 1绪论 2 2信阳市房地产企业概述 2 2.1中小城市房地产企业概念 2 2.2信阳本土房地产企业定位 3 2.2.1信阳市概况 3 2.2.2信阳市城市规划 3 2.2.3信阳房地产企业概况 4 2.3信阳市本土房地产企业特点 5 2.4研究信阳市本土房地产企业的必要性 6 3运用SWOT…

KAFKA入门教程

目录 1.安装kafka 2.安装kafkamanager可视化工具 3.springboot整合kafka 1.pom导包 2.启动类和yml配置 3.代码演示 编写生产者: 消费者: 1.安装kafka 进入kafka官网下载对应版本kafka kafka官网地址:Apache Kafka kafka是使用Scal…

【阿里云系列】-如何实现两个VPC网络资源互通

背景 由于实际项目预算有限,两套环境虽然分别属于不同的专有网络即不同的VPC,但是希望借助一台运维机器实现对两个环境的监控和日常的运维操作 网络架构 如下是需要实现的外网架构图,其中希望实现UAT环境的一台windows的堡垒机可以访问生产…

Spring Cloud集成nacos配置中心

1.添加Nacos Config依赖 打开nacos-config-demo的pom.xml文件并添加以下两个依赖项 项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容,如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置…

数据守护神:自动备份数据的重要性与方案

在数字化时代,数据已经成为我们生活与工作的核心。无论是个人用户还是企业组织,数据的丢失或损坏都可能带来不可估量的损失。因此,自动备份数据的重要性不言而喻。自动备份数据不仅能够确保数据的实时更新和安全性,还能在数据丢失…

坐标变换(二维、三维)

文章目录 一、四种空间1.1 定义和对比1.2 齐次坐标系 二、刚性变换2.1 定义2.2 平移2.3 旋转2.3.1 二维2.3.1.1 绕原点2.3.1.2 绕任意点 2.3.2 三维2.3.2.1 绕x轴2.3.2.2 绕y轴2.3.2.3 绕z轴 一、四种空间 1.1 定义和对比 标量空间:只有标量;向量空间&…

使用gnvm下载nodejs和npm

目录 前言 一、下载gnvm 二、利用gnvm下载nodejs 三、下载对应版本的npm 四、gnvm常用的命令 总结 前言 由于之前下载的版本过低,需要升级版本。但在使用gnvm升级node版本时遇到了一系列的问题,索性就把nodejs全部删除,重新用gnvm在下…

网络请求与数据解析

urllib是Python自带的标准库中用于网络请求的库 ,无需安装,直接引用即可。通常用于爬虫开发、API(应用程序编程接口)数据获取和测试。 urllib库的几个模块: urllib.request :用于打开和读取URLurllib.error:包含提出…

羊大师揭秘羊奶滋养,养生的新黄金选择

羊大师揭秘羊奶滋养,养生的新黄金选择 羊奶,这个自古以来的天然营养佳品,近年来逐渐受到现代人的青睐,成为养生的新黄金选择。它以其独特的营养价值和滋养功效,为追求健康生活的我们提供了全新的养生视角。 羊奶的滋…

LeetCode # 1161. 最大层内元素和

1161. 最大层内元素和 题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。 请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。…

Vue:自动按需导入element-plus图标

自动导入使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集。 完整vite.config.js参考模板 https://download.csdn.net/download/ruancexiaoming/88928539 动态导入图标参考 https://blog.csdn.net/ruancexiaoming/article/details/136568219 导入…