《软件项目-成本计划讲解学习.ppt》由会员分享,可在线阅读,更多相关《软件项目-成本计划讲解学习.ppt(127页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件项目管理-成本计划chapter_61成本规划成本规划chapter_62软件项目管理软件项目管理第第 二二 篇篇第第 6 6 章章软件项目成本计划软件项目成本计划chapter_63本章要点本章要点q一、估算过程概念q二、估算方法q三、成本预算q四、案例分析q五、课程实践chapter_64关于估算关于估算q估算不是很准确,有误差q项目经验数据非常重要q不要太迷信某些数学模型chapter_65软件项目规模软件项目规模q软件项目规模即工作量q例如:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。chapter_66软件规模单位软件规模单位qLOC(Loc of Code
2、)q源代码长度的测量qFP(Function Point)q用系统的功能数量来测量q人月q人天q人年chapter_67软件项目成本软件项目成本q完成软件规模相应付出的代价。q待开发的软件项目需要的资金。q人的劳动的消耗所需要的代价是软件产品的主要成本chapter_68成本的单位成本的单位q货币单位q人民币元q美元q.chapter_69软件规模和软件成本的关系软件规模和软件成本的关系q规模是成本的主要因素,是成本估算的基础q有了规模就确定了成本chapter_610成本估算结果成本估算结果q直接成本q间接成本chapter_611直接成本直接成本q与具体项目相关的成本,q例如:参与项目的人
3、员成本chapter_612间接成本间接成本q可以分摊到各个具体项目中的成本,例如:q培训q房租水电q员工福利q市场费用q管理费q其他等等chapter_613本章要点本章要点q一、估算过程概念q二、估算方法q三、成本预算q四、案例分析q五、课程实践chapter_614估算基本方法估算基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_615代码行估算法代码行估算法从软件程序量的角度定义项目规模。q与具体的编程语言有关q分解足够详细q有一定的经验数据(类比和经验方法)chapter_616代码行技术的
4、主要优点代码是所有软件开发项目都有的代码是所有软件开发项目都有的“产品产品”,而且,而且很容易计算代码行数。很容易计算代码行数。chapter_617代码行估算的缺点代码行估算的缺点1.对代码行没有公认的可接受的标准定义2.代码行数量依赖于所用的编程语言和个人的编程风格.3.在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量.4.代码行强调编码的工作量,只是项目实现阶段的一部分chapter_618估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_619功能
5、点估算功能点估算q与实现的语言和技术没有关系q用系统的功能数量来测量其规模q通过评估、加权、量化得出功能点chapter_620功能点公式功能点公式FP=UFC*TCFqUFC:未调整功能点计数qTCF:技术复杂度因子chapter_621UFC-UFC-未调整功能点计数未调整功能点计数功能计数项:(从处理逻辑的角度)1.外部输入2.外部输出3.外部查询4.外部接口文件5.内部逻辑文件chapter_322外部输入外部输入(External Inputs:EI)给软件提供面向应用的数据的项(如屏幕、表单、对话框、控件,文件等);在这个过程中,数据穿越外部边界进入到系统内部。chapter_62
6、3外部输出外部输出(External Outputs EO)向用户提供(经过处理的)面向应用的信息,例如,报表和出错信息等。chapter_624外部查询外部查询(External Inquiry EQ)外部查询是一个输入引出一个即时的简单输出。没有处理过程。chapter_625外部接口文件(外部接口文件(External Interface Files EIFs)外部接口文件是用户可以识别的一组逻辑相关数据,这组数据只能被引用。用这些接口把信息传送给另一个系统。chapter_626内部逻辑文件内部逻辑文件(Internal Logical Files:ILFS)用户可以识别的一组逻辑相关
7、的数据,而且完全存在于应用的边界之内,并且通过外部输入维护,是逻辑主文件的数目。UFC-UFC-未调整功能点计数未调整功能点计数功能计数项的复杂度等级复杂度权重因素项简单(低)一般(中)复杂(高)外部输入346外部输出457外部查询346外部接口文件 5710内部逻辑文件 7101527chapter_328FP估算方法举例估算方法举例功能点计算实例功能点计算实例-UFC-UFC功能点项简单一般复杂外部输入2*31*40*6外部输出0*40*51*7外部查询0*31*40*6外部接口文件 0*51*70*10内部逻辑文件 1*71*100*15总计UFC45根据上面的外贸订单项目的需求评估:外
8、部输入:3项;外部输出:1项;外部查询:1项;外部接口文件:1项;内部逻辑文件:2项29TCF-TCF-技术复杂度因子技术复杂度因子TCF=0.65+0.01(sum(Fi)TCF=0.65+0.01(sum(Fi):Fi:0-5,TCF:0.65-1.35Fi:0-5,TCF:0.65-1.35技术复杂度因子F1可靠的备份和恢复F2数据通信F3分布式函数F4性能F5大量使用的配置F6联机数据输入F7操作简单性F8在线升级F9复杂界面F10复杂数据处理F11重复使用性F12安装简易性F13多重站点F14易于修改30chapter_331技术复杂度因子的取值范围技术复杂度因子的取值范围调整系数调
9、整系数描述描述0不存在或者没有影响1不显著的影响2相当的影响3平均的影响4显著的影响5强大的影响chapter_632外贸订单项目:外贸订单项目:功能点计算实例功能点计算实例qFP=UFC*TCFqUFC=45qTCF=0.65+0.01(14*3)=1.07qFP=45*1.07=48q如果:PE=15工时/功能点q则:Effort=48*15=720工时chapter_633功能点与代码行的转换功能点与代码行的转换语言代码行代码行/FPAssembly320C150COBOL105FORTRAN105PASCAL91ADA71PL/165PROLOG/LISP64SMALLTALK21SP
10、READSHEET6chapter_634估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法用例模型用例模型chapter_335用例点估算模型用例点估算模型chapter_336用例点估算方法的基本步骤用例点估算方法的基本步骤1.计算未调整的角色的权值UAW;2.计算未调整的用例的权值UUCW;3.计算未调整的用例点UUCP;4.计算技术和环境因子TEF;5.计算调整的用例点UCP;6.计算工作量(manhours)。chapter_6371、计算未调整的角色的权值、计算未调整的角色的权值UAW
11、UAW=chapter_6382、计算未调整的用例的权值、计算未调整的用例的权值UUCW UUCW=chapter_6393、计算未调整的用例点、计算未调整的用例点UUCPUUCP=UAW+UUCW:例如chapter_3404、计算技术因子、计算技术因子TCFchapter_6414、计算环境因子计算环境因子ECFchapter_3425、计算调整的用例点、计算调整的用例点UCPchapter_643UCP=UUCPTCFECF=1101.020.785=886、计算工作量、计算工作量如果:如果:PF=20工时工时/用例点用例点则:则:Effort=UCPPF=8820=1760h=220人
12、天人天chapter_644chapter_645估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_646类比估算类比估算-定义定义q估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中q是一种自上而下的估算形式chapter_647类比估算类比估算使用情况使用情况q有类似的历史项目数据q信息不足(例如市场招标)的时候q要求不是非常精确估算的时候chapter_348类比估算类比估算理论举例理论举
13、例chapter_649类比估算类比估算主观判断举例主观判断举例q证券交易网站q需求类似q历史数据:10万q类比估算:10万chapter_650估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_351自下而上估算自下而上估算-定义定义q利用任务分解图(WBS),对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。“变化计数器”系统文件比较预处理增加代码结果处理统计总行标记修改记录修改版本比较找出增删行统计增删行删除代码增加行数删除行数估算结果chapter_65
14、2自下而上估算自下而上估算-特点特点q相对比较准确,它的准确度来源于每个任务的估算情况q花费时间chapter_353自下而上估算举例自下而上估算举例chapter_654软件项目管理软件项目管理第第 二二 篇篇第第 6 6 章章软件项目成本计划软件项目成本计划进入chapter_655估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_656参数估算法参数估算法定义定义q通过项目数据,进行回归分析,得出回归模型q通过参数模型估算(规模)成本的方法。chapter_657参数估算法参
15、数估算法使用条件使用条件q具有良好的项目数据为基础q存在成熟的项目估算模型chapter_658参数估算法特点参数估算法特点q比较简单,而且也比较准确q如果模型选择不当或者数据不准,也会导致偏差chapter_659参数模型参数模型:规模规模(成本成本)模型模型面向LOC驱动的qWalston-Felix(IBM)qE=5.2*(KLOC)0.91qBalley-BasiliqE=5.5+0.73*(KLOC)1.16q.COCOMOqE=3.2*(KLOC)1.05qDotyqE=5.288*(KLOC)1.047chapter_660参数模型参数模型:规模规模(成本成本)模型模型面向FP驱
16、动的qAlbrecht and GaffneyqE=-12.39+0.0545FPqMatson,BarnettqE=585.7+15.12FPchapter_661参数模型参数模型:规模规模(成本成本)模型模型q整体公式:E=a+b*SCqE:以人月表示的工作量qa,b,c:经验导出的系数qS:主要的输入参数(通常是LOC,FP等)chapter_662建议掌握模型建议掌握模型qWalston-Felix模型qCOCOMO模型chapter_663Walston-Felix模型模型1977年,年,IBM的的Walston和和Felix提出了如下的估算公式提出了如下的估算公式E5.2(KLOC
17、)0.91,KLOC是源代码行数,E是工作量(以PM计)D4.1(KLOC)0.36,D是项目持续时间(以月计)S0.54E0.6,S是人员需要量(以人计)DOC49(KLOC)1.01,DOC是文档数量(以页计)chapter_664Walston-FelixWalston-Felix举例举例采用java 完成项目,估计有366功能点,则L=36646=16386行=16.386KLOCE 5.2(KLOC)0.91 5.216.386 0.91 66人月 DOC=49(KLOC)1.01 4916.386 1.01 826页 chapter_665COCOMOCOCOMO(Construc
18、tive Cost Constructive Cost modelmodel)结构化成本模型是目前应用最广泛的参数型软件成本估计模型由Barry Boehm团队开发的chapter_666COCOMOCOCOMO模型发展模型发展COCOMO81COCOMOII模型系列chapter_667COCOMO基本原理基本原理将开发所需要的工作量表示为将开发所需要的工作量表示为KLOC软件规模软件规模和一系列成本因子的函数和一系列成本因子的函数,基本估算公式基本估算公式:A:可以校准的常量可以校准的常量;S为为KLOC软件规模软件规模;E为规模的指为规模的指数数,说明不同规模软件具有的相对规模经济和不经
19、说明不同规模软件具有的相对规模经济和不经济性济性;EM为工作量乘数为工作量乘数,反映某个项目特征对完成项反映某个项目特征对完成项目开发所需工作量的影响程度目开发所需工作量的影响程度;n为描述软件项目特为描述软件项目特征的成本驱动因子的个数征的成本驱动因子的个数chapter_668COCOMO 81项目类型:项目类型:有机:Organic嵌入式:Embedded半有机:Semidetached模型级别:模型级别:q基本COCOMOq中等COCOMOq高级COCOMOchapter_669COCOMO 81模型的级别模型的级别q基本COCOMOq静态单变量模型q中等COCOMOq基本模型基础上考
20、虑影响因素,调整模型q高级COCOMOq中等COCOMO模型基础上考虑各个步骤的影响COCOMO 81项目类型项目类型有机:Organic,各类应用程序,例如数据处理、科学计算等受硬件的约束比较小,程序的规模不是很大嵌入式:Embedded系统程序,例如实时处理、控制程序等紧密联系的硬件、软件和操作的限制条件下运行,软件规模任意半有机:Semidetached各类实用程序,介于上述两种软件之间,例如编译器(程序)规模和复杂度都属于中等或者更高70chapter_671基本基本COCOMO-81COCOMO-81qE=aX(KLOC)bq其中:qE:工作量(人月)qKLOC:是交付的代码行qa,
21、b:依赖于项目自然属性的系数chapter_672基本基本COCOMO-81COCOMO-81系数表系数表方式ab有机2.41.05半有机3.01.12嵌入式3.61.2chapter_673举例举例一个33.3KLOC的软件开发项目,属于中等规模、半有机型的项目,采用基本COCOMO:oa=3.0,b=1.12。oE=3.0L 1.12=3.033.3 1.12=152PMchapter_674中等中等COCOMO-81COCOMO-81E=a*(KLOC)b*乘法因子qa、b是系数q乘法因子是对公式的校正系数 方式ab有机2.81.05半有机3.01.12嵌入式3.21.2chapter_
22、675乘法因子的成本驱动属性乘法因子的成本驱动属性1.产品属性2.平台属性3.人员属性4.过程属性乘法因子乘法因子乘法因子F1XF2X。XF15chapter_376举例(续)举例(续)一个33.3KLOC的软件开发项目,属于中等规模、半有机型的项目,采用中等COCOMO模型a=3.0,b=1.12。乘法因子0.70*0.85*1*1.15=1.09E=3.0L 1.12乘法因子=3.033.3 1.12PM77chapter_678高级(高级(详细详细)COCOMOCOCOMOq将项目分解为一系列的子系统或者子模型 q更加精确地调整一个模型的属性 chapter_679高级(高级(详细详细)
23、COCOMOCOCOMOchapter_680COCOMO IIn应用组装模型应用组装模型-规划阶段规划阶段n早期设计模型早期设计模型-设计阶段设计阶段n后体系结构模型后体系结构模型-开发阶段开发阶段COCOMO II-后体系结构模型A,可以校准,目前设定A=2.94B,可以校准,目前设定B=0.9181chapter_682模型研究例子模型研究例子项目数据项目数据步骤:xx=41132144194194291255378591;时间:yy=6,10,11,16,22,32,30,35,42;chapter_683模型研究例子模型研究例子项目数据图式项目数据图式chapter_684模型研究例
24、子模型研究例子-拟合算法拟合算法算法:functionn=cocomo(m)xx=41132144194194291255378591;yy=6,10,11,16,22,32,30,35,42;fun=(c,x)c(1)*x.c(2);abc0=11;c=lsqcurvefit(fun,abc0,xx,yy);n=fun(c,m);endchapter_385模型研究例子模型研究例子-结果输出结果输出n模型输出n图形输出chapter_386模型研究例子模型研究例子-模型应用模型应用chapter_687估算的基本方法估算的基本方法1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶
25、向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_688专家估算法专家估算法q由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值,最后得出综合的估算值。chapter_689专家估算法专家估算法-Deiphi-Deiphiq组织者确定专家,这些专家互相不见面q组织者发给每位专家一份软件规格说明q专家以无记名对该软件给出3个规模的估算值q最小aiq最可能的miq最大biq组织者计算每位专家的Ei=(ai+4mi+bi)/6q如果各个专家的估算差异超出规定的范围(例如:15%),则需重复上述过程q最终可以获得一个多数专家共识的软件规模:E=
26、E1+E2+En/n(N:表示N 个专家)chapter_690DeiphiDeiphi专家估算法专家估算法-举例举例q某多媒体信息查询系统专家估算q专家1:1,8,9=(1+9+4*8)/6=7(万元)q专家2:4,6,8=(4+8+4*6)/6=6(万元)q估算结果=(6+7)/2=6.5(万元)chapter_691估算方法总结估算方法总结1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法chapter_692实用软件估算步骤实用软件估算步骤是一种自下而上和参数法的结合模型,步骤如下:1.对任务进行分解:1,2,I,n
27、2.估算每个工作包的成本Ei3.直接成本=E1+E2+Ei+En4.4.间接成本估算间接成本估算5.5.项目总估算成本项目总估算成本=直接成本+间接成本chapter_693估算每个任务的成本估算每个任务的成本q直接估算成本Eiq先估算规模Qi,然后估算成本Ei=Qi*人力成本参数退出退出chapter_694直接成本估算直接成本估算q直接成本组成q开发成本q管理成本q质量成本q例如:人力成本参数=5万/人月,30人月(包括开发管理质量)规模的项目的直接成本是 150万chapter_695直接成本估算简易估算直接成本估算简易估算:开发(工作量)规模:Scale(Dev)(单位:人月)管理、质
28、量(工作量)规模:Scale(Mgn)=a*Scale(Dev)a为比例系数:例如:20%-25%直接成本 Scale(Dev)a*Scale(Dev)退出退出chapter_696间接成本间接成本间接成本估算:1.按照企业模型直接估算:2.简易算法:间接成本=直接成本*间接成本系数例如:间接成本系数=0.3退出退出chapter_697项目总估算成本项目总估算成本q估算成本=直接成本+间接成本q估算成本=直接成本+直接成本*间接成本系数q估算成本=直接成本(1+间接成本系数)q估算成本=规模*人力成本参数(1+间接成本系数)q成本系数=人力成本参数*(1+间接成本系数)q简易算法:q估算成本
29、=规模*成本系数q例如:成本系数=8万/人月退出退出chapter_698总估算成本(总估算成本(BACBAC)费用BAC时间chapter_699本章要点本章要点q一、估算过程概念q二、估算方法q三、成本预算q四、案例分析q五、课程实践chapter_6100成本预算成本预算成本预算是将项目的总成本按照项目的进度分摊到各个工作单元中去成本预算的目的是产生成本基线chapter_6101项目成本预算分配项目成本预算包括三种情况:分配项目成本预算包括三种情况:1.给任务分配资源成本2.给任务分配固定资源成本3.给任务分配固定成本chapter_6102给任务分配资源成本给任务分配资源成本q与资源
30、的基本费率紧密相连q设置资源费率q标准费率q加班费率q每次使用费率q。chapter_6103分配固定资源成本分配固定资源成本q当一个项目的资源需要固定数量的资金时,可以向任务分配固定资源成本。q例如:项目中的一个兼职人员成本 chapter_6104分配固定成本分配固定成本q有些任务是固定成本的类型的任务,也就是说,管理者知道某项任务的成本不变,不管任务的工期有多长,或不管任务使用了那些资源。在这种情况下,管理者向任务直接分配成本。q例如:某外包任务、培训任务 chapter_6105成本基线成本基线chapter_6106本章要点本章要点q一、估算过程概念q二、估算方法q三、成本预算q四、
31、案例分析q五、课程实践医疗信息商务平台成本估算医疗信息商务平台成本估算MED的的2个估算方法:个估算方法:l自下而上的估算自下而上的估算l用例点估算用例点估算chapter_6107MED自下而上的估算自下而上的估算chapter_3108计算开发成本计算开发成本1.通过自下而上的计算,得知项目开发规模是396人天,开发人员成本参数=1000元/天,则内部的开发成本=1000元/天*396天=39.6万元2.加上外包部分软件成本2.4万元,则开发成=39.6万+2.4万=42万元chapter_6109计算管理成本计算管理成本针对本项目,管理成本=开发成本*10%。所以,管理成本为=42万元*
32、10%=4.2万元。chapter_6110计算直接成本计算直接成本因为,直接成本=开发成本+管理成本所以,直接成本=42万元+4.2=46.2万元,chapter_6111计算间接成本计算间接成本因为,间接成本=直接成本*20%所以,间接成本=46.2万元*20%=9.24万元chapter_6112计算总估算成本计算总估算成本项目总估算成本=直接成本+间接成本=46.2万元+9.24万元=55.44万元。chapter_6113MED用例点估算用例点估算chapter_3114角色:角色:Userchapter_3115计算未调整的角色的权值:计算未调整的角色的权值:UAWUAW=18ch
33、apter_6116计算未调整的用例权值:计算未调整的用例权值:UUCWUUCW=240chapter_6117计算未调整的用例点:计算未调整的用例点:UUCPUUCP=UAW+UUCW=18+240=258chapter_6118技术复杂度因子技术复杂度因子TCFchapter_3119环境因子环境因子ECFchapter_3120计算用例点计算用例点UCPUCP=UUCPTCFECF=2581.080.785=218.7chapter_6121规模:规模:Effort如果:PF=20工时/用例点则:Effort=UCPPF=218.720=4374工时。因为1人天=8工时,则项目规模:43
34、74/8=547人天如果1000元/人天,则成本54.7万chapter_6122chapter_6123本章要点本章要点q一、估算过程概念q二、估算方法q三、成本预算q四、案例分析q五、课程实践课程实践五:项目成本估算课程实践五:项目成本估算实践目的:掌握软件项目规模成本估算方法实践目的:掌握软件项目规模成本估算方法实践要求:实践要求:1.复习软件成本估算方法复习软件成本估算方法2.采用用例点方法估算采用用例点方法估算SPM项目项目3.采用自下而上方法估算采用自下而上方法估算SPM项目项目4.选择选择1个团队课堂上讲述个团队课堂上讲述SPM项目的两个估算项目的两个估算结果结果chapter_6124chapter_6125小结小结q成本估算1.代码行估算法2.功能点估算法3.用例点估算法4.类比(自顶向下)估算法5.自下而上估算法6.参数估算法7.专家估算法q成本预算此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢