APP下载

软件缺陷的评估方法分析与研究

2009-06-18王鹏飞吕鹏淦

软件工程 2009年6期
关键词:软件缺陷测试阶段项目管理

王鹏飞 吕鹏淦

在众多软件质量指标中,软件缺陷是最为直观和最为重要的指标。因此,通过对软件缺陷的评估来进行软件质量控制是一种很好的方法。本文将软件缺陷作为软件质量的评估指标,引入软件项目风险管理手段,以影响软件缺陷的风险因素为切入点,全面综合软件开发组织和技术方面的因素,将软件开发过程中的各种风险因素纳入软件缺陷评估体系。

软件质量可以通过一系列度量因素来描述。对软件质量,我们大致可以总结出5个关键度量维度,即客户满意度、产品价值、关键属性、缺陷率和开发过程质量。高质量的软件,应具备外部属性和内部属性,其中外部属性包括产品的正确性和精确性、可用性、运行效率、可靠性、健壮性和适应性;内部属性包括可维护性、易扩展性、平台灵活性、可复用性、易测试性、代码可读性和整体理解性。软件质量重点强调软件需求、具体标准和隐含需求。

目前,人们对软件质量保证体系的研究已比较成熟。世界上关于软件质量保证体系存在CMM/PSP/TSP、ISO 9000系列和ISO/IEC 15504(SPICE)三个流派,其中,以美国国防部支持的CMM/PSP/TSP流派研究得最为深入,使用得最为广泛。

在软件缺陷分析和预测研究方面,人们进行了大量的研究,开发出一些软件缺陷预测模型。这些模型大致分为两类:一类是在软件开发的测试阶段,根据历史数据预测软件缺陷;另一类是在软件开发之前,通过对以往项目的缺陷数据进行分析,预测在软件开发中会出现的缺陷数,这些模型大多可以用于软件开发过程中的质量控制。

软件缺陷风险识别框架

软件生命周期是软件项目开发的重要阶段划分,风险管理的实践通常都是与其结合进行的。本文按软件项目生命周期进行分阶段风险因素识别,通过文献总结和软件项目从业人员的经验总结获取有价值的风险因素。

为了更好地了解基于软件项目风险分类的风险因素识别方法,下面来看看软件开发项目风险结构图(如图1所示)。该分类从三个方面分析:软件项目生命周期过程、项目内部环境和项目外部环境。事实上,在软件项目进展的过程中,项目的内外部环境中的风险因素始终威胁着项目,这些内外部因素随着软件项目的进展在不断演化,不断影响着项目的产出结果。软件项目的管理技术将项目团队置于项目环境之中,正是项目的环境、项目的管理技术和项目团队影响着整个项目的进展。项目的环境就是项目特性,它包含了项目的本身需求因素、项目的内外部因素等;项目管理包含了项目的管理思想和管理技术;项目团队包括了项目的技术人员和项目的管理人员。

项目特性、项目管理和项目团队三者之间,其实是互相影响的关系。当然,项目管理是其他两者的重要纽带,是三者关系的重要推力。紧密结合的三者又在项目的进展中不断改变各自的影响力,互相均衡自己的影响力来推动项目的进展。

在一个软件项目当中,项目管理人员和项目技术人员是可以在建设阶段中熟知一部分风险的,只是从项目组织上无法通过沟通合作对风险形成一致的认识以实现共同抵御风险;在项目建设过程中,持续的风险评估对于风险管理有着重要意义,这就要求风险评估应当跟随项目进展,应当经历项目建设的每一个阶段,并对项目建设过程中变化的环境因素进行持续的风险评估;为了更有效地进行持续的风险评估,就需要一个结构化的风险评估方法,而且应将风险评估工作放置在一个开放的环境之中;最后,在项目团队中要形成一种认识,为了取得项目建设的成功并非需要控制所有的风险。

软件缺陷风险评估模型

项目管理者依靠有效的项目管理方法,组织项目团队在相应的项目环境下去解决一定的项目需求,而项目环境和项目需求是这个项目最典型的特性。在整个项目阶段进展过程中,项目团队、项目管理和项目特性始终影响各阶段的递进,就好像一条纽带把它们紧紧联系起来。

软件缺陷的评估,可以放在需求阶段、设计编码阶段和测试阶段进行,软件开发在不同阶段都会有项目团队的参与,项目团队的工作能力和效率将直接影响着各个阶段的项目产出。

风险模型构造。软件缺陷的风险识别,是按照软件生命周期的阶段分类进行的,若将各阶段的风险因素置于同一个网络模型中,那么,这个模型无论它的复杂度还是数据存储空间都会制约着风险模型的评估效率。因此,将风险模型按照软件生命周期各阶段进行分类,每类之间按照阶段递进方式进行参数传递,这种分阶段评估模型可以提高风险评估的效率。

需求阶段产生的需求错误和需求变更,经过需求检测和新需求匹配性审核进入下一个阶段;设计编码阶段接受检测后的需求错误、需求分析文档和新需求匹配性审核,输出编码错误和设计文档进入测试阶段;测试阶段接受设计编码阶段的输出和用户方试用的效果共同影响项目的缺陷率。项目团队工作能力的评估是贯穿三个阶段进行的,它的输出进度压力、管理者工作能力和技术人员工作能力,这些都作为三个阶段的评估输入。从图2可以看到,各阶段风险模型的输入和输出、模型之间的联系因素等。分阶段模型一旦建立,就可以在软件开发过程中的关键时刻设立预测点,从而对整个开发过程进行有效的管理。

团队工作能力评估。团队工作能力评估主要根据管理者和技术人员之间的沟通以及项目管理的计划和分工水平来进行,具体来说就是项目客户代表的工作能力、项目经理的资质、项目成员的技术水准、员工之间的沟通机制、项目管理人员的计划分工能力和项目团队的人才管理能力。

图3描述团队工作能力的风险模型。图中给出了设计阶段的设计质量目标的影响图,包括设计质量受到阶段进度、开发人员工作能力、采用的技术、管理者工作能力,并且软件开发其他阶段质量目标都有类似的影响结构图,并进一步细化项目管理人员工作能力的评估、项目技术人员工作能力的评估和整个项目进度的评估。

软件缺陷评估工具

评估工具的应用,能够让项目经理了解到项目目前的管理水平和风险威胁,并根据提前的评估通过有效的管理控制措施来提高项目的成功率,在项目和项目管理者之间架立桥梁。评估工具的核心就是图4中的四个风险模型,四个风险模型分别描述了项目不同阶段风险因素之间的影响关系。

评估工具总体结构。项目经理可以通过评估工具的风险简要表,向评估系统提供项目的目前基本信息,经过项目团队工作能力的评估之后,可以分别进入不同阶段的风险评估。当然,不同的阶段评估将需要管理者提供不同的当前项目基本信息。

评估工具目前可以提供三类评估:一类是全程预测,即软件开发需求分析前期,对开发质量的整体评估,按照图4中首先进行团队工作能力的评估,接着进行需求阶段的评估,然后是设计编码阶段评估,最后是测试阶段评估,整个评估路线就是① ④ ⑤;第二类是需求后阶段评估,即需求分析阶段之后的设计编码和测试阶段评估,在这一类评估之前,必须要了解项目在需求阶段的产出,包括需求阶段引入的缺陷和需求变更的评估,按照图4中首先进行团队工作能力的评估,接着进入设计编码阶段的评估,最后进行测试阶段评估,整个评估路线就是② ⑤;第三类是测试阶段评估,在这类评估之前,必须要了解项目在需求阶段和设计编码阶段的产出,包括需求分析质量、设计文档质量和编码阶段引入的缺陷的评估,按照图4中首先进行团队工作能力的评估,接着直接进入测试阶段评估,整个评估路线就是图中的③号路线。

数据流图。评估流程说明了评估工具应用的场合,而评估工具的数据流图可以进一步解释评估工具的输入和输出,为具体应用提供更明确的数据操作。

在评估工具的数据流图中,项目经理首先需要选择软件开发的评估阶段,接着进入评估工具的输入状态,完成相应的风险因素的评估,进入评估工具的整个评估路线,最后得到软件缺陷的风险状态和其他风险的状态值,这些状态信息可以作为项目经理进行风险管理的可靠依据。

软件缺陷数目是软件可靠性的重要度量指标,而软件可靠性是衡量软件质量的最重要因素。如何为进行项目管理提高重要的风险信息,对软件缺陷进行合理、正确的评估,已经成为项目管理的首要任务。这样,软件项目的风险管理成为软件项目管理的重要工作,能否很好地解决这些问题将直接影响到软件项目风险管理的有效性,同时也影响到软件开发的质量和软件项目的完成。

参考文献:

[1] 朱鸿,金凌紫.软件质量保障与测试.北京:科学出版社,1997.

[2] 李文静.软件缺陷与软件测试.计算机与网络,2001,(21):31-32.

[3] 黄国青,田英.改善软件开发质量的全面质量管理办法.西北工业

大学学报(社会科学版),2001,21(3):20-22.

[4] 叶俊勇,汪同庆,杨波,彭健.软件开发的质量保证体系.计算机与现代化,2002,(6):1-4.

[5] 郑翠芳,吴志杰,夏涛,张伟燕.基于BBNs的软件残留缺陷预测模型.微计算机信息,2006,(3):269-271.

[6] Norman Fenton,Martin Neil.A Critique of Software Defect Prediction Models. IEEE Transactions on Software Engineering,1999,25(5):675-689

猜你喜欢

软件缺陷测试阶段项目管理
项目管理在科研项目管理中的应用
基于源文件可疑度的静态软件缺陷检测方法研究
浅谈计算机软件工程技术中的逻辑运用
基于NPE-SVM的软件缺陷预测模型
Android应用软件测试研究
开源程序的软件缺陷分布特征的量化分析研究
抽样技术在政府审计中的应用研究――基于细节测试阶段
关于改进英语专业高级英语教学过程的分析
软件缺陷管理方案分析