1、第10章 软件项目的成本管理,第2页,第10章 软件项目的成本管理,第3页,掌握工程进度工期等概念 熟悉项目时间管理的内容 掌握进度计划的编制方法与技术 掌握网络计划技术 熟悉软件项目计划的编写,第10章 软件项目的成本管理,本章学习目标,第4页,10 .1 成本管理的概念,广义的项目成本称为项目的生命周期成本。 狭义的项目成本(费用)是指因为项目而发生的各种资源耗费的货币体现。 项目成本管理是指为保障项目实际发生的成本不超过项目预算,使项目在批准的预算内按时、按质、经济高效地完成既定目标而开展的成本管理活动。 成本管理包括项目资源规划、项目成本估算、项目成本预算、项目成本控制等过程。,第5页
2、,项目成本:包括项目生命周期每一阶段的资源耗费。 项目直接成本:指与项目有直接关系的成本费用,是与项目直接对应的,包括直接人工费用、直接材料费用、其他直接费用等。 管理费用:指为了组织、管理和控制项目所发生的费用,项目管理费用一般是项目的间接费用,主要包括管理人员费用支出、差旅费用、固定资产和设备使用费用、办公费用、医疗保险费用,以及其他一些费用等。 期间费用等:指与项目的完成没有直接关系,费用的发生基本上不受项目业务量增减所影响的费用。这些费用包括公司的日常行政管理费用、销售费用、财务费用等,这些费用已经不再是项目费用的一部分,而是作为期间费用直接计入公司当期损益。,第6页,一. 软件项目成
3、本 1软件项目成本的分类 (1)从软件生命周期构成的两阶段即开发阶段和维护阶段看,软件的成本由开发成本和维护成本构成。 开发成本由软件开发成本、硬件成本和其他成本组成,包括了系统软件的分析/设计费用、实施费用及系统切换等方面的费用; 维护成本由运行费用(包含人工费、材料费、固定资产折旧费、专有技术及技术资料购置费)、管理费(包含审计费、系统服务费、行政管理费)及维护费(包含纠错性维护费用及适应性维护费用)。 (2)从财务角度来看,列入软件项目的成本如下: 硬件购置费、软件购置费、人工费、培训费、通讯费、基本建设费、 财务费用、管理费用、材料费、水、电、汽费、专有技术购置费、其它费用。,第7页,
4、2软件项目成本的影响因素 (1)项目质量对成本的影响 项目的实现过程是项目质量的形成过程,在这一过程中需进行质量的检验与保障工作和质量失败的补救工作,这两项工作都需消耗资源,都会产生质量成本。 项目质量成本由质量保证成本和质量故障成本组成:质量保证成本:指为了保证和提高产品质量而采取的技术措施所消耗的费用。质量故障成本:指为了排除产品质量而采取的技术措施所消耗的费用。质量保证成本和质量故障成本是相互矛盾的,项目产品的质量越低,由于质量不合格引起的损失就越大,即故障成本增加;质量越高,相应的质量保证成本也越高,故障就少,由故障引起的损失也相应减少。,第8页,质量与费用之间的关系,第9页,(2)工
5、期对成本的影响 在项目实现过程中,各项活动消耗或占用的资源都是在一定的钟点或时期中发生的。所以项目的成本与工期是直接相关的并随着工期的变化而变化。缩短工期需要更多的技术水平更高的人员,直接成本费用就会增加。 软件项目存在一个最短的进度点。,第10页,(3)管理水平对成本的影响 高的管理水平可以提高预算的准确度,加强对项目预算的执行和监督,对工期的控制能够严格限制在计划许可范围内,减少各种更改所造成的成本增加和工期的变更,减少风险损失。 软件开发成本管理过程中存在的主要问题: 项目成本预算和估算的准确度差过粗和过细。预算过粗会使项目费用的随意性较大,准确度降低;预算过细会使项目控制的内容过多,弹
6、性差,变化不灵活,管理成本加大。 缺乏对软件成本事先估计的有效控制当在项目后期,实际远离计划出现偏差时才进行成本控制。 缺乏成本绩效的分析和跟踪很少有将预算、实际成本和工作量进度联系起来,考虑 实际成本和工作量是否匹配的问题。,第11页,(4)人力资源对成本的影响(5)价格对成本的影响,第12页,二. 成本管理的内容项目成本的管理内容包括制定资源计划;对项目成本进行估算、预算;在项目实施过程中对项目成本进行控制和预测,不断调整项目成本计划。,第13页,10 .2 项目资源计划,资源可理解为一切具有现实和潜在价值的东西,完成项目必须要消耗劳动力(人力资源)、材料、设备、资金等有形资源,同时还可能
7、需要消耗其他一些无形资源,而且由于存在资源约束,项目耗用资源的质量、数量、均衡状况对项目的工期、成本有着不可估量的影响。,第14页,一、资源计划的主要依据 项目资源计划是在分析、识别项目的资源需求,确定项目所需投入的资源种类、数量和时间的基础上,制定科学、合理、可行的项目资源计划的项目成本管理活动。包括: 1工作分解结构WBS:确定项目可交付的成果,明确工作范围,及每项工作所需资源。 2项目进度计划:是其他各项计划的基础,各种资源如何分配、什么时候分配给什么工作由项目进度计划确定。 3历史资料:历史信息记录了以前类似项目使用资源的需求情况,此类资源可以作为新项目资源计划的参考资料。 4资源库描
8、述:对项目拥有的资源存量的说明。 5组织策略:项目实施组织的企业文化、项目组织的组织结构、项目组织获得资源的方式和手段方面的方针体现了项目高层在资源使用方面的策略,可以影响到人员招聘、物资和设备的租赁或采购,对如何使用资源起重要作用 。,第15页,二、资源计划的编制步骤 1资源需求分析通过分析确定工作分解结构中每一项任务所需的资源数量、质量及其种类,根据有关项目领域中的消耗定额或经验数据,确定资源需求量。 工作量计算; 确定实施方案; 估计人员需求量; 估计设备、材料需求量; 确定资源的使用时间。 2资源供给分析分析资源的可获得性、获得的难易程度及获得的渠道和方式,可从内部和外部资源进行分析。
9、 3资源成本比较与资源组合比较各种资源的使用成本,确定资源的组合模式。 4资源分配与计划编制保证各个任务得到合适的资源,努力实现资源总量最少、使用平衡。编制项目资源计划。,第16页,三、编制资源计划的方法与工具 1德尔菲(专家)评估法由项目成本管理专家根据经验和判断去确定和编制项目资源计划的方法。这种方法通常又有两种具体的形式:专家小组法与德尔斐法。 (1)德尔菲法的具体做法是:设计调查表。 选择应答的专家 征询专家的意见 (2)德尔菲法的特点 经济性 匿名性 客观性(3)对德尔菲法的评价周期较短,费用较低;但对各种意见的可靠程度和科学依据缺乏统一的标准,理论上缺乏深刻的逻辑论证等.,第17页
10、,2资料统计法 使用历史项目的统计数据资料,计算和确定项目资源计划的方法 。 实物量指标多数用来表明物质资源的需求数量,这类指标一般表现为绝对数指标。 劳动量指标主要用于表明人力的使用,这类指标可以是绝对量也可以相对量指标。 价值量指标主要用于表示资源的货币价值,一般使用本国货币币值表示的活劳动或物化劳动的价值。,第18页,2资料统计法 常用的项目资源计划的工具包括:资源矩阵、资源甘特图、资源负荷图或资源需求曲线、资源累计需求曲线等。项目资源矩阵,第19页,项目资源数据表,第20页,资源负荷图或需求曲线,第21页,资源累计需求曲线,10 .2 项目资源计划,第22页,一、项目成本估算概述成本估
11、算是对完成项目各项任务所需资源的成本所进行的近似估算。主要依据包括:项目范围说明;工作分解结构WBS;资源计划;资源单位价格;历史信息(同类项目的历史资料始终是项目执行过程中可以参考的最有价值的资料,包括项目文件、共用的费用估算数据及项目工作组的知识等);会计报表。,10 .3 项目成本估算,第23页,1软件开发成本估算过程软件项目成本估算包括识别各种项目成本的构成科目和估计和确定各种成本的数额大小;可以用货币单位表示,也可用工时、人月、人天、人年等其他单位表示 代码行(LOC)是衡量软件项目规模最常用的概念,指所有的可执行的源代码行数,包括可交付的工作控制语言语句、数据定义、数据类型声明、等
12、价声明、输入/输出格式声明等。,第24页,例如,某软件公司统计发现该公司每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。某项目的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月费用为10000元(包括人均工资、福利、办公费用公滩等),则该项目中1LOC的价值为:(24010000)/15000016元/L。,第25页,开发成本估算过程,10 .3 项目成本估算,第26页,2项目成本估算的技术路线 (1)自上而下的估算又称类比估算,通常在项目的初期或信息不足时进行,此时只确定了初步的工作分解结构,分解层次少,估算精度较差。自上而
13、下的成本估算实际上是以项目成本总体为估算对象,在收集上层和中层管理人员的经验判断,以及可以获得的关于以往类似项目的历史数据的基础上,将成本从工作分解结构的上部向下部依次分配、传递,直至WBS的最底层。 (2)自下而上估算自下而上的成本估算是先估算各个工作包的费用,然后自下而上将各个估算结果汇总,算出项目费用总和。采用这种技术路线的前提是确定了详细的WBS,能做出较准确的估算。当然,这种估算本身要花费较多的费用。 (3)自上而下和自下而上相结合的成本估算,第27页,二、软件项目成本估算方法 1类推估算法类推法估计结果的精确度取决于历史项目数据的完整性和准确度。因此,用好类推法的前提条件之一是组织
14、建立起较好的项目评价与分析机制,对历史项目的数据分析是可信赖的。其基本步骤如下:1)整理出项目功能列表和实现每个功能的代码行;2)标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方;3)通过步骤1)和2)得出各个功能的估计值;4)产生规模估计。,第28页,2功能点估计法功能点表示法是一种按照统一方式测定应用功能的方法,最后的结果是一个数。这个结果数可以用来估计代码行数、成本和项目周期。不过要正确、一致的应用这种方法还需要大量的实践。 该方法包括两个评估,即评估产品所需要的内部基本功能和外部功能。然后根据技术复杂度因子(权)对它们进行量化,产生产品规模的最终结果。,第
15、29页,功能点计算由下列步骤组成: 1)首先确定应用程序必须包含的功能(例如,“回溯”、“显示”)。国际功能点用户组(International Function Point Users Group,IFPUG)已经公布了相关标准,说明哪些部分组成应用的一个功能。一个功能等价于处理显示器上的一屏显示或者一个表单。 2)对每一项功能,通过计算4类系统外部行为或事务的数目,以及一类内部逻辑文件的数目来估算由一组需求所表达的功能点数目。这5类功能计数项分别是:外部输入:是指用户可以根据需要通过增、删、改来维护内部文件。只有那些对功能的影响方式与其他外部输入不同的输入才计算在内。外部输出:指那些向用户
16、提供的用来生成面向应用的数据的项。只有单独算法或者特殊功能的输出才计算在内。外部查询:是指用户可以通过系统选择特定的数据并显示结果。为了获得这项结果,用户要输入选择信息抓取符合条件的数据。此时没有对数据的处理,是直接从所在的文件抓取信息。每个外部独立的查询计为1。外部文件:是在另一系统中驻留由其他用户进行维护。内部文件:指客户可以使用他们负责维护的数据。,第30页,3)在估算中对5类功能计数项中的每一类功能计数项按其复杂性的不同分为简单(低)、一般(中)和复杂(高)3个级别。 功能复杂性是由某一功能的数据分组和数据元素共同决定的。计算数据元素和无重复的数据分组个数后,将数值和复杂性矩阵对照,就
17、可以确定该功能的复杂性属于高、中、低。表10-3是5类功能计数的复杂等级。 产品中所有功能计数项加权的总和,就形成了该产品的未调整功能点计数(UFC)。,5类功能计数的复杂度权重,第31页,4)这一步是要计算项目中14个技术复杂度因子(TCF)。表10-4是14个技术复杂度因子,每个因子的取值范围是05。,第32页,5)最后根据功能点计算公式FP=UFCTCF计算出调整后的功能点总和。其中:UFC表示未调整功能点计数,TCF表示技术复杂因子。功能点计算公式的含义是:如果对应用程序完全没有特殊的功能要求(即综合特征总值=0),那么功能点数应该比未调整的(原有的)点数降低35%(这也就是“0.65
18、”的含义)。否则,除了降低35%之外,功能点数还应该比未调整的点数增加1%的综合特征总值。,第33页,表10-5显示每个因子取值范围的情况。技术复杂度因子的计算公式为:TCF=0.65+0.01(sum(Fi) 其中:i=1,2,14,Fi的取值范围是05,所以TCF的结果范围是0.651.35。,第34页,功能点可以按照一定的条件转换为软件代码行(LOC)。表10-6就是一个转换表,它是针对各种语言的转换率,这个表是根据业界的经验研究得出的。,第35页,3经验成本估算模型 (1)SLIM模型,L和td分别表示可交付的源指令数和开发时间(单位为年);K是整个生命周期内人的工作量(单位为人年),
19、可从总的开发工作量ED=0.4K求得;CK是根据经验数据而确定的常数,表示开发技术的先进性级别。如果软件开发环境较差(没有一定的开发方法,缺少文档,评审或批处理方式),取CK=6500;正常的开发环境(有适当的开发方法,较好的文档和评审,以及交互式的执行方式),CK=10000;如果是一个较好的开发环境(自动工具和技术),则取CK=12500。,第36页,(2) COCOMO模型 基本COCOMO模型:静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。 中级COCOMO模型:在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员
20、、项目等方面属性的影响因素来调整工作量的估算。 高级COCOMO模型:包括中级COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对项目过程中分析、设计等各步骤的影响。,第37页,(2) COCOMO模型 模型的核心是方程ED=rSc 和 TD=a(ED)b其中: ED为总的开发工作量(到交付为止),单位为人月;S为源指令数(不包括注释,但包括数据说明、公式或类似的语句),常数r和c为校正因子。S的单位为103,ED的单位为人月。 TD为开发时间,经验常数r、c、a和b取决于项目的总体类型(结构型、半独立型或嵌入型).,第38页,项目总体类型,第39页,工作量和进度的基本
21、COCOMO方程,第40页,影响经验常数r值的15个成本因素,第41页,中级COCOMO工作量估算方法,第42页,三、项目成本估算的结果 1项目成本估算文件 对完成项目所需费用的估计和计划安排,对完成项目活动所需资源、资源成本和数量进行概略或详细的说明。这包括对于项目所需人员、设备和其他科目成本估算的全面描述和说明。另外,这一文件还要全面说明和描述项目的不可预见费等内容。项目成本估算文件中的主要指标是价值量指标,为了便于在项目实施期间或项目实施后进行对照,项目成本估算文件也需要使用其它的一些数量指标对项目成本进行描述。,第43页,2细节说明文件 项目范围的描述 项目成本估算的基础和依据文件。包
22、括制定项目成本估算的各种依据性文件,各种成本计算或估算的方法说明,以及各种参照的国家规定等。 项目成本估算各种假定条件的说明文件。包括在项目成本估算中所假定的各种项目实施的效率、项目所需资源的价格水平、项目资源消耗的定额估计等假设条件的说明。 项目成本估算可能出现的变动范围的说明。,第44页,3项目成本管理计划 管理和控制项目成本变动的说明文件 。 项目成本管理计划的核心内容就是这种计划和安排,以及有关项目不可预见费的使用管理规定等。,第45页,在项目成本估算的基础上,更精确地估算项目总成本,并将其分摊到项目的各项具体活动和各个具体项目阶段上,为项目成本控制制定基准计划的项目成本管理活动,它又
23、称为项目成本计划。 一、成本预算概述 成本估算的输出结果是成本预算的基础与依据,成本预算则是将已批准的估算进行分摊。,10 .4 项目成本预算,第46页,1项目预算的特征 计划性:指在项目计划中,将成本估算总费用尽量精确地分配到WBS的每一个组成部分,从而形成与WBS相同的系统结构。 约束性:是一种分配资源的计划,预算分配的结果可能并不能满足所涉及的管理人员的利益要求,而表现为一种约束。 控制性:是指项目预算的实质就是一种控制机制。,第47页,2编制项目成本预算的原则 项目成本预算要与项目目标相联系。必须同时考虑到项目质量目标和进度目标。 项目成本预算要以项目需求为基础。 项目成本预算要切实可
24、行。 项目成本预算应当有一定的弹性。 3项目成本预算的依据成本估算、工作分解结构、项目进度计划等。,第48页,二、项目成本预算的步骤 1分摊总预算成本,第49页,2制定累计预算成本 例:对于某软件需求分析项目,如表10-13所示了该项目部分预算成本表。该项目总预算是1.2万元人民币,预计为20天。为了监控成本,需要把每项活动的费用按天分摊。预算累计量就是从项目启动到报告期之间所有预算成本的求和。从表10-13可以看出,本项目到12天的累计量是7500元人民币。,项目每天分摊预算与预算累计表 单位:千元,第50页,三、成本预算的结果 1基准预算项目基准预算又称费用基准,它以时段估算成本进一步精确
25、、细化编制而成,通常以时间成本累计曲线(S曲线)的形式表示,是按时间分段的项目成本预算,是项目管理计划的重要组成部分,用来度量项目的绩效。,第51页,2实际成本累计例:假设现在项目进行到第11天,将前11天的成本填入表10-14中,可以看出到第11天为止,实际成本累计6100元人民币。 3盈余累计一项活动从开工到报告期实际完成的百分比称为完工率。一项活动总的分摊预算与该项活动的完工率的乘积称为盈余量。例如,活动“流程优化”分摊预算是4600元,在前3天完成任务的45%,前4天完成任务的60%,前5天完成任务的75%,则活动在前3、4、5天的盈余两分别是2070元(460045%=2070)、2
26、760元、3450元。,第52页,项目每天实际成本累计表 单位:千元,第53页,盈余累计就是从项目启动到报告期之间各项活动盈余量之和,第54页,项目3个累计量比较表,10 .4 项目成本预算,第55页,4成本绩效分析进行成本绩效分析时,通常选用4个指标:总预算成本(TBC)、累计预算成本(CBC)、累计实际成本(CAC)和累计盈余量(CEV)。一般是将CBC、CAC、CEV曲线画在同一个坐标轴上,以此来分析项目成本的绩效,如图10-9所示。,第56页,衡量成本绩效的指标是成本绩效指数(CPI),它是衡量正进行项目的成本效率。确定CPI的公式为:CPI=累计盈余量(CEV)/累计实际成本(CAC
27、) 例:软件需求分析项目中,第8天的CPI=4450元/3900元=1.14在报告期若实际成本累计小于分摊预算累计,而且盈余累计大于成本累计,说明成本计划和进度计划都得到较好的控制。而如果盈余累计小于实际成本累计,说明没完成进度计划。若某报告期实际成本累计大于分摊预算累计,即实际发生成本超出预算,说明成本计划没有得到很好执行。,第57页,在这种情况下,若盈余累计也大于分摊预算累计,说明虽然开支超出了预算,但实际完成的工作量也超过了计划工作量,估计问题不大。另一个衡量成本绩效的指标是成本差异(CV),它是累计盈余与累计实际成本之差。确定CV的公式为CV=累计盈余量(CEV)累计实际成本(CAC)
28、在第8天的CV=4450元-3900元=550元这一结果表明,到第8天工效值比已花费的实际成本多550元,它是工程绩效超前实际成本的另一个指标。,第58页,四。项目计划的优化 1工期优化指在不改变项目范围的前提下,压缩计算工期,以满足规定工期的要求,或在一定约束条件下,使工期最短的过程。 一是不改变网络计划中各项工作的持续时间,通过改变某些活动间的逻辑关系达到压缩总工期的目的;二是改变系统内部的资源配置,削减某些非关键活动的资源,将削减下来的资源调集到关键工作中去以缩短关键工作的持续时间,从而达到缩短总工期的目的。,第59页,工期优化的步骤如下:计算网络计划中的时间参数,找出关键线路和关键活动
29、 按规定工期要求确定应压缩的时间; 分析各关键活动可能的压缩时间; 确定将压缩的关键活动,调整其持续时间,并重新计算网络计划的计算工期; 当计算工期仍大于规定工期时,则重复上述步骤,直到满足工期要求或工期不能再压缩为止。 当所有关键活动的持续时间均压缩到极限,仍不满足工期要求时,应对计划的原技术、组织方案进行调整,或对规定工期重新审定。,第60页,例:假设每个活动存在一个“正常”的进度和“压缩”进度,一个“正常”的成本和“压缩”后的成本。如果活动在可压缩的进度内,压缩与成本的增长成正比,缩短工期的单位时间成本可用如下公式计算: (压缩成本-正常成本)/(正常时间-压缩时间),第61页,A-B的
30、工期为16周,费用是172000元;C-D的工期为18周,费用是87000元。关键路径为C-D,项目工期为18周,总费用是259000元。,第62页,A-B的工期为16周,费用是172000元;C-D的工期为18周,费用是87000元。关键路径为C-D,项目工期为18周,总费用是259000元。,第63页,如果将项目的工期分别压缩到17周、16周、15周,并且保证每个任务在可压缩的范围内,必须满足两个前提: 首先必须找出关键路径; 保证压缩之后的成本最小。 各活动的压缩时间成本为: A活动:(62000-5000)/(7-5)=6000元/周 B活动:(110000-80000)/(9-6)=
31、10000元/周 C活动:(45000-40000)/(10-9)=5000元/周 D活动:(42000-3000)/(8-6)=6000元/周,10 .4 项目成本预算,第64页,如果工期压缩到17周,可压缩的任务有C和D,但C的成本最小,所以,压缩到17周后的总成本是205000元。同理,如果将工期压缩到16周,关键路径仍为C-D,但活动C 已达到它的应急时间9周了。因此仅有的选择是压缩活动D的进程。所以压缩到16周后的总成本是211000元 .如果将工期压缩到15周,关键路径为C-D与A-B,可压缩的任务有A、B和D,为了压缩到15周,必须在两条关键路径中都压缩1周。因此,选择A和D活动
32、。所以,压缩到15周后的总成本是223000元。,10 .4 项目成本预算,第65页,2费用优化费用优化又称时间成本优化,目的是寻求最低成本的进度安排。,第66页,3资源优化 资源优化包括:“资源有限工期最短”和“工期固定资源均衡”两种。 资源有限工期最短优化:是通过调整计划安排以满足资源限制条件,并使工期延长最少。 其优化步骤如下: 计算网络计划每天资源的需用量; 从计划开始日期起,逐日检查每天资源需用量是否超过资源的限量,如果在整个工期内每天均能满足资源限量的要求,可行优化方案就编制完成。否则必须进行计划调整; 重复上述步骤,直至出现优化方案为止,第67页,(2) 工期固定资源均衡。通过调整计划安排,在工期保持不变的条件下,使资源尽可能均衡的过程。可用方差2或标准差来衡量资源的均衡性。方差越小越均衡。用初始网络计划得到的自由时差改善进度计划的安排,使资源动态曲线的方差值减到最小,从而达到均衡的目的。设规定工期为Ts,R(t)为t时刻所需的资源量,Rm为日资源需要量的平均值,则可得方差和标准差的计算公式:,第68页,方差和标准差的计算公式:,10 .4 项目成本预算,由于式中规定工期Ts与日资源需要量平均值均为常数,故要使方差最小,只需 使为最小。 因工期是固定的,所以,求方差2或标准差最小的问题只能在各活动的总时差范围内进行。,