COCOMO模型在喷气燃料系统测试项目估算中应用∗
2019-02-27田立军
田立军
(中国人民解放军91404部队 秦皇岛 066001)
1 引言
系统的软件测试是保证软件质量和可靠性的重要手段,其根本任务是监督软件开发过程,尽可能地发现软件中存在的错误或缺陷[1]。随着武器装备信息化程度越来越高,其规模化和功能性能方面比重急剧上升,对于安全等级很高的软件,如弹道导弹飞行控制软件、电源燃料监测软件、神舟飞船上各型号软件等,其测试资源消耗甚至高达所有其他软件工程阶段成本总和的3~5倍[2]。软件的测试工作任务必须是可持续性的,严格控制度量,对大型系统项目软件测试任务进行有效、准确的软件项目策划度量,是整个生命周期中提高软件质量,保证软件的可靠性重要前提和基础。
目前,对系统软件测试项目策划估算的研究与应用已经比较广泛,但在国内软件评测行业,大部分项目成本估算仅仅依靠的是经验和WBS工作分解结构法[3],这对系统软件整个测试过程的正规化、度量化保障是远远不够的。本文通过软件测试项目经验数据介绍了COCOMO模型理论,并在测试策划实施过程中进行了应用。
2 常用估算模型概述
项目任务的工作量估算方法有很多种,一般可以根据历史数据和软件规模估算的结果进行估算,主要有以下几种。
1)算法模型:包括一个或多个算法,生成的软件估计是一些变量的函数,例如COCOMO[4];
2)类比:新项目与已完成项目(规模和功能相近的项目)作比较,基于已完成项目的实际值进行估计;
3)自顶向下的估计:从项目的全局特性导出项目的整体估计,然后将其分配到各个分量上;
4)自底向上的估计:分别估计软件作业的各个分量,再综合出整体估计。
一般来说,具体估算时往往使用两种以上的方法,并参考以往做项目的历史数据,以帮助导出和验证估计。在喷气燃料软件系统鉴定测试项目中主要应用了COCOMO算法,在下文中详细描述。
3 COCOMO模型估算
著名软件工程专家、经济学家Barry Boehm教授在1981年发表的著作《软件工程经济学》中首次提出了软件估算模型层次结构,称为构造式成本模型 COCOMO(Constructive Cost Model)[5],该模型采用一种自底向上的微观参数估计方法,使用成本驱动因素从低端对软件环境进行描述,至今该模型已经成为软件界最通用的估算模型。
原始的COCOMO模型一般分为三个层级[6]:
1)基本COCOMO模型,用已估算出来的源代码行数(KLOC)为自变量的函数来计算软件开发工作量。
2)中级COCOMO模型,在用KLOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
3)详细COCOMO模型,包括中间COCOMO模型的所有特性。
当对项目了解很少时,使用基本模型;明确需求以后,使用中级模型;当设计完成时,使用高级模型。这三个模型具有相同的形式:
其中E表示需要计算的工作量,S表示以千代码行(KLOC)计数的程序规模,F是调整参数,其值为
F的值在基本模型里等于1,N的值是15,代表15个Fi成本驱动因子,详见4.2和4.3节,a和b的值见表1。
表1 COCOMO模型的参数
其中,三种项目类型代表的意义分别是:
1)基本类(Organic Mode)项目:规模较小、较为简单的项目软件。
2)嵌入式(Embedded Mode)项目:这类项目的开发工作紧密地与系统中的硬件、软件和运行限制联系在一起。
3)半独立型(Semi-detached Mode)项目:项目的性质介于上述两种类型之间,其规模与复杂性均属于中等,如数据管理系统、OA系统等[7,12]。
4 XX喷燃系统测试项目估算模型应用
4.1 XX喷燃系统简介
XX喷燃系统通过与上级系统主要设备配合,实现对喷气、燃料的自动检测,集中、实时、动态显示燃油系统重要工作节点的关键参数数值,及时报告系统运行状态、提供报警信息,其功能结构如下图1所示。
图1 软件功能划分图
4.2 项目数据的整理与分析
本文在项目测试成本估计的时候,参照国家标准划分软件安全性等级,根据系统研制任务书及需求规格说明等相关文档规定,该系统软件的安全性等级为B级。按照软件的安全性等级及开发方式可以确定软件类型的嵌入式,故式(1)中a和b的值分别选取3.6和1.20。
系统软件组成及描述如表2。
表2 系统软件组成
经过专业测试工具软件分析,该项目软件的代码注释行为总量的20%,故源程序指令行为28.64千行。式(1)中程序代码规模S的值为28.64。
通过使用恰当的工作量公式,COCOMO生成了对工作量的初步估计。当进行到测试策划阶段时,项目组长可以应用COCOMO的中级模型。Boehm假设了15中相互独立的成本驱动因子,每个成本驱动因子按照最多6点的序数标度分等级:非常低、低、正常、高、很高、极高,每个点对应一个成本驱动因子值[8,11],式(1)中工作量的最后估计值是乘以15个成本驱动因子Fi的值。
表3 COCOMO模型的成本驱动因子
4.3 项目测试进度估算
本质上,COCOMO模型包括了两个底层信息模型,第一个是用于描述软件项目的框架,包括软件产品的规模或复杂性、开发方式、测试过程等,用规模、相关参数、成本驱动因子及相关定义、公式与表格等来描述。第二个是经验库,即精心挑选的历史项目数据,它们确定了模型中大量的基本参数值[9]。综合项目框架,结合以往相似项目测试任务的经验数据,从表3中选取成本驱动因子Fi一组值如表4所示。
表4 成本驱动集选取值
因此,式(2)中调整参数 F=1.081×0.87×0.7826×1.00=0.736。
在本项目中,根据数据整理分析,式(1)中a=3.6,b=1.20,S=28.64
E=91.06人月(保留小数点后两位)。
5 结语
COCOMO模型虽已获得了广泛认可,但在运用的过程中也应注意到其特点与局限。首先COCOMO模型所依存的历史数据基本上都是大型的软件项目数据,所以用于估算大型软件项目时相对更为准确,当用于辅助小型项目决策时,要留意其估算结果可能有较大的误差。另外已有很多研究结果表明,当根据COCOMO的定义、积累一定数量的本地数据来扩充其已有的历史数据库,并重新校准模型参数后,得出的结果将更为准确。