chapter__40服务外包软件项目组织与管理五朱建凯chapter__41软件项目组织与管理第4章软件项目成本计划chapter__42本章要点一、软件项目规模成本的概念二、成本估算过程三、成本估算方法四、成本预算五、案例分析chapter__43成本管理过程成本:为了达到某一特定的目标而放弃或牺牲的资源。项目的成本管理贯穿于项目实施的始终,项目的开发成本是指其开发过程中所花费的工作量及相应的代价。项目的成本管理包括,为确保批准的预算内完成项目,在项目管理过程中所需的方法和过程。chapter__44项目开发成本管理在项目立项时就开始了,成本管理的过程如下图所示。chapter__45项目成本管理过程包括:1.规划成本管理,包括为规划、管理、花费和控制项目成本而制定政策、程序和文档的过程。2.估算成本,包括估计完成项目所需资源成本的近似值。3.成本预算,包括将整个成本估算分配到各单项工作,并经批准以建立衡量成本的基准。4.成本控制,控制项目预算的变化,更新项目成本,管理成本基准变更的过程。chapter__46项目资源的一些示例chapter__47项目资源的一些示例n一些特殊的成本:l辅助成本l机会成本l沉没成本chapter__48项目成本管理的重要性在国内,许多项目管理者都不重视软件项目的成本管理,他们认为,这是会计的事情,经常低估了开发的成本,或超出预算后只是“淡处理”。其实,项目是否控制在预先制定的范围内,是衡量项目成败的因素之一,成本的大小,直接关系到项目的利润,也就是单位(公司)的利润。现在许多项目组成员的奖金都与项目的成本直接挂钩,按纯利润的多少进行提成,这是一种必要的管理方法和措施。外贸企业的内部银行管理也是一种手段。chapter__49本章要点一、软件项目规模成本的概念二、成本估算过程三、成本估算方法四、成本预算五、案例分析chapter__410成本估算输入成本管理计划人力资源管理计划范围基准:软件需求、项目需求、WBS项目进度计划:项目总进度(一般是合同要求)风险登记册事业环境因素:如人员成本:100元/小时组织过程资产:历史项目数据chapter__411项目估算输出项目活动成本估算资源,资源的数量估算成本等信息估算依据说明工作范围依据估算的基础、依据和方法估算的假设估算的可能误差变动等说明:无法一劳永逸,且不是项目定价(不是一个概念)chapter__412本章要点一、软件项目规模成本的概念二、成本估算过程三、成本估算方法四、成本预算五、案例分析chapter__413估算的基本方法1.估算技术基础:代码行、功能点2.类比(自顶向下)估算法3.自下而上估算法4.参数模型估算法5.专家估算法chapter__414代码行(LOC)从软件程序量的角度定义项目规模。要求功能分解足够详细有一定的经验数据(类比和经验方法)与具体的编程语言有关chapter__415代码行(LOC)缺点1.对代码行没有公认的可接受的标准定义2.代码行数量依赖于所用的编程语言和个人的编程风格.3.在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量.4.代码行强调编码的工作量,只是项目实现阶段的一部分chapter__416功能点(FP:Functionpoint)用系统的功能数量来测量其规模与实现产品所使用的语言和技术没有关系两个评估内部基本功能外部基本功能加权和量化chapter__417功能点的公式FP=UFC*TCFUFC:未调整功能点计数TCF:技术复杂度因子chapter__418UFC-未调整功能点计数功能计数项:1.外部输入2.外部输出3.外部查询4.外部文件5.内部文件chapter__419UFC-未调整功能点计数功能计数项的复杂度等级复杂度权重因素项简单一般复杂外部输入346外部输出457外部查询346外部文件5710内部文件71015chapter__420n某个系统使用了MySQL数据库,请问是否应该作为外部接口文件来考虑?n某个查询需要从两个类中获取数据,而且有15个数据元素被使用,请问这个查询算几个功能点?chapter__421功能点计算实例-UFC-1功能点项简单一般复杂外部输入623外部输出770外部查询024外部文件523内部文件902总计UFC?chapter__422功能点计算实例-UFC-2功能点项简单一般复杂外部输入6*32*43*6外部输出7*47*50*7外部查询0*32*44*6外部文件5*52*73*10内部文件9*70*102*15总计UFC301chapter__423TCF-技术复杂度因子TCF=0.65+0.01(sum(Fi)):Fi:0-5,TCF:0.65-1.35技术复杂度因子F1可靠的备份和恢复F2数据通信F3分布式函数F4性能F5大量使用的配置F6联机数据输入F7操作简单性F8在线升级F9复杂界面F10复杂数据处理F11重复使用性F12安装简易性F13多重站点F14易于修改chapter__424技术复杂度因子的取值范围调整系数描述0不存在或者没有影响1不显著的影响2相当的影响3平均的影响4显著的影响5强大的影响chapter__425功能点计算实例FP=UFC*TCFUFC=301TCF=0.65+0.01(14*3)=1.07FP=301*1.07=322chapter__426功能点与代码行的转换语言代码行/FPAssembly320C150COBOL105FORTRAN105PASCAL91ADA71PL/165PROLOG/LISP64SMALLTALK21SPREADSHEET6chapter__427估算的基本方法估算技术基础:代码行、功能点类比(自顶向下)估算法自下而上估算法参数法估算法专家估算法chapter__428类比-定义估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中是一种自上而下的估算形式chapter__429类比—使用情况有类似的历史项目数据信息不足(要求不是非常精确)的时候在合同期和市场招标时使用chapter__430类比—特点简单易行,花费少具有一定的局限性准确性差,可能导致项目出现困难chapter__431估算的基本方法估算技术基础:代码行、功能点类比(自顶向下)估算法自下而上估算法参数法估算法专家估算法chapter__432自下而上—定义利用任务分解结构图(WBS),对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。chapter__433自下而上—使用情况项目开始以后,WBS的开发阶段需要进行准确估算的时候chapter__434自下而上—特点这种方法相对比较准确,它的准确度来源于每个任务的估算情况非常费时,估算本身也需要成本支持可能发生虚报现象chapter__435估算的基本方法估算技术基础:代码行、功能点类比(自顶向下)估算法自下而上估算法参数法估算法专家估算法chapter__436参数估算法—定义模型方法一种使用项目特性参数建立数据模型来估算成本的方法,是一种统计技术,如回归分析和学习曲线。chapter__437软件成本估算模型理论导出:不成熟阶段经验导出:软件估算常常采用chapter__438参数估算法—使用情况存在成熟的项目估算模型应该具有良好的数据库数据为基础chapter__439参数估算法-特点比较简单,而且也比较准确如果模型选择不当或者数据不准,也会导致偏差chapter__440参数成本估算实例(适合单价合同)项目经理(30美元/小时)15,000美元分析家(20美元/小时)20,000美元技术员(13美元/小时)2,6000美元总劳动开支61,000美元一般管理费(35%)21,350美元总劳动费加管理费82,350美元额外费用(25%)16,470美元小计98,820美元交通费(四次旅行,1000/次)4000美元微机计算机费(2台,3500/台)7000美元打印与复制费2000美元总辅助费13,000美元总项目费用开支111,820美元chapter__441经验导出成本模型提供工作量(规模)的直接估计通过过去项目数据,进行回归分析,得出的回归模型chapter__442经验导出成本模型整体公式:E=A+B*SCE:以人月表示的工作量A,B,C:经验导出的系数S:主要的输入参数(通常是LOC,FP等)chapter__443经验导出成本模型(续)面向LOC驱动的Walston-Felix(IBM)E=5.2*(KLOC)^0.91Balley-BasiliE=5.5+0.73*(KLOC)^1.16.COCOMOE=3.2*(KLOC)^1.05DotyE=5.288*(KLOC)^1.047chapter__444经验导出成本模型(续)面向FP驱动的AlbrechtandGaffneyE=-12.39+0.0545FPKemererE=60.62*7.728*10^-8FP^3Matson,BarnettE=585.7+15.12FPchapter__445建议掌握模型IBM模型-(Walston-Felix)COCOMO模型-(Boehm)chapter__446IBM模型1977年,IBM的Walston和Felix提出了如下的估算公式E=5.2×L^0.91,L是源代码行数(以KLOC计),E是工作量(以PM计)D=4.1×L^0.36,D是项目持续时间(以月计)S=0.54×E^0.6,S是人员需要量(以人计)DOC=49×L^1.01。DOC是文档数量(以页计)chapter__447举例采用java完成项目,366功能点,则L=366×46=16386行=16.386KLOCE=5.2×L^0.91=5.2×16.386^0.91=66人月D=4.1×L^0.36=4.1×16.386^0.36=11.2月S=0.54×E^0.6=0.54×16.386^0.6=2.89人DOC=49×L^1.01=49×16.386^1.01=826页chapter__448COCOMO(ConstructiveCostmodel)由BarryBoehm开发的详见:(南加州大学网站)列出了由USC-CSSE提供的COCOMO®软件攻击和相应的文档.各种USC用COCOMO®II和COCOMO®81来实现的软件实例,这些实例都是由Dr.EllisHorowitz带领的已毕业的学生完成的.chapter__449COCOMO模型发展COCOMO81COCOMOII模型系列chapter__450COCOMO81项目类型:•有机:Organic•嵌入式:Embedded•半有机:Semidetached模型类别:基本COCOMO中等COCOMO高级COCOMOchapter__451模型类别基本COCOMO静态单变量模型中等COCOMO基本模型基础上考虑影响因素,调整模型高级COCOMO中等COCOMO模型基础上考虑各个步骤的影响chapter__452项目类型•有机:Organic,•各类应用程序,例如数据处理、科学计算等•受硬件的约束比较小,程序的规模不是很大•嵌入式:Embedded•系统程序,例如实时处理、控制程序等•紧密联系的硬件、软件和操作的限制条件下运行,软件规模任意•半有机:Semidetached•各类实用程序,介于上述两种软件之间,例如编译器(程序)•规模和复杂度都属于中等或者更高chapter__453基本COC