n 缺陷的预测
质量、成本和进度是决定一个项目成败的关键因素。虽然国际软件质量标准中有说明,但是由于软件拥有很多质量特性,因此也很难定义软件质量的内容。在实践中,质量管理往往跟缺陷相关,因此我们使用交付后的缺陷密度,即:交付后软件的每个单位规模的缺陷数作为软件质量的定义。该定义是实际上的行业通用标准。该定义表明一个软件项目的目标就是尽可能的降低交付后的产品的缺陷数。但是,如何定义缺陷呢?通常我们可以将软件的缺陷理解为导致开发出的软件与客户的要求或需求不一致的因素。
对于高质量的软件来说,最终的产品应该尽量少缺陷,而软件开发是一种人为的活动,不可避免的会注入各种缺陷,因此,对于交付的高质量软件来说,积极的去除缺陷很有必要。排除缺陷贯穿质量控制的评审活动和测试活动中。质量控制不同于质量管理。因此质量控制关注找到并排除缺陷,质量保证的主要的目的是确保软件开发的流程和标准被遵守执行。
软件质量控制对任何项目都很重要。详细可以参考CMMI3级中关于软件测试的实践。关注点为确保质量控制活动合理执行。我们称这种战略为“流程化质量控制方法”。量化进行质量计划和质量是CMMI4级关注点。我们首先讨论质量管理的概念和方法,然后描述质量计划的方法应用。
n 软件质量和缺陷
在讨论质量管理的技术之前,首先要理解缺陷注入和缺陷排除的过程。缺陷在软件开发的整个阶段都会注入,也就是说,在将从获取客户需求到开发出满足客户需求的软件产品的过程中,缺陷是随时都可能产生的。这些阶段主要是需求阶段,概要设计阶段,详细设计阶段和编码阶段。
基于上述原因,在交付产品前的排除缺陷就显得极为迫切。
项目的过程包括发现缺陷以及由此引发的排除缺陷的很多活动,虽然两者不同,但是我们讲利用排除缺陷来综合考虑项目。缺陷发现的时间越晚,排除缺陷的成本就越高。因此一个成熟的过程一定包括每个阶段质量控制活动。缺陷排除的活动包含需求评审,设计评审,代码评审,单元测试,集成测试,系统测试和验收测试(虽然计划文档的评审也帮助提高软件质量,但这里不包含对计划文档的评审)。过程的缺陷注入和排除如下图所示。
质量管理的任务是计划合理的质量控制活动,并适当的执行和控制这些活动,使得在产品交付之前能发现的缺陷达到最多。
n 质量管理的流程化方法
我们知道,通过评审和测试可以发现缺陷。在质量管理流程化方法中,需要建立评审和测试活动的流程和工作指南。在执行识别缺陷的活动中要按照规范的方法执行,比如:系统测试流程通常包括制定测试计划,在计划中列出了所有的需要测试的测试用例,执行测试计划评审,然后执行测试计划。我们这么做的依据是:缺陷识别方法规范-该规范规定在一些活动点上通过执行过程来发现缺陷。CMMI3级应该有这样一个合理的质量管理的流程化方法。
仅仅执行一系列规程并不能提供判断缺陷排除效果或最终代码质量的基础。另外这个方法高度依赖于流程的质量以及流程执行的质量。比如:如果认真编写了测试计划,并认真评审了该计划,那么完成测试后的软件会比没有做测试计划和评审的软件质量更高。一个关键问题是该流程方法并不能为项目经理提供量化方法来评估软件的质量-判断软件质量唯一可见的评判标准就是是否执行了质量控制活动。一个好的质量管理方法应该在项目的早期提供一些警示或提醒,早期预警使得有时间进行干预,避免,将风险降到最低。为了达到这个目标,有必要预测出项目的不同阶段的缺陷密度。这样就可以通过控制项目执行阶段的缺陷密度来保证最后的产品满足既定的目标。
这种方法使得质量管理酷似管理工作量和进度:首先设定交付软件的质量目标,从目标出发,估计项目不同阶段的参数值,建立里程碑。如果达到估计值,最终的产品很可能满足最终目标的水平。在项目执行过程中,收集实际的缺陷密度,并通过与估计值的比较来决定该项目是否正常运行,或者需要一些改进行动来确保最终的软件产品能达到期望的水平。
另一个软件质量的概念是缺陷排除率,我们定义缺陷排除率(DRE)为: DRE=质量控制活动中发现的缺陷数/质量控制活动前产品的所有错误*100%
因为是项目结束的时候才能计算出某个质量控制活动或某个阶段的缺陷排除率,所以缺陷排除率不适用于质量管理,它无法对项目执行过程中的产品质量进行控制。
设定的质量目标是软件交付后的缺陷密度。一旦设定质量目标,估计出不同阶段的缺陷水平,确保满足估计值以达到质量目标。流程管理就是将预测缺陷水平变为实际缺陷水平比较基准,以评估开发过程是否朝着实现质量目标的方向推进。
该方法的效率取决于一个关键因素:我们预测项目不同阶段的缺陷的准确度。预测缺陷的一个方法是利用缺陷排除率和缺陷注入率。如果能知道或估计出每个阶段的缺陷注入率和质量控制活动的缺陷排除率,那么通过项目的规模就可以估计出每个阶段质量控制活动后的缺陷水平。该预测可用于量化质量管理。
上述方法建立在可预测项目的缺陷注入率的基础之上。历史数据的缺陷注入率可以用来估计当前项目的缺陷注入率。当然,也可能出现大的偏差。如果实际值超出了范围,项目经理要足够的重视,可以通过分析其他因素来确定是否是项目管理出现了问题而导致了这个结果,如有必要,需要采取矫正措施。另外工作量是一个很好的指标来帮助解决这类问题,通过监控工作量趋势来了解实际和估计的工作量来了解实际和估计的缺陷水平。