当前位置:文档之家› 软件可靠性模型综述

软件可靠性模型综述

2.2可靠性预计模型
可靠性预计模型本质上是一些描述软件失效与软件错误的关系,描 述软件失效与运行剖面的关系的数学方程。借助这类模型,可以对软件 的可靠性特征做出定量的预计或评估。例如,可以预计开发过程中的可 靠性增长,预计或评估软件在预定工作时间的可靠度,预计软件在任意 时刻发生的失效数的平均值、软件在规定的时间间隔内发生失效次数的 平均值、软件在任意时刻的失效率、软件失效时间间隔的概率分布和软 件预期的交付时间等。评估和预计是两个有区别又有联系的概念。评估 是指对软件现有的可靠性水平做出评价。预计是指对软件未来的可靠性 特征进行预计。必须指出,在使用数学模型进行预计时,蕴含的假定 是,事物发展规律在未来的一段时间内保持不变。对于短期预测这个假 设是合理的。但是,随着预测期的延长,其近似性减弱。用可靠性模型 进行预计时,为了得到较准确的结果,如果发现软件的失效规律有明显 改变,应该对参数加以修正或重新收集失效数据,重新确定模型参数。
一些常见的分类方法有: 按随机分类法:根据随机过程的假设,如过程的确定性和非确 定性、马氏
过程、泊松过程等进行分类。 按软件出现的故障数进行分类:主要有错误计数模型和非计数 模型,可数
性或不可数(无穷)模型。 按模型参数的估计方法进行分类:主要有 Bayes 方法或非 Bayes 方法,最
大似然估计或最小二乘法,另外还有线性模型等。 按模型使用的时间方式分类:主要有日历时间和执行时间模 型。 按修复过程分类:主要指对软件系统修复过程的一类模型,如 完全修复型
2 软件可靠性模型的概述
软件可靠性工程使用的模型有两大类型:
2.1可靠性结构模型
靠性结构模型是指用于反映系统结构逻辑关系的数学方程。借助这
类模型,在掌握软件单元可靠性特征的基础上,可以对系统的可靠性特 征及其发展变化规律做出评价。软件可靠性结构模型包括串联系统模 型、并联系统模型,以及硬-软件复合系统模型等。软件可靠性结构模 型是软件系统可靠性分析的重要工具,既可以用于软件系统的可靠性综 合,也可用于软件系统的可靠性分解。
型应给出同样的估测结果。 (2)与具体用到的软件开发方法无关。软件开发是一个十分复杂的过
程,涉及到许多的人为因素,从而使得对软件的质量难以进行预测。为 了保证预测的精度,不妨假设待估测的软件系统是用最坏的软件开发方 法开发出来的。
(3)测试方法的选择问题。实际上是无法通过彻底的测试来获得完全 可靠的软件,所以不得不采用有限的测试,那么目标就是用最少的测试 以求最大限度的软件可靠性。可以用例如边界值测试法、分类测试法、 路径测试法等方法来达到。几乎所有的软件可靠性模型都假定测试环境 就是将来软件的运行环境,这限制了高可靠性估计情况下的这些模型的 可用性。
1软件失效过程
1.1软件失效的定义及机理
当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生 失效的时间间隔越短,则该软件越不可靠。软件失效的机理如下图所 示:
1)软件错误(Software error):指在开发人员在软件开发过程中出现 的失误,疏忽和错误,包括启动错、输入范围错、算法错和边界错等。 2)软件缺陷(Software defect):指代码中存在能引起软件故障的编
码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。如 不正确的功能需求,遗漏的性能需求等。 3)软件故障(Software fault):指软件在运行期间发生的一种不可接 受的内部状态,是软件缺陷被激活后的动态表现形式。 4)软件失效(Software failure):指程序的运行偏离了需求,软件执行 遇到软件中缺陷可能导致软件的失效。如死机、错误的输出结果、没有 在规定的时间内响应等。
因此要想获得高可靠性的软件,就要和软件中的故障做斗争。有以 下三种直接的方式来减少软件故障,提高软件可靠性:
1)软件故障预防 软件故障预防是指预防或者避免错误的发生或引入,从而减少故障
检测和排除造成的花费。加强软件开发员的教育和培训可以对减少故障 起到一定的作用,另外在软件开发中可以利用下面几个故障预防技术: 软件开发方法,软件配置管理,软件可靠性安全性设计和自动化故障预 防等。 2)软件故障的检测和排除
时间序列分析理论 Cox 比例风险函数模型表) Cox 比例风险函数模型表) 其它方法T.Downs 模型为代表) 表) 其它方法T.Downs 模型为代表) 表) 结构化模型(以 T.Downs 模型为代表) 表) 结构化模型(以 T.Downs 模型为代表) 表) 非参数分析 非参数分析 基于输入域的模型(以 Nerson 模型为代表) 基于输入域的模型(以 Nerson 模型为代表) Seeding 模型 Seeding 模型 运用贝叶斯估计的模型(以 LV 模型为代表) 运用贝叶斯估计的模型(以 LV 模型为代表) 马尔可夫过程二项模型(以JM模型为代表) 马尔可夫过程二项模型(以JM模型为代表) Musa 执行时间模型 Musa 执行时间模型 非齐次泊松过程模型(以 GO 模型为代表) 非齐次泊松过程模型(以 GO 模型为代表) 非随机过程模型型 非随机过程模型型 软件可靠性模型 软件可靠性模型 随机过程模型 随机过程模型
故障检测和故障排除是指从数量上和严重程度上减少软件中的故 障。这在软件测试中用得最多,测试人员要在限定的时间和费用内发现 并排除掉尽可能多的故障,这是提高软件可靠性的主要途径。故障检测 和排除技术可以分为静态方法和动态方法。
静态方法是在不实际运行软件的条件下检测软件的故障并进行排 除,包括软件人工审查技术,软件静态分析技术和软件可靠性分析技 术。
(4)改错过程。实际上改正老的错误时往往会引人新的错误。 (5)模型要表述的内容。模型应该指出测试的输入是否已足够地覆盖 了输入域,测试的条件和数据是否已准确地模拟了操作系统、是否已足 以查出那些类似的错误等。软件可靠性模型假定测试的条件和数据与操 作环境有着同样的分布,也就简捷地假设了上述要表述的内容。 (6)输入的分布问题。可靠性估计紧密地依赖于模型假设的输入分 布。作为一个极端的情况,如果输入是一个常数(比如说只用到一个输 入),软件将或者出错或者成功的执行,于是就给出可靠性相应地为 0 或为 1。 (7)关于软件复杂性问题。大多数现有的软件可靠性模型都没有考虑 这个问题。实际上,复杂的软件应该比简单的软件要求更多的测试。 (8)模型的验证问题。常常由于缺乏实际可用的足够数据,使得对模 型的验证无法进行,且在整个软件寿命周期内,软件几乎呈常数倍数地 增加,导致可靠性也相应地变化,软件可靠性的验证工作也就更加复杂 化。 (9)关于时间问题。在软件可靠性量测与硬件可靠性量测综合起来对 一定的系统环境进行考核时,将 CPU 时间作为时间单位是必要的。
软件可靠性模型综述
可靠性是衡量所有软件系统最重要的特征之一。不可靠的软件会让 用户付出更多的时间和金钱, 也会使开发人员名誉扫地。IEEE 把软件可 靠性定义为在规定条件下, 在规定时间内, 软件不发生失效的概率。该概 率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确 定是否会遇到所存在的故障。
从软件可靠性的定义可以知道,软件可靠性是用概率度量的,那么 软件失效的发生是一个随机的过程。在使用一个程序时,在其他条件保 持一致的前提下,有时候相同的输入数据会得到不同的输出结果。因 此,在实际运行软件时,何时遇到程序中的缺陷导致软件失效呈现出随 机性和不稳定性。
所有的软件失效都是由于软件中的故障引起的,而软件故障是一种 人为的错误,是软件缺陷在不断的测试和使用后才表现出来的,如果这 些故障不能得到及时有效的处理,便不可避免的会造成软件失效。而一 个软件中存在的软件错误和缺陷总数是无法确定的,也不可能被完全排 除掉,有时候排除掉一个故障甚至会引起更多的故障。
(10)考虑模型所要求的数据是否容易收集。否则,由于数据问题, 将会限制软件可靠性的应用范围。
4 软件可靠性模型的分类
到目前为止,软件可靠性模型的研究已有 40 多年的历史,国内外 已发表的软件可靠性模型有近百种,但由于对软件可靠性模型的研究还 处在一个初步阶段,目前并没有一个完整、系统的科学分类方法。但是 为了研究这些模型,又需要作些必要的分类。所以,不少专家学者提出 了许多不同的分类。总的来说,模型可以按照它们的假设、测试空间、 软件结构、处理的方式方法等进行分类,或者根据模型本身的数学结构 及使用的参数估计方法进行分类。
所以在软件开发周期中,软件错误是不可避免的,但可以通过学习 改进,不断吸取经验教训,尽量减少程序中的错误特别是重大错误的数 量。在测试阶段,测试人员应尽可能多的检测并排除掉软件中的故障, 从而减少软件失效强度,提高软件的可靠性和质量。
1.2提高软件可靠性的途径
软件中的故障会导致软件功能不能正常实现,降低了软件的可靠 度。软件故障一般是软件开发各阶段人为造成的,大概包括需求分析定 义错误、设计错误、编码错误、测试错误和文档错误等。
和不完全修复型,完全排错型和不完全排错型。 按对软件的内部结构是否了解进行分类:可分为黑箱模型和白 箱模型。对
它们的分类主要根据对软件的内部结构的了解程度以及对它们的结构能 加以利用的程度来区分。
根据 Shanthikumar 的观点,与软件可靠性有关的模型可分为四类: 第一类是软件可靠性模型。 第二类是软件释放时间模型。用于确定软件何时可以释放,交付用 户使用。软件可靠性是其考虑因素之一。 第三类是软件可用性模型。用于确定软件处于正常状态的机会大 小,模型不仅考虑软件可靠性,还要考虑软件维护性。 第四类是硬件/软件模型。用于确定混合硬件-软件系统的可靠性行 为。 软件可靠性模型通常遵循以下四条准则之一进行分类,目的在于系 统、深刻的理解软件可靠性模型。 (1)建模对象 建模对象指软件可靠性数据及软件其他有关信息,譬如与时间有关 的信息(数据),与时间无关的信息(数据)等。依据建模对象软件可 靠性模型总的来说分为两大类:静态模型和动态模型。 (2)模型建设 可假定软件原有软件缺陷为一确定的有限值,也可假 定它是服从 Poisson 分布的随机变量,甚至假定它为无限量,这样可得 到不同类型的模型。 (3)模型适用性 适用于测试阶段的模型称为增长模型,适用于确认阶段的模型称为 确认模型。 (4)数学方法 采用概率方法的模型称为概率模型。采用模糊方法的模型称为模糊 模型。另外还有 Bayes 模型与非 Bayes 模型等。 软件可靠性模型的分类方法很多,这里我们采用综合模型的假设、 测试环境以及数理统计的分类方法,将模型大致分为:随机过程类模型 和非随机过程类模型。具体分类如图: 时间序列分析理论
相关主题