基于COCOMO模型的软件测试成本估算

   本文介绍了软件界影响最为广泛、也最著名的软件开发成本估算模型COCOMO,并且根据软件测试工作成本难以估算的特点,将COCOMO估算模型应用于软件测试成本估算工作中,以提高软件测试成本估算效率和成功率。 
   关键词 成本估算;COCOMO模型;软件测试;DO-178B 
  1 引言 
  在当今软件过程活动中,软件研发机构将研制力量的40%以上投入到软件测试之中已经越来越普遍。特殊情况下,对于性命攸关的软件,如战斗机飞行控制软件、核反应堆监测软件、神舟飞船上各型软件等,其测试成本(包括人力、经费、材料等)甚至高达所有其他软件工程阶段成本总和的3~5倍。因此,如何合理分配开发与测试的经费、人员等成为一个软件项目成功很关键的因素。而项目成本往往在项目前期,也就是项目成本预算中就已经确立,所以,有效的软件测试成本评估也显得极为关键。 
  2 软件测试成本估算现状 
  软件测试是软件生命周期内的一个重阶段,也是保证软件质量的重手段之一。随着市场对软件质量求的不断提高,软件测试不断受到重视。如何较好地制定软件测试计划,合理分配软件测试过程中的人力、物力资源,对软件测试的成本如何进行较为精确估计等都值得关注。 
  目前,对软件开发成本估算的研究与应用已经比较广泛,形成了以功能点分析法、专家判定-delphi方法等为代表的估算方法和模型。相比较而言,软件测试规模的估算研究和应用相对较少。尤其在软件测试的成本估计方面往往还凭测试专家的经验来定,这样极易导致软件测试由于预算的不足导致的测试活动的不充分、测试质量低下。 
  3 COCOMO模型简述 
  著名软件工程专家、经济学家Barry Boehm在其著作《软件工程经济学》中提出了软件估算模型层次结构,称为构造式成本模型COCOMO(Constructive Cost Model),至今该模型已经成为软件界最通用的估算模型。 
  3.1 三种类型的软件 
  COCOMO是针对Boebm划分的三种类型软件进行估算的。 
  1) 固有型(Organic Mode)项目规模较小、较为简单的项目,开发人员对项目有较好的理解和较为丰富的工作经验,如飞机的极限告警灯信号软件。 
  2) 嵌入型(Embedded Mode)项目这类项目的开发工作紧密地与系统中的硬件、软件和运行限制联系在一起,如飞机的飞行控制软件。 
  3) 半独立型(Semi-detached Mode)项目项目的性质介于上述两种类型之间,其规模与复杂性均属于中等,如考勤信息管理系统、OA事务处理系统等。 
  3.2 COCOMO的三级模型 
  1)基本COCOMO模型。该模型为静态、单变量,以估算出的源代码行数计算开发工作量和开发期。 
  开发工作量为E = a (KLOC)b 
  式中E为工作量,单位为人月;KLOC为交付的千代码行数;a,b为模型系数,如表1所示。 
  2)中级COCOMO模型。该模型除考虑源代码行数外,还考虑调节因子(Effort Adjustment Factor,EAF),用其体现产品、软件、人员和项目等因素。 
  开发工作量 
  E = c(KLOC)d×EAF 
  式中,c、d是模型系数,如表2所示;EAF是调节因子,它包含了4类15中属性,其值从0.7~1.66,如表3所示。 
  3)高级COCOMO模型。高级COCOMO模型除了保留中级模型的因素外,还涉及软件工程过程不同开发阶段的影响,以及系统层、子系统层和模块层的差别。由于篇幅关系,不详细介绍。 
  4 软件测试成本估算设计与实现 
  4.1 软件安全性等级划分 
  根据RTCA发布的DO-178B标准,软件的安全评估及风险分析需描述当其失效时对机身、机组人员、乘客产生的后果,以此确定软件DAL(Design Assurance Level)水平。 
  灾难性的失效将会导致航空器损毁,阻止继续安全飞行和着陆。
  危险的/严重的失效严重影响航空器的安全性和性能,降低机组人员克服不利操纵状态的能力,造成乘客的严重伤害。 
  较重的失效是明显的,但是比危险的/严重的失效等级影响小,给机组带来明显的工作量增加。 
  较轻的不会严重降低航空器安全性及有关机组的活动在他们的能力内能很好完成的失效状态。 
  无影响不影响航空器的工作性能或不增加机组工作量的失效状态。 
  按照软件失效条件把机载软件分为A-E五级,安全关键程度从A至E逐级降低。 
  DO-178B尽管是航空标准,但已经在整个军工领域已经得到推广和应用。本文在软件测试成本估计工作时候,首先也参照DO-178B标准,划分软件安全性等级。 
  4.2 软件测试各阶段划分 
  随着GJB5000A模型的逐步成熟,国内相当一部分软件研制单位开始有意识地接受并采用GJB5000A作为其软件生产过程的制度体系和标准。软件测试作为软件生命周期中一个重活动组成部分,必然按照GJB5000A标准,严格控制软件测试过程活动。 
  通常软件测试过程按四个步骤进行,即单元测试、集成测试、系统测试、验收测试,每个测试过程根据需有三类输入。1) 软件配置包括软件需求规格说明、软件设计说明、源代码等。2) 测试配置包括测试计划、测试说明、测试用例、测试程序等。3) 测试工具为了提高软件测试效率,有时测试工作需测试工具的支持。 
  同时,测试过程也有相应的输出。1) 测试结果数据包括测试本身的错误、测试发现的程序错误、文档错误等。2) 测试结果报告通常包括测试报告、软件质量分析文档等。 
  4.3 软件测试调节因子 
  可根据DO-178B标准中软件安全性等级,结合软件测试过程各个阶段,设计出相应的软件测试成本估算调节因子(Software Test Effort Adjustment Factor,STEAF),如表5所示。 
  由于软件测试工作量与软件开发工作量大致为1.11.0的关系,因此,软件测试工作量有由如下公式计算得出 
  TE = E×1.10×■STEAFi 
  式中TE为软件测试工作量,单位为人月。E为软件开发工作量,单位为人月。STEAF为软件测试成本估算调节因子。 
  4.4 软件测试成本估计实现 
  例如,某一地面远程通信嵌入型软件,源程序1万行,采用中级COCOMO模型估算。可以得出开发工作量 
  E = 2.8×101.2×1.4 = 62.13(人月) (数据取自表3-2,表3-3) 
  假设该软件为B级软件,则根据公式,测试工作量为 
  TE = E×1.10×1.10×1.30×1.40×1.35 = 184.71 (人月)(数据取自表4-2) 
  5 结束语 
  本文简单介绍了COCOMO模型知识与软件测试成本估算的基本概念,并初步探讨了如何将软件开发成本估计的成熟模型和思想用来指导软件测试成本估算工作,对实现软件测试成本估算有着重意义。同时,该实现方法只是一种初探,软件测试过程调节因子可能在各个单位有本地化影响,在今后的大量软件测试工程实践中,各个软件测试活动主体可以根据实际结果,进行数理统计,对软件测试过程调节因子进行相应的修订。 
  参考文献 
  1 宋巍.软件功能测试成本估算模型研究及其应用D.上海上海交通大学,2009. 
  2 柳纯录.信息系统项目管理师教程M.北京清华大学出版社,2012,12. 
  3 郑人杰,马素霞,殷人昆.软件工程概论M.北京机械工业出版社,2009,11. 
  4 杜海凤.基于COCOMO模型的软件定价方法研究D.北京北京交通大学,2012. 
  5 DO-178B, Software Considerations in Airborne Systems and Equipment Certification, RTCA,1992. 
  6 康玻等.软件测试方法与应用J.九江学院学报(自然科学版),2004.