系统架构设计师 9:软件可靠性

这篇具有很好参考价值的文章主要介绍了系统架构设计师 9:软件可靠性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、软件可靠性

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

1 软件可靠性的定量描述

1. 规定时间。

    使用执行时间最为准确。

    执行时间:软件运行过程中,CPU执行程序指令所用的时间总和。

2. 失效概率。

    用 F(t) 表示,可以看作关于时间 t 的一个连续、可导的函数。

3. 可靠度。

    可靠度就是软件系统在规定的条件下、规定的时间内不发生失效的概率。

    用 R(t) 表示,R(t) = 1 - F(t)。

4. 失效强度。

    失效强度是指单位时间软件系统出现失效的概率。

    用 f(t) 表示,f(t) = F'(t)。

5. 平均失效前时间。

    MTTF,定义为从 t=0 时到故障发生时系统的持续运行时间的期望值。

    MTTF = R(t)在(0, ∞)上的积分。

6. 平均恢复前时间。

    MTTR,就是从出现故障到修复成功中间的这段时间。MTTR越小表示易恢复性越好。

7. 平均故障间隔时间。

    MTBF,失效或维护中所需的平均时间。

    对于可靠度服从指数分布的系统,从任一时刻 t₀ 到达故障的期望时间都是相等的,因此有 MTBF = MTTF + MTTR。

2 可靠性目标

2.1 失效严重程度类

失效严重程度类就是对用户具有相同程度影响的失效集合。

(通俗地讲,就是把失效分为致命、严重、一般 等级)

2.2 可靠性目标参考

失效严重程度类

可靠性要求/%

失效强度

平均无失效时间

1

99.9999

10⁻⁶

114年

2

99.99

10⁻⁴

417天

3

99

10⁻¹

4天

4

90

1

9小时

3 可靠性测试

1. 发现软件系统在需求、设计、编码、测试和实施等方面的各种缺陷。

2. 为软件的使用和维护提供可靠性数据。

3. 确认软件是否达到可靠性的定量要求。

二、软件可靠性模型

文献记载的软件可靠性统计分析模型有将近百种,这些模型大致可分为以下十类:

1. 种子法模型。

2. 失效率类模型。

3. 曲线拟合类模型。

4. 可靠性增长模型。

5. 程序结构分析模型。

6. 输入域分类模型。

7. 执行路径分析方法模型。

8. 非齐次泊松过程模型。

9. 马尔可夫过程模型。

10. 贝叶斯模型。

三、软件可靠性管理

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

软件工程各个阶段可能进行的主要软件可靠性活动如下:

需求分析阶段

(1) 确定软件的可靠性目标。(2) 分析可能影响可靠性的因素。(3) 确定可靠性的验收标准。(4) 制定可靠性管理框架。(5) 制定可靠性文档编写规范。(6) 制订可靠性活动初步计划。(7) 确定可靠性数据收集规范。

概要设计阶段

(1) 确定可靠性度量。(2) 制定详细的可靠性验收方案。(3) 可靠性设计。(4) 收集可靠性数据。(5) 调整可靠性活动计划。(6) 明确后续阶段的可靠性活动的详细计划。(7) 编制可靠性文档。

详细设计阶段

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

编码阶段

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

测试阶段

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

实施阶段

(1) 可靠性测试(含于验收测试)。(2) 排错。(3) 收集可靠性数据。(4) 调整可靠性模型。(5) 可靠性评价。(6) 编制可靠性文档。

四、软件可靠性设计

实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。

一般来说,被认可的且具有应用前景的软件可靠性设计技术主要有容错设计、检错设计和降低复杂度设计等技术。

1 容错设计技术

对于软件失效后果特别严重的场合,可采用容错设计方法。

常用的软件容错技术主要有恢复块设计、N版本程序设计和冗余设计三种方法。

1.1 恢复块设计

程序的执行过程可以看成是由一系列操作构成的,这些操作又可由更小的操作构成。恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变成恢复块。被选择用来构造恢复块的程序块可以是模块、过程、子程序和程序段等。

1.2 N版本程序设计

N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实行多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。

1.3 冗余设计

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

2 检错技术

在软件系统中,对无须在线容错的场景,一般采用检错技术,在软件出现故障后能及时发现并报警,提醒维护人员进行处理。

采用检错设计技术要着重考虑几个要素:

1. 检测对象。

2. 检测延时。

3. 实现方式。

    判断返回结果、计算运行时间等。

4. 处理方式。

    查出故障-停止软件系统运行-报警。

3 降低复杂度设计

有研究表明,当软件的复杂度超过一定界限时,软件缺陷数会急剧上升,软件的可靠性急剧下降。因此,在设计时就应考虑降低软件的复杂性,使之处于一个合理的阈值之内,这是提高软件可靠性的有效方法。

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

4 系统配置技术

4.1 双机热备技术

双机热备技术是一种软硬件结合的较高容错应用方案。该方案是由两台服务器系统和一个外接共享磁盘阵列柜和相应的双机热备份软件组成。

在这个容错方案中,操作系统和应用程序安装在两台服务器的本地系统盘上,整个网络系统的数据是通过磁盘阵列集中管理和数据备份的。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动替代主机工作,保证网络服务不间断。

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

1. 双机热备模式。

2. 双机互备模式。

3. 双机双工模式。

心跳机制

双机热备系统采用“心跳”方法保证主系统与备用系统的联系。所谓“心跳”,指的是主从系统之间相互按照一定的时间间隔发送通信信号,表明各自系统当前的运行状态。一旦“心跳”信号表明主机系统发生故障,或者备用系统无法收到主机系统的“心跳”信号,则系统的高可用性管理软件认为主机系统发生故障,立即将系统资源转移到备用系统上,备用系统替代主机工作,以保证系统正常运行和网络服务不间断。

4.2 服务器集群技术

集群技术是指一组相互独立的服务器在网络中组合成为单一的系统工作,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。

五、软件可靠性测试

1 可靠性测试用例设计

由于可靠性测试的主要目的是评估软件系统的可靠性,因此,除了常规的测试用例集仍然适用外,还要着重考虑和可靠性密切相关的一些特殊情况。在测试中,可以考虑进行“强化输入”,即比正常输入更恶劣(合理程度的恶劣)的输入。

序号

测试目的

描述

1

屏蔽用户操作错误

考虑对用户常见的误操作的提示和屏蔽情况

2

错误提示的准确性

对用户的错误提示准确描述

3

错误是否导致系统异常退出

有无操作错误引起系统异常退出的情况

4

数据可靠性

系统应对输入的数据进行有效性检查,对冗余的数据进行过滤、校验和清洗,保证数据的正确性和可靠性

5

异常情况的影响

考察数据和系统的受影响程度,若受损,是否提供补救工具、补救的情况如何。异常情况包括:

(1) 硬件效障

(2) 网络故障

(3) 部分软件模块失效

2 软件可靠性测试报告

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

测试报告应具备如下内容:

1. 软件产品标识。

2. 测试环境配置(硬件和软件)。

3. 测试依据。

4. 测试结果。

5. 测试问题。

6. 测试时间。

六、软件可靠性评价

1. 选择可靠性模型。

2. 收集可靠性数据。

3. 可靠性评估和预测。文章来源地址https://www.toymoban.com/news/detail-586416.html

到了这里,关于系统架构设计师 9:软件可靠性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统架构设计师-软件架构设计(7)

    目录 大型网站系统架构演化 一、第一阶段:单体架构 到 第二阶段:垂直架构 二、第三阶段:使用缓存改善网站性能         1、缓存与数据库的数据一致性问题         2、缓存技术对比【MemCache与Redis】         3、Redis分布式存储方案         4、Redis集群切片的

    2024年02月14日
    浏览(72)
  • 系统架构设计师-软件架构设计(6)

    目录 一、物联网分层架构 二、大数据分层架构 三、基于服务的架构(SOA)         1、SOA的特征         2、服务构件与传统构件的区别 四、Web Service(WEB服务)         1、Web Services 和 SOA的关系 五、REST(表述性状态转移) 六、ESB(企业服务总线) 七、微服务         1、微

    2024年02月14日
    浏览(307)
  • 【新版】系统架构设计师 - 软件架构设计<新版>

    个人总结,仅供参考,欢迎加好友一起讨论 软件架构的概念(★★★) 基于架构的软件开发(★★★★) 软件架构风格(★★★★★) 特定领域软件架构(★★★) 软件质量属性(★★★★★) 软件架构评估(★★★★★) 软件产品线(★★★) 构件与中间件技术(★

    2024年02月09日
    浏览(62)
  • 【新版】系统架构设计师 - 软件架构设计<轻量级架构>

    个人总结,仅供参考,欢迎加好友一起讨论 基本概念(★) SSH(★★) SSM(★★) 用户界面的逻辑位于最顶层。表现层负责把用户要求的业务逻辑处理结果以可视化的友好的方式返回给用户,并提供接受用户命令的接口和表现层页面控制逻辑的代码。 业务逻辑层负责处理

    2024年02月09日
    浏览(65)
  • 系统架构设计专业技能 · 软件工程(一)【系统架构设计师】

    系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】 软件开发生命周期

    2024年02月13日
    浏览(57)
  • 【新版】系统架构设计师 - 软件架构设计<SOA与微服务>

    个人总结,仅供参考,欢迎加好友一起讨论 面向服务SOA(★★★★) 微服务(★★★★) 在SOA模型中,所有的功能都定义成了独立的服务。服务之间通过交互和协调完成业务的整体逻辑。所有的服务通过服务总线或流程管理器来连接。这种松散耦合的架构使得各服务在交互

    2024年02月09日
    浏览(49)
  • 系统架构设计专业技能 · 软件工程之软件测试与维护(六)【系统架构设计师】

    系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】 系统架构设计专业技能 · 系统安全分析与设计(四)【系统架构设计师】 系统架构设计高级技能 · 软件架构设计(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统

    2024年02月13日
    浏览(64)
  • 系统架构设计师-软件工程(2)

    目录 一、需求工程          1、需求工程阶段划分         2、需求获取         3、需求分析​         4、需求定义(形成需求规格SRS)         5、需求确认与验证         6、需求跟踪                          7、需求变更管理过程         1、需求工程阶

    2024年02月12日
    浏览(45)
  • 系统架构设计师-软件工程(1)

    目录 一、软件过程模型               1、瀑布模型         2、V模型【瀑布变种】         3、原型模型         4、螺旋模型【原型+瀑布】         5、构件组装模型/基于构件的开发方法         6、快速应用开发RAD【瀑布+构件组装】                        

    2024年02月11日
    浏览(72)
  • 系统架构设计师-软件工程(4)

    目录 一、软件测试         1、软件测试类型(动态测试 / 静态测试)                 1.1 动态测试【计算机运行】                  1.2 静态测试【人工监测和计算机辅助分析】         2、软件测试阶段         3、软件系统测试 二、遗留系统演化策略

    2024年02月13日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包