基于缺陷度量的软件需求度量方法摘要:软件需求管理是软件生产与质量管理的重要内容。面对今天以需求变化难以控制为主要特点的软件危机,我们一方面必须采用更加合适的软件工程和需求工程方法,去适应需求的不断变化和增长;同时还必须采用合适的度量方法和手段,去分析需求变化的趋势和原因,并控制和管理需求的变化。该文提出了基于缺陷度量的软件项目的需求变化分析模型,并实现了对软件需求变化度量的定量分析,为项目管理者的决策提供帮助。关键字:软件需求管理;软件度量;缺陷度量1引言软件需求(SoftwareRequirement)是软件项目管理的一项重要任务,也是软件开发的依据,软件需求管理是软件生产与质量管理中最重要的一个环节。需求管理从用户需求获取开始,贯穿于整个软件的生命周期[1,2]。需求管理的目标是管理和控制需求,维护软件计划、产品和活动与需求的一致性,并保证用户的需求最终得到实现。需求变更问题是导致软件开发失败的主要原因之一。需求发生变化,不得不修改设计、重写代码、修改测试用例、调整整个项目的计划、相应的文档的修改等等,为整个项目的正常进行带来了困难。因此,科学地管理和控制需求以及需求变化,已经成为我们今天必须面对和解决的重要问题。需求管理的基础是有效的需求度量。只有通过对需求变化、需求分布、需求状态等数据的度量与分析,及时了解软件项目需求的稳定状态、需求变化的主要原因以及需求及其变化的主要分布情况和实现状态,才能实现有效的需求管理,并促使组织进行持续的过程改进,提高过程性能和能力,达到更加成熟和完善的水平。软件度量(SoftwareMeasurement)是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。目前软件度量已经发展成为一门至关重要的软件工程学科。2需求度量的数据数据是软件度量的依据。但是在度量过程中,不能只简单地去收集数据,正如Humphrey所说;“你不能只用数字来控制过程,这些数字必须恰当地代表你所要控制的过程,而且它们必须被充分地、很好地定义,能够反映实际的变化,以便作为决策的基础,过程的度量对于我们项目开发的逐步改进是非常必要的,必须仔细地计划和准备,否则结果将会不尽如人意”[3]。要理解软件项目中各种复杂的数据,如功能点、源代码行、缺陷等,以及这些数据之间的内在关系却是困难的。这就要求构造一种合理的结构来存储这些数据,并在此之上进行度量和分析。3基于缺陷度量的需求变化分析3.1需求变化的原因需求度量的主要目的是度量需求的数量、需求变化的类型以及变化数量在软件工程阶段的分布情况.需求的变化,不论返工还是新增,都意味着劳动成本的增加.需求变化是引起软件危机的根本原因,需求越在早期确定,软件项目按计划完成的可能性就越大.如果度量结果表明,在设计、编码和测试阶段存在大量的需求变更,则说明组织与之相关的软件过程有缺陷,应及时纠正或采用更合适的软件工程方法。IEEE公布的需求定义从用户和开发者的角度来说明什么是需求。可以将需求分解为四个层次:业务需求、用户需求、功能需求和非功能需求。这些需求往往在开发过程中发生变更,因而提出变更有可能在开发的任何阶段。引起需求变更可能有多种因素[4],如:1)单纯的用户因素:由于用户在软件开发的过程中不断加深对系统的了解,引发的对需求的新认识,于是提出了新的、变更了的需求。2)系统因素:在系统内部,如计算机硬件、操作软件、数据或支撑软件等的变更要求与其相适应,从而引起的需求的变更。3)工作环境因素:与软件运行相关的工作制度或法规、条例等的变更,或是业务变更导致的需求变更。4)需求开发工作缺陷:需求调研、分析、定义和评审工作不够充分,致使需求规格说明中存在着隐含问题,在开发过程中发现。或者需求开发中开发人员与用户沟通的不够充分,或者对技术和市场的发展认识不够。3.2基于阶段的缺陷度量基于阶段的缺陷度量将软件生命周期分割为不同的阶段和过程。需求变更管理主要是一个在项目开发过程中对需求变更进行控制的过程,该过程包括变更建议的提出,分析变更的影响并据此做出变更决策,监督变更的实施过程等[5]。规范化的变更控制过程可以有效地减少随意变更的数量,让变更处在一种可控的实施过程中。实施基于阶段的缺陷度量的前提首先是在软件生命周期过程中具有系统化、规范化的需求获取和管理措施,如对各阶段的需求和需求变更的评审、论证等。其次,度量要与软件开发过程紧密结合,软件阶段的划分为度量提供了数据采集点和采集机制。本文参照具有可能迭代的瀑布的生命周期模型[6],将软件生命周期划分为5个阶段:(1)需求阶段;(2)设计阶段;(3)实现阶段(编码、单元测试);(4)测试阶段(集成测试、系统测试、验收测试);(5)运行阶段。基于阶段的缺陷度量矩阵如表1所示,该矩阵记录了整个生命周期各阶段发现的缺陷数量、缺陷来源、缺陷被发现阶段、占总缺陷的比率和缺陷传递率等信息[7]。表1基于阶段的缺陷度量矩阵3.3基于缺陷度量的需求度量模型如表2所示,需求获取及需求变更由多种途径,需求及需求变更发生在软件开发的任何阶段。由于需求的变更造成的软件开发成本的增加可以通过度量各个阶段需求变更数来获取。因此本文以需求及需求变更数作为基础的度量元。表2需求及需求变更设:Di为第i阶段引入的缺陷总和;Cij为第i阶段引入的缺陷造成第j阶段需求变更的放大倍数;以排除需求分析阶段引入的缺陷作为基准Ci=1,可得到缺陷需求分析模型(如表3所示)。表3缺陷需求分析模型3.4基于缺陷度量的需求度量模型应用以表5中的数据进行分析,该项目采用可迭代瀑布模型,生命周期划分为分析、设计、编码、测试、运行五个阶段。表5需求及需求变化在软件开发周期的分布表6需求缺陷成本分析矩阵根据的需求成本度量基线和实际的度量数据,对各阶段缺陷排除成本和Cii值进行了估算和赋值:设发现和排除一个本阶段缺陷的质量成本为0.5个单位工作量;取C12=3;C23=4;C34=4;C45=6;则该项目的需求缺陷成本分析矩阵如表6所示。将该项目的各阶段缺陷数据和缺陷成本汇总在表7中。表7需求缺陷及需求缺陷度量表缺陷数量及需求发现阶段小计需求设计编码测试引入阶段需求01204020T1=180缺陷成本0180120120C1=420设计129103T2=142缺陷成本64.52012C2=96.5编码772T3=79缺陷成本38.54C3=42.5测试2T4=2缺陷成本1C4=1总计:T=403C=5603.4.1需求缺陷度量结果分析项目需求变更数为403,达到了需求及需求变更总数的43%,项目返工工作量为560个单位工作量。达到了项目总工作量的34%。从表中可以看出,由需求阶段引入的缺陷造成的设计、分析和实现阶段的返工工作量较大,这是由于对需求的不理解、需求理解不一致等原因引起需求的增加。缺陷原因分析的目的是通过缺陷的表现形式,发现缺陷产生的根本原因。在运用基于阶段的度量数据分析缺陷原因时,可以按照不同阶段工作产品的特点,对每阶段各类工作产品中可能存在的缺陷进行识别和分类,形成“缺陷原因列表”。以“缺陷原因列表”为指导有利于快速定位缺陷的来源、分析缺陷产生的原因、为制定缺陷排除方案提供依据,有利于提高软件开发质量和效率[7]。4结束语需求及需求变化是影响软件质量的重要因素,必须科学、合理地理解和控制需求变化.只有需求变化被真正控制在一个合理的、稳定的范围内,软件组织的所有工作都在预料之中,有计划地进行,软件产业的质量和效率才能提高。本文提出了基于缺陷度量的度量需求与需求变更的分析模型,为需求及需求变更的度量提供了一个可操作方法。并以一个简单项目的需求及需求变更数据说明了基于缺陷度量的度量需求与需求变更的方法。参考文献:[1]Qualitymanagementsystem---requirement.InternationalOrganizationforStandardization,IS09001,2000[2]PaulkMC,CurtisB,ChrissisMB,WeberCV.CapabilitymaturitymodelSMforsoftware.Version1.1.SoftwareEngineeringInstitute,CarnegieMellonUniversity,Pittsburgh,TechnicalReportCMU/SE1-93-TR-024,1993[3]Humphrey,WattsS.ManagingtheSoftwareProcess[M].Pittsburgh,PA:Addison-WesleyPublishingCompany,SEISeriesinSoftwareEngineering,1989.50-51[4]王莉,吴洁明软件项目中的需求变更管理的研究计算机技术与发展2007119-122[5]郑人杰,王纬,王方德,等。基于软件能力成熟度模型(CMM)的软件过程改进一方法与实施[M].北京:清华大学出版社。2003.[6]姜路,丁一夫,柳剑锋等译,SwapnaKishore,RajeshNaik著软软件需求与估算(SoftwareRequirementsandEstimation)机械工业出版社2004[7]苑畅,胡克瑾基于缺陷度量的软件质量成本分析模型计算机工程200745-47