CMMI之软件缺陷来源和排除方法研究

为什么现在总是有这么多的缺陷直至系统测试和用户测试的时候才发现,我们如何才能尽早的移除这些缺陷呢?

在美国有针对在不同阶段使用不同方法尽早避免和移除缺陷的一些研究方法。那么我们如何使用这些方法呢,目前中国软件公司的缺陷移除做的怎么样呢,开发试人员的经验如何呢?

我们机构已经在很多公司已经帮助他们使用这些方法来提高质量。现在我们开始尝试研究在不同公司之间是不是有类似的规律或者模式,如果这个成功了,我们将会为不同公司在做计划的时候提供度量基线或者标准,以便这些公司能制定符合他们公司要求的软件开发质量的基准,或者开发一个高质量可预测模型供他们公司自己使用。我们从以下几个方面来简单介绍:

缺陷主要来源:

缺陷有很多来源,在美国由于需求,设计,代码,文档以及修复缺陷产生的缺陷大约有 5 个缺陷/功能点,好的项目可以控制在2 个缺陷/功能点,差的可能会达到 7个缺陷/功能点。列举以下 :

10个方法:

2.非功能性需求

3.架构、设计

4.新的源代码

5.未经认证的复用代码(外部来源)

6.未经认证的复用代码(已有应用程序)

7.未经认证的复用设计和架构复用

8.文档(用户手册,帮助文件,等)

9.不良的代码修复,或缺陷修复中引起的二次缺陷

10.数据库和网站的数据缺陷

预防缺陷的主要方法:

一系列的缺陷预防方法能够使缺陷从 5个缺陷/功能点降低为 2 个缺陷/功能点,被验证过的复用可是业内最通用的缺陷预防方法。还有一系列日本的开始传播到其他

一些国家。列举以下 10个方法:

1. 经认证的需求,架构和设计复用

2. 经认证的代码复用

3. 经认证的测试计划和测试用例复用(回归测试)

4. 看板[软件开发](主要在日本)

5. 改善[软件开发](主要是日本)

6. 防错[软件开发](主要在日本)

7. 质量圈[软件开发](主要在日本)

8. 软件的六西格玛

9. 软件开发方法,例如 RUP和TSP*

10.项目开始前做好质量成本和技术债务的正式预估

测试前的缺陷排除:在测试开始之前应该做的比测试本身更重要的事情是什么呢,众所周知的方法是排除缺陷,包括需求模型,自动化证据和对需求、设计和代码脚本的评审。(比较流行的方法是敏捷开发和极限编程里面的结对编程方法。)正式评审的方法已经被验证,可以提高缺陷移除的效率,并且有超过40年的经验和几千个项目 可以说明这一点。评审的方法也在每个主要的测试阶段提高缺陷移除。列举以下 10  个方法:

1.排除缺陷工具(自动化)

2.结对编程

3.质量保证(QA)人员检查主要文件和计划

4.需求、设计、代码、UML  和其他可交

5.需求变更的正式评审

6.编辑和校对关键需求和文档

7.需求,设计文档的静态分析

8.新的、复用的,和修复代码的静态分析

9.在文档测试时运行 FOG  和 FLESCH

10.验证和确认

软件开发方法:

软件开发方法,例如 IBM 的 RUP  以及Watts Humphrey  提出的 TSP  都是很好

的方法可以降低缺陷并提高缺陷移除率。其他一些方法,列如瀑布和 cowboy  是弱

化质量的方法,以下例举说 10  种有效的软件开发方法。统一的软件开发过程

1.TSP/PSP

2.RUP  统一的软件开发过程

3.极限编程

4.敏捷

5.面向对象

6.快速应用软件开发

7.演化式开发

8.螺旋开发

9.结构化系统分析和设计方法

10.迭代开发

总结:

软件公司花了很多时间用来查找和修复缺陷,这显然是不对的,将缺陷预防、测

试前的缺陷移除和正式的测试相结合能够减少  50%的软件缺陷修复成本。任何

公司或者政府组织如果不度量缺陷移除效率因而不能知道发现软件缺陷的效率

如何。

Phil  Crosby,美国国际电话电信公司质量副总,因为他的一句严格“质量免费”

而出名,对于软件质量来说不仅仅是免费,而应该去缩短开发周期,减低开发成本,

并且能很大程度上缩短维护成本和所有项目成本。


评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。