Primavera功能点方法与软件研发项目规模成本估算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Primavera功能点方法与软件研发项目规模成本估
算
与软件研发项目规模成本估算
上海普华科技进展胡晓俊
Primavera系统中的功能点估算方法概述
➢功能点估算的概念
功能点估确实是一种基于软件需求特性对软件项目的规模进行估测的方法。
1979年IBM公司的Alan Albrech第一开发了运算功能点的方法,这种方法是通过评估和计量软件产品所需的内部差不多功能和外部差不多功能数目,再依照技术复杂度因子(权重)对这些软件功能计数进行量化,得到软件研发项目规模的最终结果。
同时那个结果与软件的成本估算有着紧密的关系。
另外功能点这种估算方法与实现产品所使用的编程语言和技术没有关系,能够用于各种软件开发项目的规模估算中,目前功能点的估算方法差不多被广泛的认可在信息系统、数据库密集型、4GL应用系统开发的规模测量中。
功能点的估算有两个目的:第一是作为软件规模的测量、对比和分析(如软件度量方法)的基础;第二,也是更重要的目标,是作为软件成本估量模型的输入,软件的成本估量则是基于功能点和工作量之间的体会成本估量关系(CER)进行的。
Primavera系统是一个应用于多行业的企业级项目治理的综合平台,要紧应用于企业的多项目时刻进度的治理、资源角色治理、费用成本治理、沟通治理、综合治理等项目治理领域。
功能点估算的功能能够在Primavera系统Project Management组件中的一个自上而下估算的工具中实现。
那个工具只是整个Primavera系统中的一小部分,但它将自上而下估算的方法和功能点估算的方法演绎成可实际操作应用的步骤,
➢功能点估算的过程
功能点的估算能够划分为三个步骤:统计未调整的功能点计数(UFP)、统计总阻碍度(TDI)和运算最终调整功能点计数(FP)。
其中最终调整功能点计数确实是我们功能点估算的最终结果。
它是用来度量软件产品功能的标准单位,并可作为软件研发项目规模成本估算的基础。
功能点的运算公式为:FP = UFC×TCF,TCF称为技术复杂度因子,是由总阻碍度TDI运算出来的:TCF = 0.65 + 0.01×TDI。
因此功能点的运算公式也能够表示为:FP = UFC×(0.65 + 0.01×TDI),如下图所示。
过程示意图:
第一步:运算未调整的功能点计数(UFP)运算输入:用于估算第三步最终功能点计数(FP)的运算
统计未调整功能点计数(UFP)统计总阻碍度
(TDI)
运算最终调整功
能点计数(FP)
用于估算第一步的
未调整功能点计数
(UFP)的运算
用于估算第二步的
总阻碍度(TDI)的
运算
软件各种复杂度功能特性的计数各种复杂度
的权重因子
当前这种类
型功能计数
的加权总和
所有类型功
能计数的加
权总和
✧内部逻辑文件(ILF)
是最终用户能够进行爱护和识别的逻辑相关数据组,这些数据通过外部
输入爱护并完全储存在应用程序的内部。
最低、平均和最高复杂度的权重分别为7、10和15。
✧外部接口文件(EIF)
外部接口文件是仅用于引用目的的逻辑相关数据的用户可识别的组。
数
据完全驻留在应用程序外部,由其它应用程序所爱护。
外部接口文件是
其它应用程序的内部逻辑文件。
最低、平均和最高复杂度的权重分别为5、7和10。
✧外部输入(EI)
外部输入是数据由外向内跨过边界的差不多处理过程。
数据可能来自于
数据输入屏幕、电子输入或其它应用程序。
数据能够是操纵信息或业务
信息。
假如数据是业务信息,它用于爱护一个或多个内部逻辑文件。
假
如数据是操纵信息,它不必更新内部逻辑文件。
最低、平均和最高复杂度的权重分别为3、4和6。
✧外部输出(EO)
外部输出是导出的数据由内向外跨过边界的差不多处理过程。
数据创建
发送给其它应用的报表或输出文件。
这些报表和文件由一个或多个内部
逻辑文件和外部接口文件所创建。
最低、平均和最高复杂度的权重分别为4、5和7。
✧外部查询(EQ)
外部查询是包括输入和输出构件的差不多处理过程。
输入和输出构件导
致一个或多个内部逻辑文件和外部接口文件的数据检索。
该信息被发送
出应用程序边界。
输入过程可不能更新任何内部逻辑文件以及输出不包
含导出的数据。
最低、平均和最高复杂度的权重分别为3、4和6。
运算输出:
✧未调整的功能点计数(UFP)
未调整的功能点计数是对各种复杂度的内部逻辑文件、外部接口文件、外
部输入、外部输出和外部查询的加权合计。
第二步:运算总阻碍度因子(TDI)
当前选
中系统
特点的
每个系统特
点的每个分
值得具体含
义的说明
运算输入:
总阻碍度因子是14个系统特点值的累计总和,每个系统特点值采纳0~5的分值进行计量,分别代表无阻碍(no influence)、偶然阻碍(incidental)、适度阻碍(moderate)、平均阻碍(average)、重大阻碍(significant)和全然性阻碍(essential),具体的评分标准含义那个地点不详述了,使用Primavera系统的用户能够在功能点估算的系统特点对话框中找到每一个系统特点含义的说明和每一个系统特点取值的评分标准的说明,这些说明能够关心实施功能点估算的人员进行判定和取值。
✧确定分布式数据处理(Distributed Data Processing)的分值,该值说明分布
式数据和功能如何被处理。
✧确定配置项负载(Heavily Used Configuration)的分值,该值说明对当前
的硬件平台的使用程度。
✧确定性能(Performance)的分值,该值说明用户对响应时刻或吞吐量是否
有所要求。
✧确定事务率(Transaction Rate)的分值,该值说明事务执行的频繁程度。
✧确定安装容易程度(Installation Ease)的分值,该值说明转换和安装的困
难程度多大。
✧确定在线更新(Online Update)的分值,该值说明多少内部逻辑文件会被
在线的事务更新。
✧确定复杂处理(Complex Processing)的分值,该值说明应用软件是否具有
大量的逻辑或数学处理。
✧确定操作容易程度(Operational Ease)的分值,该值说明应用软件在启动、
备份和复原的有效性/自动化程度。
✧确定用户使用效率(End-User Efficiency)的分值,该值说明应用软件是否
就最终用户使用效率上有所设计。
✧确定修改容易程度(Facilitate Change)的分值,该值说明应用软件是否被
设计以方便于修改。
✧确定多个地点(Multiple Sites)的分值,该值说明应用软件是否设计支持
多个地点场所/机构。
✧确定重用性(Reusability)的分值,该值说明应用软件开发以满足一个或
是多个用户的需要。
✧确定在线数据项(On-line Data Entry)的分值,该值说明百分之多少的信
息是在线输入的。
✧确定系统特点数据通讯(Data Communications)的分值,该值说明系统具
有多少数据通讯设备。
运算输出:
总阻碍度因子(TDI)是14个系统特点分值的累计总和。
第三步:运算最终调整功能点计数(FP)
最终调整功能点
(FP)的运算公式
最终调整功能点计数能够通过该公式进行运算,FP = UFC×(0.65 + 0.01×TDI)。
即它由前面步骤中得出的未调整功能点计数(UFP)和总的阻碍度(TDI)来确定。
如何通过Primavera实现软件研发项目规模成本估算Primavera软件中的自上而下的估算方法能够在项目打算编制的前期对其规模、进
度和成本进行预估,这不仅能够对项目风险和投资赢利情形作一个推测,也对以后的项目打算编制提供了参考。
相比其他的各种软件规模的估算方法,这种自上而下的估算方法所能获得的数据是较为精确的,然而假如直截了当手工的去进行估算,在算法上会较为费时费劲,因此我们能够借助一些软件的工具来实现,例如在Primavera的项目管明白得决方案中,我们就能够利用其中的自上而下估算功能(包括功能点估算)来实现软件研发项目早期的规模、成本、进度的预估。
例如在某个公司在对财务软件系统的集成升级过程中就使用这种方法。
该软件研发的项目打确实是在04年8月份开始的。
在其开始之前我们并不是急于编制实施打算,而是先对需要开发的那个系统的功能数量进行测量,并采纳功能点这种标准单位来度量,以获得当前那个项目的规模情形,通过本公司的研发团队的平均产量等历史体会值将该软件规模的功能点折算成项目所需总的人工或非人工资源数量,以便我们今后的打算编制过程中确定每道作业的打算工期和每个资源的预算用量。
另外通过Primavera软件系统也能够实现项目体会和方法的积存提炼和重复利用,这是在Primavera软件系统的Methodology Management组件中实现的。
它能够将一些类似项目的历史数据和方法储存成能够供新项目参考利用模板,例如我们在那个财务系统的集成开发项目中就能够使用Methodology Management库中的某个类似的模板来快速建立一个成本、进度估算模型和框架。
关于这方面的详细内容不在本文讨论范畴内。
我们接下来就以那个财务软件系统的集成项目为例,讨论一下通过Primavera系统进行软件研发项目规模成本及进度估算的具体实现。
为了讨论的方便,我们简化了该项目进度打算的内容。
1)估算软件研发项目的功能点计数
软件项目的功能点估算的值是作为软件规模和成本估算的基础,因此我们第一对该软件研发项目的功能点做统计。
实际上,在Primavera的自上而下估算方法中能够采纳两种估算方法:
第一种是直截了当利用先前的体会数据来做估算,即能够通过人为的体会判定来确定项目所需的人工或非人工资源数量,在人为判定的过程中也能够利用历史上类似项目的情形作参考,比如能够参考Methodology Management中相关的历史数据。
这种方法较多的应用在传统的工程建设项目上,但不太适合于软件研发项目估算,因为其达不到软件开发项目对估算结果精确度的要求。
第二种方法是基于功能点的估算来确定项目所需资源数量。
这种方法因其独有的统计方式和运算方法仅针对软件研发项目,因此无法应用在别的类型项目的估算上。
如下图,在使用Primavera软件的自上而下估算功能时,第一将估算方法调整为功能点的方法,通常功能点是要通过统计和运算得出的,继而得出项目所需的人
工数量或非人工数量,因此那个地点我们需要先进入到功能点运算的界面中去。
另外,简便期间,本案例中我们仅基于功能点来估算人工数量,事实上它也能够基于功能点估算非人工数量。
我们还能够选择在整个财务系统集成项目中进行估算依旧在该项目某一块特定的范畴内进行估算,那个地点我们选择整个项目。
选择本次对人
工资源估算
估算范畴为
整个项目
基于功能点
估算人工数
进入功能点的统计运算界面
依照之前的介绍,功能点的运算能够分为三个步骤:运算未调整功能点计数(UFP);运算总阻碍度(TDI);运算最终功能点计数(FP)。
该按钮用于统计和运算
未调整功能点计数
(UFP)
该按钮用于运算总
阻碍度(TDI)
系统将自动依照UFP
和TDI运算出最终功
能点计数(FP)
第一步:该软件研发项目的项目经理负责对功能点进行估量,并从该项目软件技术人员那儿猎取软件相关的计数项的统计。
在对当前财务系统集成项目的目标软
件特性进行分析后能够统计出以下数据。
简单中等复杂
复杂度
各计数项
内部逻辑文件9 0 2
外部接口文件 5 2 3
外部输入 5 4 3
外部输出 6 6 1
外部查询 1 3 3
这些数据能够直截了当作为Primavera功能点估算界面中未调整功能点计数的输入内容。
运算方法立即统计出的各项乘以相应的权重求和,运算结果确实是各项计数的加权总和(UFP = 305)。
第二步:依照系统特点确定软件的14个技术复杂度因子(TCF),假设那个地点的技术复杂度都为平均值。
那么能够得出总的阻碍度TDI = ∑Fi = 42。
其中Fi 为14个技术复杂度因子的取值,它的取值范畴为0~5,那个地点我们假设全部取平均值3。
第三步:依照最终调整功能点计数的运算公式FP = UFC×(0.65 + 0.01×TDI),能够运算出最终功能点计数FP = 326。
那个值确实是我们进行功能点估算的最终结果。
FP的运算公式
2)估算项目所需的资源数量并按权重分摊
在确定软件研发项目规模的功能点以后,能够依照当前企业的研发实力和效率将功能点的计数折算成该项目所需的人工或非人工资源数量,即我们期望明白以当前企业的实际生产率来完成如此规模的软件研发项目怎么说需要投入多少人力和物力,同时在那个地点我们用工时或工日为单位来计量所需的资源数量。
这种对资源数量的估确实是基于功能点和企业平均产量的体会值来完成的,因此具有一定的主观性。
如下图,依照体会填入企业软件研发的平均产量,例如平均产量=14(功能点/人工月),即每当消耗了一个人工月的资源能够完成软件项目14个功能点。
如此能够估算出假如要完成整个财务系统集成的项目(完成326个功能点)需要提供326 ÷14 = 23.29人工月= 501人工日。
注:人工年、人工月、人工日和人工时之间的折算比例能够在用户设置或治理设置中定义。
平均产量是依照企
业历史数据填写的
体会值
依照功能点和平均
产量估算出的项目
资源需求数量
在用户设置中
定义时刻周期
在治理设置
中定义时刻估算好的资源数量还能够按百分比进行一定的调整,例如我们应用了5%的调整后,原先501人工日的资源数量被调整为526人工日的数量。
至此,功能点和资源数量总量的估算完成,我们能够把这些估算的数据和估算过程历史信息储存起来,供该软件研发项目在进度打算编制和资源打算编制时期使用。
这些估算的数据是作为进度打算编制时期作业工期的估算和资源打算时期资源预算数量估算的基础。
把当前估
算的数据
储存下来
能够按比例
调整估算的
资源数量
储存本次估算的数据
和历史过程
接下来开始项目进度打算和项目资源打算的编制,在这过程中能够把前面估算出来的资源总量分摊到项目打算每道作业分配的资源上面去。
如此就能够得到两个重要的结果:1、资源打算中每个资源的预算数量;2、进度打算中每道作业的打算工期。
这是我们在项目治理的打算时期所需要确定的专门关键的两个值,它会阻碍到我们编制的打确实是否准确、是否符合实际、是否具有可行性,同时也是产生进度和成本估算数据的基础。
具体步骤如下:
1.对该软件项目的工作内容进行分解,编制和分解WBS结构,并确定WBS 的估算权重,该权重是作为项目资源自上而下分摊的比例。
关于Primavera软件中自上而下分摊的详细功能介绍和论述能够参阅北京普华李海增写的《P3EC费用估算功能与火力发电厂概预算操纵》。
自上而下估算分摊示意图:
2.编制项目作业进度打算,依照作业类型确定工期类型和估算权重,为作业分配角色或资源,编制项目资源角色打算。
其中工期类型差不多上都选择为固定单位时刻用量,如此做的目的是为了实现依照作业资源的分配量来运算工期。
打算工期= 资源用量÷单位时刻用量。
那么一旦将资源数量自上而下分摊到每道作业的资源上后,作业的打算工期也就自动运算出来了。
然而里程碑不需要确定工期,因为里程碑的工期总是零,因此其工期类型只能是固定工期。
资源角色打算中,在做自上而下估算之前,需要确定分配给作业的每个资源或角色的单位时刻用量,该量是用于自上而下估算后运算打算工期的,打算工期= 资源用量÷单位时刻用量。
3.应用先前储存的功能点和资源数量估算的结果,对整个软件研发项目进行自上而下分摊资源数量到作业上并自动估算作业工期。
估算前:作业工期和资源数量未定。
进行估算:在自上而下估算中选择查看估算历史。
选择先前储存的估算数据并应用到当前的项目打算中去。
估算后:能够获得所有任务作业的工期及相关资源分配量,配合作业的工期是在进度运算后由其逻辑相关联的作业决定的。
3)估算项目成本费用和时刻进度
成本估确实是对完成项目所需费用的估量和打算,它是项目打算的一个重要组成部分。
关于一个软件开发项目来说,其成本是指在软件开发过程中所花费的工作量对应的费用代价。
软件开发的成本的运算不同于工程建设项目或其他物理产品生产的成本运算,因为它差不多不包含原材料和能源的消耗(我们在Primavera系统中对软件项目通常不使用材料资源的缘故),要紧是人工的消耗。
这些人工所对应的费用代价确实是软件产品开发的要紧直截了当成本。
关于软件成本估算的目的是建立软件开发项目的预算,以及为软件的产品报价提供参考。
同时也是作为软件成本操纵治理的核心,能够使软件项目按照其预算进
行监控。
进行软件成本估算要紧需要输入以下一些数据:
⏹软件项目的WBS结构:用于分解项目的工作内容,以确保项目的所有工
作都进行了成本估算,保证估算的完整性。
⏹作业打算:它是项目的要紧活动和任务的描述,是构成项目进度打算的最
差不多单元,在成本估算中用于承载项目所需资源及其量费的分摊,是进
行自上而下估算的框架,也是进行编制资源费用打算的基础。
⏹资源打算:用于描述项目作业对资源的需求情形或资源的分配情形,供项
目总体工作量或资源消耗量的分摊。
⏹企业历史项目数据:企业以往类似项目的数据,包括规模、进度、成本等
信息,能够作为项目估算的要紧参考。
例如前面我们在项目规模估算时用
到的平均生产率(功能点/人工月)确实是一个历史体会数据。
⏹资源单价:软件项目成本估算时应该确定每一种资源的单价,专门是人工
的单价(通常指人工工资),有时也包括一些非人工资源的单价,如测试
机的折旧等。
资源的单价是软件项目成本估算中专门重要的一个输入,是
估算费用的基础。
软件开发项目规模成本的估算要紧是对项目所需各种资源的估算,包括人工资源、非人工的设备和耗材等。
项目成本能够划分为直截了当成本和间接成本,直截了当成本是与具体开发项目直截了当相关的成本,间接成本是指不能归属于一个具体项目的企业运营成本。
这两种成本差不多上在估算过程中必须考虑的。
例如我们在之前资源分摊的基础上开始进一步的成本估算过程,因为之前我们差不多确定了每一个项目作业所需资源或角色的分配情形,接下来只要在项目资源数量的分配基础上通过输入资源单价来生成项目所需资源的费用,如前所述,这些资源费用是构成项目成本的要紧来源。
要紧包括:
确定项目作业上分配的每个资源或角色的单价,例如:软件开发人员的角色单价为每天280元,高级软件工程师的角色单价为每天400元。
或者直截了当确定某个具体资源的单价,例如:软件开发人员菲利浦的职职员
资是每小时35元,职员麦克的工资是每天280元,等等。
同样,关于非人工资源的机械或设备的使用我们也需要输入相应的单价,即单位时刻消耗、租用或折旧的费用,例如使用的某种测试工具的损耗单价是每年20万元。
关于项目中涉及到的与具体资源无关的费用,例如治理费、咨询费、印刷费、采购费、差旅费用等等以及一些企业运营的间接费用都能够在Primavera系统的作业其他费用中输入。
这些费用的输入是为了确保项目成本估算完整和准确性。
例如我们在该软件开发项目后期对客户的培训的作业中加入了相关材料的印刷费用2700元。
在所有的资源单价和其他费用都确定后,我们就能够得到整个软件开发项目的成本费用情形,包括了项目的人工费用、非人工费用、其他费用及这些费用的总和。
注意在那个地点不包含单独的材料资源的费用,尽管在Primavera系统中提供了材料资源这种类型的资源,然而我们在软件开发项目的资源打算或成本估算中一样不
使用这种类型的资源,缘故前面差不多提到:因为软件开发项目的原材料或能源的损耗占的比例专门小或几乎没有。
在下图中我们能够看到该项目的差不多成本费用情形。
进度治理是项目治理中最重要的部分之一,我们当前项目的时刻进度估算有一部分是基于前面对项目规模的估算,确实是项目中每道作业的工期我们是依照估算出的资源用粮和单位时刻用量运算出来的。
因此这种估算进度的方式是依据我们对该项目规模的整体把握,自上而下的方式来进行的,即保证了进度数据估测的准确性,同时也降低了进度估算工作过程的复杂性。
通过自上而下估算能够快速的估算进度工期,只要在此基础上连接作业的逻辑关系,就能够通过进度运算估算出项目的时刻进度了。
如下图,连接完所有作业之间的逻辑关系后,进行进度运算,能够得到该软件开发项目的时刻进度横道图、每道作业的打算开始、完成时刻、浮时(时差)、项目或WBS总的起止时刻,项目总的工期、关键作业和关键路径等一系列时刻进度信息。
结合前面得到的项目成本估算数据和项目进度估算数据,我们还能够猎取和分析项目成本费用的分布曲线和直方图,这是也该项目资金打算的分布图,给企业项目的资金预备提供了参考。
另外,使用这些基础数据,还能够通过Primavera系统的myPrimavera组件来进行项目资源分析、项目组合分析(Portfolios Management)、投资收益情形的分析(ROI)等等,它是企业在进行项目战略选择时的依据之一。