软件开发质量和风险的定量监理
2、对软件需求的估算
假设在一个规约中有nr个需求,所以
nr=nf+nnf
其中,nf是功能需求的数目,nnf是非功能需求数目(例如性能)。
为了确定需求的确定性(无二义性),一种基于复审者对每个需求解释的一致性的度量方法为:
Q1=nui/nr
其中,Q1表示需求的确定性,nui是所有复审者都有相同解释的需求数目。当需求的模糊性越低时,Q1的值越接近1。
在CAD软件的例子中,假设计算机图形显示功能模块的功能性需求是10个,非功能性需求(响应速度和分辨率)是2个,所有复审者都有相同解释的需求数目是11个,则:
Q1=11/12=0.916667
而功能需求的完整性Q2则可以通过计算以下比率获得:
Q2=nu/(ni×ns)
其中,nu是唯一功能需求的数目,ni是由规约定义或包含的输入(刺激)的个数,ns是被表示的状态的个数。
Q2只是测度了一个系统所表示的必需的功能百分比,但是它并没有考虑非功能需求。为了把这些非功能需求结合到整体度量中以求完整,必须考虑已有需求已经被确认的程度。这可以用Q3来表示:
Q3=nc/(nc+nnv)
其中,nc是已经确认为正确的需求的个数,nnv是尚未被确认的需求的个数。
在CAD软件的例子中,假设数据库管理功能模块的唯一功能需求是10个,由规约定义或包含的输入个数也是10个,表示的状态的个数是1个,已经被确认的需求是8个,未被确认的需求是2个,则:
Q2=10/(10×1)=1.0
Q3=8 /(8+2)=0.8
3、估算验收测试阶段预期发现的缺陷数
(1)如果使用类似项目的数据,那么可以估计当前项目在验收测试时发现缺陷数,它等于在类似项目的验收测试阶段发现的缺陷数和这个项目估计的工作量与类似的总工作量比率的乘积。用如下公式表示:
验收测试缺陷的估计=验收测试缺陷数×工作量估计/实际工作量
在CAD软件的例子中,若以前有一个相似的图形处理软件,在验收测试的时候发现了12个缺陷,本项目估算的工作量是66人/月,实际的工作量是82人/月,则CAD软件项目在验收测试时可能出现的缺陷是:
验收测试缺陷的估计=12×66/82=10
(2)使用过程能力基线中的数据,那么可以使用几种方法来计算这个值:
a、估算每功能单元的缺陷数,那么功能点规模按前面讨论的方式进行估计,预期的缺陷数是质量数据和估计规模的乘积。
b、估算过程缺陷清除率。在这种情形下,在验收测试阶段预期存在的缺陷数可以由缺陷注入率、过程中的清除率目标以及估计的规模一起来决定。
4、针对维护活动设计的度量
IEEE Std.982.1-1988[IEE94]建议了一个软件成熟度指标(SMI),它提供了对软件产品的稳定性的指示(基于为每一个产品的发布而做的变动),以下信息可以确定:
MT=当前发布中的模块数;
Fc=当前发布中已经变动的模块数;
Fa=当前发布中已经增加的模块数;
Fd=当前发布中已删除的前一发布中的模块数;
那么,软件成熟度指标可以用下面的公式来计算:
SMI=[MT-(Fa+Fc+Fd)]/MT
当SMI接近1.0的时候,产品开始稳定。SMI也可以用作计划软件维护活动的度量。产生一个软件产品的发布的平均时间可以和SMI关联起来,并且也可以开发一个维护工作量的经验模型。
在CAD软件的例子中,若目前的软件是2.0版,当前发布的模块数是32个,当前发布中已经变动的模块数是8个,当前发布中已经增加的模块数是2个,当前发布中已删除的前一发布中的模块数是1个,则:
SMI=(32-8-2-1)/32=0.656,
从结果可以看出,目前的情况离产品稳定还有相当的距离。
5、软件可用性的计算
软件可用性是指在某个给定时间点上程序能够按照需求执行的概率。其定义为:
可用性=MTTF/(MTTF+MTTR)×100%
其中,MTTF是“平均失败时间”,MTTR是“平均修复时间”。
在CAD软件的例子中,若软件在6个月内失败一次,每次恢复平均需要20分钟(恢复时间为排除故障或系统重新启动所用的时间),那么,它的可用性是:
6个月/(6个月+20分钟)X100=99.92%
通常,提高系统的可用性基本上有两种方法:即增加MTTF或减少MTTR。而增加MTTF还要求增加系统的可靠性。