首页 理论教育软件研发成本度量规范解析

软件研发成本度量规范解析

【摘要】:相反,在整个软件研发项目的生命周期中,还需要持续不断地对软件研发成本进行测量和分析。而直接人力成本最直接的测量因素就是工作量,因此在软件研发过程中,可以只跟踪直接非人力成本和工作量。项目结束后测量成本:在软件项目结束后,为了解软件开发项目的整体成本状况,则有必要根据本标准第4章的要求,对各项成本分别进行测量。

1.测量规模、工作量、工期

【标准原文】

在项目研发过程中和项目结束后,应对项目的实际规模、工作量、工期进行测量。

在以下里程碑宜对规模进行测量:

——需求完成;

——设计完成;

——编码完成;

——内部测试完成;

——项目结束后。

规模测量方法宜与规模估算所采用的方法一致。

应定期或事件驱动地对项目工作量、工期进行测量。

除对总工作量、总工期进行测量外,还宜对项目不同活动、不同阶段的工作量、工期分别进行测量。

【标准释义】

软件研发成本度量的角度来看,在完成了对软件研发项目的规模、工作量、工期和成本的估算后,并不意味着软件度量工作的结束。相反,在整个软件研发项目的生命周期中,还需要持续不断地对软件研发成本进行测量和分析。这些测量和分析的工作,不仅仅是单个软件研发项目成功的关键因素,也是组织软件研发能力提升的基础。

因此,在软件研发项目前期完成项目的规模、工作量、工期的估算后,为满足项目计划和监控的要求,在项目研发过程中应该对实际规模、工作量、工期进行测量;为满足项目收尾的要求,在项目结束后对项目进行决算时,也需要对项目的实际规模、工作量、工期进行测量。

1)规模测量:软件项目的规模一般会随着需求的逐渐清晰而不断明确,规模测量的时间点可以在软件研发项目的里程碑点进行。常见的项目里程碑点包括:

a)需求完成:需求调研和分析完成,形成基线化的需求文档。需求完成后,功能规模理论上已确定,但考虑到实际的需求文档质量,可能要在设计完成后才可以进行详细功能点计数。

b)设计完成:设计人员根据用户需求文档,完成设计文档并形成基线,以便提交开发人员进行编码和开发。

c)编码完成:开发人员根据设计完成编码。

d)内部测试完成:一般可选择系统测试完成时。

e)项目结束后:系统上线并通过试运行,或通过用户验收测试等活动,得到用户可以结项的确认之后。

在各个里程碑点进行规模测量时,所采用的方法建议与规模估算所采用的方法一致。如规模估算阶段采用IFPUG方法,则后续各个里程碑点进行规模测量时,也应采用IFPUG方法。

此外,除了上述项目里程碑点之外,当项目发生正式的需求变更时,也有必要对规模进行测量。测量结果既是变更评估的依据,也将是之后项目计划调整的输入。

2)工作量、工期测量:当项目的规模发生变化的情况下,如发生需求变更后,毫无疑问要对工作量、工期进行测量,以保证规模变化之后工作量和工期的准确性。

有时在软件规模不发生大的变化的情况下,软件项目在具体执行过程中的工作量和工期,仍可能受到技术和人员等多方面的影响。如一个软件在研发过程中遇到重大技术问题需要攻克,即便软件规模本身没有大的变化,仍需要对工作量进行调整,而工期也需要相应地变化。

由于工作量、工期受影响的因素较多,因此需要较为频繁地对工作量、工期进行测量。一般来说,可以按下述两种时间点对工作量、工期进行测量:

a)定期。随着项目的进行,可定期对工作量、工期进行测量,常见的频率为每周、每半月或每月。如项目管理过程中本身有定期的报告制度,如项目周报、月报等,可随项目报告的周期进行工作量、工期的测量。其测量的结果也会对项目报告以及后续项目计划造成影响。

b)事件驱动。除定期地对工作量、工期进行测量之外,如在项目过程中出现较为重大的事件,也应随着事件的发生而对工作量、工期进行重新测量。需求变更之后的工作量、工期测量就是典型的事件驱动。除此之外,如上文提到的例子,在软件开发过程中突遇重大技术问题,可能需要投入人力加以解决,势必对工作量、工期造成影响,需要重新测量工作量和工期。又如在项目开发过程中,发生设备故障、人员损失(离职或生病)等情况,则可能会对工期造成影响,需要重新测量工期。

此外,对于工作量和工期的测量,除了包括对项目总体的工作量、工期进行测量之外,还应建议对项目的不同活动、不同阶段的工作量、工期分别进行测量。例如:对不同类型的活动如需求活动、设计活动、开发活动等进行单独测量,也可以对策划阶段、设计阶段、开发阶段等不同阶段进行单独测量。这样做的目的,一方面是为了支持项目管理工作,为项目计划的调整带来更准确的输入;另一方面可以积累各个活动和阶段的度量数据,为组织级的度量分析工作做数据的准备,也可以指导后续项目的策划。

2.测量成本

【标准原文】

在项目研发过程中,宜定期或事件驱动地对已发生的直接成本进行测量。

在项目结束后,宜按照本标准第4章的要求对各项成本分别进行测量。

对于可以按照交付软件规模进行结算的项目,应根据交付软件规模及规模综合单价计算实际成本。

【标准释义】

项目研发过程中测量成本:如本标准第4章所述,软件研发成本分为直接成本和间接成本。其中间接成本包括间接人力成本和间接非人力成本,都是不为特定研发项目而产生,但服务于整体研发活动的费用分摊,因此在特定研发项目过程中对间接成本进行测量的意义不大。而在直接成本方面,包括直接人力成本和直接非人力成本,都是为特定研发项目而投入的,因此需要在软件研发过程中进行测量。而直接人力成本最直接的测量因素就是工作量,因此在软件研发过程中,可以只跟踪直接非人力成本和工作量。

在软件研发过程中,对软件研发直接成本的测量周期,也可分为定期和事件驱动两种形式,其原则可参考上文工作量、工期测量的内容。在事件驱动方面,需求变更自不必说,承接上文提到的例子,如在软件开发过程中突遇重大技术问题,其解决方案无论是投入额外的人力,还是外购解决方案,都会对直接成本造成影响。又如在项目开发过程中,发生设备故障、人员损失(离职或生病)等情况,无论是设备维修或更换,还是人员重新雇佣等,也都需要重新测量直接成本。

项目结束后测量成本:在软件项目结束后,为了解软件开发项目的整体成本状况,则有必要根据本标准第4章的要求,对各项成本分别进行测量。即除了直接成本中的直接人力成本和直接非人力成本外,也需要对间接成本中的间接人力成本和间接非人力成本进行分摊和测量。这些数据除了作为本项目评价的重要内容之外,也是组织级度量数据库的重要输入。特别是间接人力成本和间接非人力成本数据的积累,对今后组织的估算准确性具有非常重要的意义。

对于可以按照交付软件规模进行结算的项目,应根据交付软件规模及规模综合单价计算实际成本。此处交付软件规模应为项目结束后所测量的软件规模,其测量方法应与规模估算所采用的方法一致。此处公式可参见《规范》中的5.1.5.5中的公式5的内容。

3.软件研发成本分析

【标准原文】

软件研发成本分析的内容主要包括:

——成本估算偏差;

——成本构成;

——成本关键影响因素相关性分析;

——成本估算方程回归分析。

在项目研发过程中,应定期检查实际发生成本与估算成本的偏差。如通过挣值分析方法监控项目进度。

数据分析的结果应与利益相关方充分沟通,并采取有效纠正措施。

项目结束后,应对成本及相关数据进行分析,并用于:

——项目评价;

——建立或校正成本估算模型;

——过程改进。

项目规模、工作量、工期、成本等估算及实际数据应有效管理并保存在基准数据库中。

【标准释义】

对软件研发成本进行分析有助于研发组织了解自身研发过程的情况,提高估算准确性、控制成本并为改进提供重要的决策信息。(www.chuimin.cn)

根据难度以及对成本分析的深入程度,可以分为:

a)成本估算偏差:分析估计成本与实际成本的偏差及原因。

b)成本构成:分析研发成本的构成情况,可以参考以下方式对成本进行分类:

——如标准第4章所述,分为直接成本和间接成本,其中直接及间接成本中再分为人力

成本和非人力成本;

——根据生命周期分为需求、设计、编码、测试、交付等阶段成本;

——根据工作类型划分为开发成本、项目管理成本、质量保证成本等。

通过以上分类的统计并结合“成本估算偏差”的信息了解成本估算产生偏差的主要原因。

c)成本关键影响因素相关性分析:软件研发过程中多种因素对成本产生不同的影响,这些因素对在各组织中的影响程度不尽相同,因此通过分析研发过程的因素与成本间的关系可以让管理者了解本组织成本控制的重点。

相关性分析通常使用的方法包括散点图以及Pearson相关分析:

——散点图将实验或观测得到的数据用点在平面图上表示出来,显示了一个因素相对于另一个因素是如何变化的。如图2-3给出了某软件项目的规模、工作量散点图示例。

978-7-111-56938-1-Chapter02-14.jpg

图2-3 散点图

——Pearson相关分析是统计学中分析变量线性相关的方法,通过计算可以得到变量间量化的相关系数,并通过相关系数判断因素对成本影响的大小。如表2-8所示,通过计算得到了各变量间的相关系数,用以判断其相关性的强弱。

2-8 各变量间相关系数

978-7-111-56938-1-Chapter02-15.jpg

d)成本估算方程回归分析:软件研发的管理者除了希望了解成本关键影响因素的影响程度以外,还希望获得成本与关键影响因素的量化关系,即关于成本与关键影响因素的估算方程。

回归分析(regression analysis)是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法,常用于建立回归方程。回归分析一般的步骤包括:

——根据预测目标,确定自变量因变量

——建立回归预测模型;

——进行相关分析;

——检验回归预测模型,计算预测误差。

如表2-9所示,通过线性回归工具对数据进行回归后得到预测模型:

生产率=-166.69+0.09×项目规模+39.92×项目人数+42.70×项目类型

2-9 统计分析结果

978-7-111-56938-1-Chapter02-16.jpg

建立回归方程后,管理者可以在项目初及项目中对成本进行预测并通过提前控制影响成本的关键因素达到控制成本的目的。

成本估算偏差的测量与分析可以使用挣值分析方法,该方法的核心是将项目在选定时间的计划指标、完成状况和资源耗费进行综合度量,将这些信息转化为统一的单位进行管理,例如:货币、工时等,从而能准确描述项目的进展状态。该方法的另一个重要优点是可以预测项目可能发生的工期滞后量和费用超支量,从而及时采取纠正措施,为项目管理和控制提供了有效手段。

挣值分析方法使用的一般步骤如下:

a)如2.5.2节第1点提到的,定期或者事件驱动地收集项目的数据,包括:

——PV(某阶段计划要求完成的工作量所需的预算费用);

——AC(某阶段实际完成的工作量所消耗的费用);

——EV(某阶段按实际完成工作量按预算定额计算出来的费用)。

b)计算评价指标,这些指标主要用于评价进度偏差及成本偏差:

——CV(费用偏差)=EV-AC;

——CPI(费用执行指标)=EV/AC;

——SV(进度偏差)=EV-PV;

——SPI(进度执行指标)=EV/PV。

分析各阶段的评价指标、评价估计成本和实际成本的偏差及原因。

如图2-4所示,挣值分析图中说明某个时间点的成本偏差及进度偏差,管理者能够通过图2-4的方式了解项目的进展状况。

978-7-111-56938-1-Chapter02-17.jpg

图2-4 挣值分析图

采用以上的成本分析方法得到结果后,应考虑结果对各利益相关方的影响,并与其就处理方法达成一致意见,包括处理问题、调整估算方法和改进开发过程等。

项目结束后,成本及相关的数据对于组织而言具有很大的价值,应该收集并进行分析。分析的目的和角度包括:

a)项目评价:根据成本估算偏差及构成评估项目组预算控制的能力以及流程执行的效率

b)建立或校正成本估算模型:如上文提到的成本估算方程回归分析,项目结束后产生了新的成本及相关数据,这些数据可以用于评价回归方程的效果,并可以帮助不断优化回归方程。

c)过程改进:通过分析成本分布占比和各类活动成本估算偏差率等数据了解开发过程的问题,将这些数据与经验以及对组织的了解相结合,可以为管理者提供过程改进的信息。

项目规模、工作量、工期、成本等估算及实际数据还应该保存在组织内部建立的基准数据库中,以供未来项目组以及组织使用,使用的方式包括:

a)提供同类项目估算时参考;

b)建立、评价及优化成本估算模型;

c)对质量问题进行相关性分析;

d)计算单位规模基准成本;

e)分析组织各活动成本占比等。

组织还可以将项目组的数据提交到行业基准数据库中,为行业基准数据的不断更新提供支持。