• 系统架构师学习笔记_第十三章(上)_连载


    第十三章  系统的可靠性


    13.1  软件可靠性

    目前,硬件可靠性测试技术和评估手段日趋成熟,已经得到了业界的认可。

    软件可靠性模型的研究多集中在 开发阶段、测试阶段、评估阶段 的可靠性模型。


    13.1.2  软件可靠性的定义

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

    按照产品可靠性的形成,分为 固有可靠性、使用可靠性。

    固有可靠性是通过 设计、制造 赋予产品的 可靠性。

    使用可靠性 既受设计、制造 的 影响,又受使用条件的影响。


    软件与硬件 从可靠性角度来看,主要有4个不同点:

    1、复杂性,软件内部的逻辑高度复杂,硬件则相对简单。

    2、物理退化,一个正确的软件任何时刻均可靠,一个正确的硬件、元器件、系统 则可能在某个时刻失效。

    3、唯一性,软件是唯一的,软件复制不改变软件本身,硬件不可能完全相同,概率方法在硬件可靠性领域取得巨大成功。

    4、版本更新快,软件版本更新较快,也给软件可靠性评估带来较大的难度。


    1983年,美国IEEE 对“软件可靠性”做出了更明确的定义。

    1989年,我国国家标准 GB/T-11457也采用了这个定义。

    定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率。

    依然沿用了“产品可靠性”的定义。

    1、规定的时间

    由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

    2、规定的条件

    不同的环境条件下的可靠性是不同的,计算机的配置情况、对输入的要求。

    有了明确规定的环境条件,还可以有效地判断软件失效的责任在用户方还是开发放。

    3、所要求的功能

    软件可靠性还与规定的任务和功能有关。

    要准确度量软件系统的可靠性,必须先明确它的任务和功能。

    4、“软件可靠性”定义具有如下特点:

    1. 用内在的“缺陷” 和 外在的“失效”关系来描述可靠性。

    2. 定义使人们对软件可靠性进行量化评估成为可能。

    3. 用概率的方法描述可靠性是比较科学的。


    13.1.3  软件可靠性的定量描述

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


    1、规定时间:自然时间、运行时间、执行时间。

    使用执行时间来度量软件的可靠性最为准确。


    2、失效率:把软件从运行开始,到某一时刻t 为止,出现失效的概率用 F(t)表示。

    F(0)=0,即软件运行初始时刻失效概率为0。

    F(t)在时间域(0,+无穷大)上是单调递增的。

    F(+无穷大)=1,即失效概率在运行时间不断增长时 趋向于1,这也意味着任何软件都存在缺陷。


    3、可靠度:在规定的条件下,规定的时间内 不发生失效的概率。

    公式略。


    4、失效强度(Failure Intensity)单位时间 软件系统出现失效的概率。

    公式略。


    5、失效率(Failure Rate)又称 风险函数(Hazard Function),也可以称为条件失效强度。

    就是当软件在 0~t 时刻内 没有发生失效的条件下,t时刻 软件系统的失效强度。

    公式略。


    6、可靠度 与 失效率 之间的换算。

    略。


    7、平均失效时间(Mean Time to Failure,MTTF)就是软件运行后,到下一次出现失效的平均时间。更直观地表明一个软件的可靠度。

    公式略。


    需要对 软件可靠度 这个反映软件可靠性的肚量指标作下列补充说明:

    1. 需指明它与其他软件的界限。

    2. 软件失效必须明确定义。

    3. 必须假设硬件无故障(失效)和软件有关变量输入正确。

    5. 必须指明时间基准:自然时间(日历时间)、运行时间、执行时间(CPU 时间)、其他时间基准。

    6. 通常以概率度量,也可以模糊数学中的可能性加以度量。

    7. 在时间域上进行,是一种动态度量,也可以是在数据域上,表示成功执行一个回合的概率。

    软件回合是软件运行最小的、不可分的执行单位。

    8. 有时将软件运行环境简单地理解为软件运行剖面(Operational Profile)。

    运行剖面定义了关于软件可靠性描述中的“规定条件”,测试环境、测试数据 等一系列问题。


    13.1.4  可靠性目标

    使用 失效强度 表示软件缺陷对软件运行的影响程度。

    不仅取决于软件失效发生的概率,还和软件失效的严重程度有很大关系。引出另外一个概念——失效严重程度类(Failure Severity Class)。

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

    对失效严重程度的分级 可以按照不同的标准进行,对成本影响、对系统能力的影响 等。

    对成本的影响 可能包括失效引起的 额外运行成本、修复和恢复成本、现有潜在的业务机会的损失 等。

    对系统能力的影响 常常表现为 关键数据的损失、系统异常退出、系统崩溃、导致用户操作无效 等。

    可靠性目标 是指客户对软件性能满意程度的期望。通常用 可靠度、故障强度、平均失效时间(MTTF)等指标来描述。

    建立定量的可靠性指标 需要对 可靠性、交付时间、成本 进行平衡。


    13.1.5  可靠性测试的意义

    1、软件失效可能造成灾难性的后果。

    2、软件的失效在整个计算机系统失效中的比例较高。

    80%和软件有关。

    结构太复杂了,一个较简单的程序,其所有路径数量可能是一个天文数字。

    3、相比硬件可靠性技术,软件可靠性技术很不成熟。

    4、软件可靠性问题是造成费用增长的主要原因之一。

    5、系统对于软件的依赖性越来越强。


    13.1.6  广义的可靠性测试与侠义的可靠性测试

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

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

    也叫“软件可靠性试验(Software Reliability Test)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,所获得的测试数据与软件的实际运行数据比较接近。

    可靠性测试是对软件产品的可靠性 进行调查、分析、评价 的一种手段。

    对检测出来的 失效的分布、原因、后果 进行分析,并给出纠正建议。


    总的来说,可靠性测试的目的可归纳为以下三个方面:

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

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

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

  • 相关阅读:
    一种针对SOA的消息类型架构
    许可方式 到底"非商业用途"意味着什么?
    Windows 7的CMD中 Telnet 无法执行的解决办法
    ASP.NET MVC 2.0 中文正式版发布
    什么是REST?
    架构、框架的区别
    Firefox 火狐下自动刷新的插件 ReloadEvery
    ASP.NET与JQUERY的AJAX文件上传 视频课件+源码Demo
    给吸烟的园友们:一个被烟草行业隐瞒了十年的秘密,烟真不是人吸的
    Echo Server,AsyncSocket,SocketAsyncEvent,SocketAsyncEventArgs,AsyncQueue
  • 原文地址:https://www.cnblogs.com/lmule/p/1814708.html
Copyright © 2020-2023  润新知