初次估计弹载软件项目估计方法研究
2017-03-17梁琪杨跃任延超张巧
梁琪+杨跃+任延超+张巧
[摘 要] 针对初次实施项目估计弹载软件特点,提出结合自顶向下估计法与自底向上估计法的软件项目估计方法,选用宽带Delphi技术作为其基础实施方法,并将其设计实例化。此方法现已在多个弹载软件项目成功应用。该方法能有效提高初次估计弹载软件项目估计的规范性、有效性,对其他领域的初次估计软件项目估计具有借鉴作用。
[关键词] 弹载软件;软件估计;自顶向下估计法;自底向上估计法
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 03. 082
[中图分类号] TP311.5 [文献标识码] A [文章编号] 1673 - 0194(2017)03- 0145- 04
0 引 言
软件项目估计是对软件项目规模、工作量、成本和进度等的预测,是软件项目计划编制、管理和控制的基础[1]。软件项目估计数据的使用贯穿软件项目的整个研制过程。本文中初次估计特指处于军用软件研制能力成熟度1级(初始级)[2]时,第一次开展软件项目估计活动时,无可用类似项目历史数据或数据散落于个人/开发组中,不能为弹载软件项目估计及项目后续策划提供支撑时的软件项目估计。此时软件项目估计不适用基于模型或基于历史数据估计方法。且弹载软件一般随弹交付使用方,研制周期明确,因此迫切需要合理的软件项目估计方法,从而建立有效的软件项目计划,为软件项目建立合理预算,确定合适资源,为实现软件项目承诺提供基础。
1 初次估计弹载软件项目估计方法研究
软件项目估计是软件项目管理的基础工作。软件项目估计包括有:规模估计、工作量估计、成本估计、进度估计和风险估计[3]。而针对弹载软件,软件项目估计主要集中在规模和工作量估计活动。如果规模和工作量估计不准确,可能导致软件项目组制定的计划无法完成。有效的软件项目估计方法能减少项目失败的可能性。初次估计弹载软件项目其自身特点决定必须设计合适的软件项目估计方法以满足其软件估计需求。
现在软件项目估计研究主要集中于基于模型或基于历史数据估计方法[3-6]。而进行初次开展弹载软件项目估计时,由于估计成员本身对估计模型、估计方法理解不足,并且缺乏符合要求的历史数据,所以使用基于模型或基于历史数据估计方法比较困难。
因此,本文引入基于宽带Delphi技术结合自顶向下估计法与自底向上估计法来有效应对初次估计弹载软件项目估计问题。项目规模估计时采用宽带Delphi技术进行估计。工作量估计时同时使用自顶向下和自底向上的估计方法,并对两种方法估计的工作量数据进行比较,通过判断数据偏差是否在允许范围内,分析偏差产生原因并根据分析结果调整参数或重新开始估计方式,直到估计数据可接受。具体工作量数据估计时采用宽带Delphi技术进行估计。从而达到结合自顶向下估计法及自底向上估计法优点,通过一次完成估计制定合理实施计划目的。
弹载软件一般规模小于1 000个功能点。对拥有1 000个功能点的应用来说,手动估计和自动估计的准确率不相上下[4]。因此选取宽带Delphi技术方法作为软件项目估计的实施方法。宽带Delphi技术是目前用的比较多的专家评估方法,该方法能在缺乏量化历史数据时开展软件项目估计[3]。在弹载软件项目估计实施时采用宽带Delphi有利于初次实施估计软件项目开展软件估计工作。
自顶向下估计法是用一个简单的方程从估计的规模求出估计的总工作量,各阶段的工作量可以根据它们占总工作量的百分比而得到[5]。在需求不太明确时,规模估计比较困难,这时估算的误差会比较大,且估计工作量必须逐级分配给任务,给项目计划制定人员带来额外难度。自底向上的方法,首先获得项目各部分估计的规模,然后得到整个项目估计的规模[5]。这种方法主要依据工作分解(WBS)来估算,首先将项目进行分解,列出主要工作,然后估计每件工作的工作量,汇总就可以得到整个项目的工作量,该方法能有效估计已知工作量,但无法应对初次估计软件项目中遗漏任务或任务变化带来的风险。由于在弹载软件项目估计后的制定项目实施计划时也必须对工作任务进行分解,所以采用结合自顶向下和自底向上估計方法可以结合两个方法的优点,有利于降低实施计划工作难度、提高估计有效性。
本文将结合自顶向下估计法与自底向上估计法的软件项目估计方法设计实例化。该实例已成功应用于两个弹载软件项目(某型飞行控制软件、某型导航软件)及一个非弹载软件项目(某型地面检测软件)。
2 初次估计弹载软件项目估计方法设计实例
2.1 制定软件产品的工作分解结构
软件项目组根据《软件任务书》,制定软件产品的工作分解结构(WBS),见图1。产品WBS的分解层次以便于规模估计为原则。
2.2 估计软件产品规模
利用2.1节制定的产品WBS估计软件产品的规模。软件规模以源代码行数来度量。软件规模估计时使用宽带Delphi方法进行估计。估计结果填入软件项目估计记录。
从规模数据推算出工作量数据时,对规模数据要乘一个调整因子或称难度系数。难度系数的设置参照表1。
2.3 计算工作量
根据项目整体规模估计项目的总的工作量。工作量的度量单位是“人时”。计算方法如下:
项目工作量 = 产品的规模 / 人均生产率
其中,产品的规模等于估计的规模乘以难度系数;人均生产率参考数据可以根据组织生产率水平进行设计,例如2.5行/人时,软件估计负责人可根据具体情况取值,但要说明理由。
将项目工作量按一定比例分配给各阶段。比例分配参考数据见表2所示。
软件估计负责人可根据本项目的具体情况调整以上分配比例,但要说明调整的理由。
2.4 估计成本
软件估计负责人估计人力成本,软硬件成本等。估计结果填入软件项目估计记录的成本估计表项中。
2.5 工作产品规模估计
一次性估计软件工作产品的规模。这里的软件工作产品一般指的是工程技术文档。规模估计的度量单位是文档页。应使用宽带Delphi的估计方法,估计项目工作产品的规模。
2.6 技术活动WBS分解
软件项目负责人组织相关人员对该项目的技术活动进行WBS分解,形成能够执行和跟踪的一个个技术任务。任务是软件项目跟踪和监督的最小技术活动单元,能被一个人在两周内执行完成。
技术活动拆分完成后,产生该项目的技术活动WBS,作为下一节任务工作量估计的基础。
2.7 任务工作量估计
软件估计负责人组织软件项目开发人员和相关人员对该项目的工程活动及非工程活动工作量进行估计。在任务工作量的估计时,应参照软件产品规模和软件工作产品规模估计结果。
(1)工程活动工作量估计:使用基于宽带Delphi的估计方法进行任务工作量的估计。
(2)非工程活动工作量估计:软件项目负责人组织软件项目开发人员和相关人员采用协商、讨论等方式,对该项目的非工程活动工作量进行估计。
2.8 建立项目的阶段计划
将项目各阶段所有任务工作量相加,得出项目阶段工作量。将阶段工作量与2.3节计算出的阶段工作量比较,如果偏差未超过偏差允许范围(例如20%),则可视计算工作量和估计工作量结果一致;如果偏差超过偏差允许范围(例如20%),则应分析原因,或调整阶段分配比例,或按2.7节重新进行估计。估计结束后将估计结果填入软件项目估计记录。
根据各阶段预期的工作量,按照各项工作完成的先后顺序,制定项目阶段计划,列出项目开发各阶段的预定起止日期。可得出项目的阶段计划,如表3所示。
2.9 建立项目的实施计划
任务估计完成后,根据任务书或合同要求、任务估计值、现有人员能力、设备资源情况制定项目的实施计划,作为对软件开发计划的细化,以利于项目的跟踪与监督,以及项目的测量。项目实施计划如表4所示。
2.10 建立项目实施计划网络图
根据实施计划表,画出项目活动/任务的网络图,如图2所示。使用项目管理工具的“甘特图”表示项目的实施计划。从图中可看出活动/任务之间的依赖关系,亦可确定项目的关键路径。
2.11 纳入《软件开发计划》
软件估计负责人将以上相应的估计值及相关的信息纳入《软件开发计划》。
3 总 结
本文引入结合自顶向下估计法与自底向上估计法,选用宽带Delphi技术作为其基础实施方法来有效应对初次估计弹载软件项目估计问题。该方法现已在三种不同类型软件项目(某型飞行控制软件、某型导航软件、某型地面检测软件)上成功应用。其实施结果表明:
(1)该方法能有效规范软件项目估计过程,能有效利用行业专家能力及零散项目数据;
(2)該方法提高缺乏软件项目估计经验项目组软件的估计有效性;
(3)该方法对非弹载软件估计具有借鉴作用。
结合自顶向下估计法与自底向上估计法方法能在初次估计情况下进行合理的估计,并指导建立合理的软件开发实施计划,从而有效指导弹载软件项目工程实践活动。
主要参考文献
[1]刘明友. 基于CMMI模型的软件规模估计方法研究[J].软件导刊,2013,12(3):21-24.
[2]总装备部电子信息基础部技术基础局.GJB 5000A-2008 军用软件研制能力成熟度模型[S].2009.
[3]夏晓翔.软件项目估算管理方法研究[D].南京:南京理工大学,2006.
[4][美]Capers Jones.软件工程最佳实践[M].吴舜贤,杨传辉,韩生亮,译.北京:机械工业出版社,2013:58-61.
[5]李华北,刘小茵,郑丹丹.过程改进基本原理及CMMI实施[M].北京:中国标准出版社,2009:77-86.
[6]王忠贵,刘姝.航天型号软件工程方法与技术[M].北京:中国宇航出版社,2015:289-296.