软件质量是指与软件产品满足规定和隐含的需求的能力和有关的特征的全体,即所有描述计算机软件优秀程度的特性的组合。
应用软件的质量依赖于问题需求的描述、解决方案的建模设计、可执行程序的编码的产生以及为发现错误而运行软件的测试。一个优秀的监理工程师应该能够使用定量的方法来评估软件开发过程中产生的分析及设计模型、源代码和测试用例(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(美国一家著名的调查公司)进行的一项研究。