好文档 - 专业文书写作范文服务资料分享网站

软件开发质量和风险的定量监理

天下 分享 时间: 加入收藏 我要投稿 点赞

软件开发质量和风险的定量监理

软件质量是指与软件产品满足规定和隐含的需求的能力和有关的特征的全体,即所有描述计算机软件优秀程度的特性的组合。

应用软件的质量依赖于问题需求的描 述、解决方案的建模设计、可执行程序的编码的产生以及为发现错误而运行软件的测试。一个优秀的监理工程师应该能够使用定量的方法来评估软件开发过程中产生的分析及设计模型、源代码和测试用例(use case)的质量。

软件开发质量的定量监理

为了实现这种实时的质量评估,监理工程师们必须采用技术度量来客观地评估质量,而不能仅仅采用主观的方法进行评估。

在评估中,首先要明确的一点是,软件需度量软件质量的基础。不符合需求的软件就不具备质量。

而在定量监理实践中,通常需要使用一种被称为尺度度量的方法,这种定量度量适用于一些能够直接度量的特性,比如,出错率定义为错误数/KLOC/单位时间等。

因而,对质量控制所应该建立的一些定量数据是:

(1)明确性(无二义性)、完全性、正确性、可理解性、可验证性、部和外部一致性、可完成性、简洁性、可追踪性、可修改性、精确性和可复用性的数据。这些数据可以用来评价分析模型和相应的需求规约质量的特征。

公开的可能缺陷数与报告总缺陷数的对比则可以用来评价测试精确度和测试覆盖度,同时也可以预测项目发布时间。

(2)产品发布前清除的缺陷数在总缺陷数中所占的百分比,有助于评估产品的质量。

(3)按严重缺陷、子系统缺陷来划分,分类统计出平均修复时间,这样将有助于规划纠正缺陷的工作。

(4)利用测试的统计数据,估算可维护性、可靠性、可用性和原有故障总数等数据。这些数据将有助于评估应用软件的稳定程度和可能产生的失败。

在上述定量数据的基础上,就可以开始进行估算。

1、基本的定量估算

基本定量估算示例: 设

F为用功能点描述的软件规模;

D1为在开发过程(提交之前)中发现的所有缺陷数;

D2为提交后发现的缺陷数;

D为发现的总缺陷数。

因此, D=D1+D2

对于一个应用软件项目,则有如下计算方程式(可以从不同的角度估算软件的质量):

质量=D2/F;

缺陷注入率=D/F;

整体缺陷清除率=D1/D;

同样以上期中的CAD软件为例,根据上期计算所得结果,功能点F为366,而在开发过程中发现了15个错误,提交后又发现了4个错误,则:

D1=15,D2=4

D=D1 +D2=15+4=19

质量(每功能点的缺陷数)=D2/F=4/366=0.0109

缺陷注入率=D/F=19/366=0.05191

整体缺陷清除率=D1/D=15/19=0.7895

有资料报告,美国的平均整体缺陷清除率目前只达到大约85%。而像AT&T、IBM、摩托罗拉和惠普这样一些大公司的顶级项目,通过实施最佳实践,其缺陷清除率可以超过99%。

众所周知,清除软件缺陷的难易程度是不同的。需求错误、规格说明、设计问题及错误修改是最难清除的。表1给出了美国平均缺陷的情况:

表2反映的是CMM五个等级是如何影响软件质量的,其数据来源于美国空军1994年委托SPR(美国一家著名的调查公司)进行的一项研究。

从表中可以看出,CMM级别越高,缺陷清除率也越高。

在监理过程中,可以将这这些标准或指标结合起来使用,用以辨明可能存在的质量问题。

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还要求增加系统的可靠性。

6、利用植入故障法估算程序中原有故障总数ET

通常可以采用捕获-再捕获抽样法来估算程序中原有故障总数。

设Ns是在测试前人为地向程序中植入的故障数(称播种故障),ns 是经过一段时间测试后发现的播种故障的数目,n是在测试中又发现的程序原有故障数。

假设测试用例发现植入故障和原有故障的能力相同,则程序中原有故障总数 N(=ET) 估算值为:

例如,在CAD软件的测试过程中,人为播入的故障数是5个,经过一段时间的测试后发现的播种故障数是4个,在测试中又发现原有的故障数是2个,则程序中原有的故障数是:

N=(5/4)× 2=15个

软件开发风险的定量监理

软件开发质量和风险的定量监理

软件开发质量和风险的定量监理软件质量是指与软件产品满足规定和隐含的需求的能力和有关的特征的全体,即所有描述计算机软件优秀程度的特性的组合。应用软件的质量依赖于问题需求的描述、解决方案的建模设计、可执行程序的编码的产生以及为发现错误而运行软件的测试。一个优秀的监理工程师应该能够使用定量的方法来评估
推荐度:
点击下载文档文档为doc格式
6na4t6i6ml2wkqq4mj6h371qz5d0jm00kly
领取福利

微信扫码领取福利

微信扫码分享