2015年软考系统架构设计师学习笔记第十三章(2)
发布时间:2010/12/4 22:44:24 来源:城市学习网 编辑:ziteng
13.1.4 可靠性测试的意义
1、软件失效可能造成灾难性的后果。
2、软件的失效在整个计算机系统失效中的比例较高。
80%和软件有关。
结构太复杂了,一个较简单的程序,其所有路径数量可能是一个天文数字。
3、相比硬件可靠性技术,软件可靠性技术很不成熟。
4、软件可靠性问题是造成费用增长的主要原因之一。
5、系统对于软件的依赖性越来越强。
13.1.5 广义的可靠性测试与侠义的可靠性测试
广义的软件可靠性测试是指为了最终评价软件系统的可靠性而运用建模、统计、试验、分析、和评价等一系列手段对软件系统实施的一种测试。
侠义的软件可靠性测试是指为了获取可靠性数据,按预先确定的测试用例,在软件的预期使用环境中,对软件实施的一种测试。
也叫“软件可靠性试验(Software Reliability Test)”,它是面向缺陷的测试,以用户将要使用的方式来测试软件,所获得的测试数据与软件的实际运行数据比较接近。
可靠性测试是对软件产品的可靠性进行调查、分析、评价的一种手段。
对检测出来的失效的分布、原因、后果 进行分析,并给出纠正建议。
总的来说,可靠性测试的目的可归纳为以下三个方面:
1、发现软件系统在 需求、设计、编码、测试、实施 等方面的 各种缺陷。
2、为软件的使用、维护提供可靠性数据。
3、确认软件是否达到可靠性的定量要求。
13.2 软件可靠性建模
13.2.1 影响软件可靠性的因素
软件可靠性模型(Software Reliability Model)是指 为预计或估算软件的可靠性所建立的可靠性框图和数学模型。
模型将复杂系统的可靠性逐级分解为简单系统的可靠性,以便 定量预计、分配、估算、评价复杂系统的可靠性。
影响软件可靠性的主要因素:缺陷的引入、发现、清除。
缺陷的引入主要取决于软件产品的特征和软件的开发过程特性。
缺陷的发现依靠运行剖面。
缺陷的清除依赖于失效的发现、修复活动、可靠性方面的投入。
影响软件可靠性的主要因素如下:
1、运行剖面(环境)。
2、软件规模。
3、软件内部结构。
4、软件的开发方法和开发环境。
5、软件的可靠性投入。人力、资金、资源、时间 等。
早期重视软件可靠性并采取措施开发出来的软件,可靠性有明显的提高。[NextPage] 13.2.2 软件可靠性建模方法
可靠性模型通常由以下几部分组成:
1、模型假设。模型是实际情况的简化或规范化,总要包含若干假设。
2、性能度量。软件可靠性模型的输出量就是性能度量。
3、参数估计方法。
4、数据要求。
绝大多数模型包含三个共同假设:
1、代表性假设。选取代表软件实际的运行剖面。
2、独立性假设。假设认为软件失效是独立发生于不同时刻。
3、相同性假设。认为所有软件失效的后果(等级)相同,即建模过程只考虑软件失效的具体发生时刻,不区分软件的失效严重等级。
如果在进行预测时发现引入了新的错误,或修复行为使新的故障不断发生,就应该停止预测。否则,这样的变化会因为增加问题的复杂程度而使模型的适用性降低。
好的软件可靠性模型应该具有如下重要特性:
1、基于可靠性的假设。
2、简单。
3、计算一些有用的量。
4、给出未来失效行为的好的映射。
5、可广泛使用。
13.2.3 软件的可靠性模型分类
可靠性模型大致可分为如下10类:
1、种子方法模型。
利用捕获一再捕获抽样技术估计程序中的错误数,在程序中预先有意“播种”一些设定错误的“种子”,然后根据测试出的原始错误和发现的诱导错误比例,估计程序中残留的错误数。
优点是简单易行,缺点是诱导错误的“种子”与实际的原始错误之间的类比性估量困难。
2、失效率类模型。
3、曲线拟合类模型。
用回归分析的方法研究软件 复杂性、缺陷数、失效率、失效间隔时间,包括参数方法和非参数方法两种。
4、可靠性增长模型。
5、程序结构分析模型。
通过对每一个节点可靠性、节点间转换的可靠性和网络在节点间的转换概率,得出该持续程序的整体可靠性。
6、输入域分类模型。
7、执行路径分析方法模型。
8、非其次泊松过程模型。
NHPP,以软件测试过程中单位时间的失效次数为独立泊松随机变量,来预测今后软件的某使用时间点的积累失效次数。
9、马儿可夫过程模型。
10、贝叶斯模型。
利用失效率的试验前分布和当前的测试失效信息,来评估软件的可靠性。
当软件可靠性工程师对软件的开发过程有充分的了解,软件的继承性比较好时具有良效果的可靠性分析模型。
时间域。
失效数类:失效数是有限的还是无限的。
失效数分布。
有限类:用时间表示的失效强度的函数形式。
无限类:用经验期望失效数表示的失效强度的函数形式。