软件可靠性分析
课程:软件质量分析
概要:简单介绍软件可靠性定义以及相关度量参数
软件可靠性
-
定义:按照GB/T11457-95-软件工程术语,软件可靠性的定义为:
其中1是一个定量的定义,用此定义称之为可靠度更为确切,而2则是一个定性的定义。
- 在**规定的条件下, 在规定的时间内软件不引起系统失效的概率**。该概率是系统输入和系统使用的函数,也是软件中存在的缺陷的函数。系统输入将确定是否遇到已存在的缺陷(如果有缺陷存在的话)。
- 在**规定的时间周期**内所述条件下程序执行所要求的功能的能力。
-
规定的条件:
- 软件运行的软、硬核环境:软件环境包括运行的操作系统、应用软件、编译系统、数据库系统等;硬件环境包括计算机的CPU、Cache、Memory、I/O等。
- 软件操作剖面:不严格地说,是指软件运行的输入空间及其概率分布。软件的输入空间是指软件所有可能得输入值构成的空间。按照欧空局标准的定义,软件的操作剖面是指“对系统使用条件的定义。即系统的输入值用其按时间的分布或按他们在可能输入范围内得出现概率得分布来定义“。
-
规定的时间:
一般可分为执行时间、日历时间和时钟时间。执行时间是指执行一个程序所用的实际时间或中央处理器时间,或者程序处于执行过程中的一段时间;日历时间指的是编年时间,包括计算机可能未运行的时间。时钟时间是指程序执行开始到程序执行完毕所经过的钟表时间,该时间包括了其他程序运行的时间。大多数的软件可靠性模型是针对执行时间建立的,因为真正激励软件发生失效的是CPU时间。
-
规定的功能:
软件的可靠性还与规定的功能密切相关。所谓规定的功能是指软件应完成的工作。事先必须明确规定的功能,只有这样,才能对软件是否发生失效有明确的判断。
-
软件失效机理:
当软件发生失效是,我们说软件不可靠,发生的失效数越多,或者发生失效的时间间隔越短,我们认为软件越不可靠。
错误(error):指开发人员在开发过程中出现的失误、疏忽和错误。
缺陷(defect):指代码中能引起一个或多个失效的错误的编码(步骤、过程、 数据定义等)
故障(fault):指软件在运行过程中出现的一种不希望或不可接受的内部状态。
失效(failure):指程序的运行偏离了需求,是动态运行的结果。
软件可靠性对系统可靠性具有重要的影响,要保证系统的可靠性,不仅要对硬件可靠性提出定量要求,同时也必须对软件的可靠性提出定量的要求。 此外,确定软件可靠性要求可以使用户和开发人员找出影响系统整体可靠性的关键部分,对可能不可靠的部分进行重新设计,提高可靠性。
软件可靠性度量参数
-
可靠度:
软件可靠度R是指软件在**规定的条件下,规定的时间段**内完成预定的功能的概率。或者说是软件在规定时间内无失效发生的概率。
-
失效率和失效强度:
失效率是指在t时刻尚未发生失效的条件下,在t时刻后单位时间内发生失效的概率。失 效率的定义和硬件可靠性中瞬时失效率的定义完全一致的,是基于寿命的观点给出的。它是一个条件概率密度。而失效强度则是基于随机过程定义的,是失效数均值的变化率。失效率/失效强度适用于要求失效发生频率比较低的系统, 如操作系统。
-
平均失效前时间MTTF和平均失效间隔时间MTBF:
MTTF是指当前时间到下一次失效时间的均值。MTBF是指两次相邻失效时间间隔的均值。在硬件可靠性中,MTTF用于不可修复产品,MTBF用于可修复产品;对于软件则不能简单地用同样的概念进行区分。软件不存在不可修复的失效,亦即,软件失效是可以修复的。但是,修复活动对失效特性的影响和硬件存在着很大的不同。
-
缺陷密度(Defect Density,DD):
缺陷密度是软件缺陷的基本度量,可用于设定产品质量目标,支持软件可靠性模型(如Rayleigh模型)预测潜藏的软件缺陷,因而对软件质量进行分析、跟踪和管理。支持基于软件缺陷计数的软件可靠性增长模型(如Musa-Okumoto模型),对软件质量目标进行跟踪并判定能否结束软件测试。这个度量分析每个版本或模块中每千行代码中的缺陷数量。这样可以在一系列版本或模块中追踪软件质量。
-
故障密度FD(Fault Density):
使用这个度量,可以通过按严重性分类将计算的故障密度与目标值比较来确定是否已经完成足够的测试。
-
需求依从性(Requirements Compliance):
该度量反映软件需求分析工作的度量。根据该度量可以确定在需求分析阶段,软件需求规格说明中的需求不一致的比例,需求不完整的比例,需求曲解的比例,可以确定主要的需求问题类型,从而有效改进软件需求分析的质量。