软件项目管理_第1页
软件项目管理_第2页
软件项目管理_第3页
软件项目管理_第4页
软件项目管理_第5页
已阅读5页,还剩69页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件项目管理第四章第四章 软件项目成本管理软件项目成本管理本章内容提要v软件项目规模成本的概念v成本估算v成本预算v成本控制第一节 软件项目规模成本的概念v软件项目规模度量单位:LOC(Lines of Code):源代码程序长度的测量FP(Function Point):系统功能数量的测量v软件项目工作量是指为了提供软件的功能而必须完成的软件工程任务量。其度量单位为:人月、人天、人年:人在单位时间内完成的任务量为了确定工作量度量单位,可设定一个“标准程序员”,例如具有1518个月开发经验的程序员。v工作量与规模紧密相关,此外还与项目和产品特性(如复杂性)相关。v在不会引起混淆的情况下,工作量

2、和规模这两个概念可不做区别。软件项目成本v完成软件项目工作量相应付出的代价,即待开发软件项目所需要的资金。v人的劳动消耗所需要的代价是软件产品的主要成本。v成本一般采用货币单位来计算,如人民币、美元等。工作量和成本的关系v工作量是成本的主要考虑因素,项目的工作量估算和成本估算常常同时进行。v如果确定了单位工作量的成本,则可根据项目工作量直接计算出项目成本。 例如:如果一个软件项目的工作量是20人月,而企业的人力成本参数是2万元/人月,则项目的成本是40万元。本章内容提要v软件项目规模成本的概念v成本估算v成本预算v成本控制v引言v成本估算方法v一种实用的项目成本估算过程第二节 成本估算2.1

3、引言v成本估算是对完成项目所需费用的估计,它是项目成本管理的核心。v成本估算可以有一些误差。估算结果可用一个范围表示,例如$10000$1000。v成本估算所依据的信息包括:项目需求和WBS,资源要求、资源消耗率(资源单价)、项目进度规划、历史项目数据等。 v项目成本的构成直接成本:与具体项目的开发直接相关的成本。如人员的工资、外包外购成本等。又可细分为开发成本、管理成本、质量成本等。间接成本:不归属于一个具体的项目,是企业的运营成本,分摊到各个项目中。如房租、水电、保安、税收、福利、培训,等等。2.2 成本估算方法v代码行、功能点v类比估算法v参数估算法v专家估算法代码行(LOC)从软件程序

4、量的角度定义项目规模。v要求功能分解足够详细。v有一定的经验数据(类比和经验方法)。v与具体的编程语言有关。v优点: 直观、准确(在有代码的情况下)、易于计算(可使用代码行统计工具)。v缺点:对代码行度量没有公认的标准定义。代码行数量依赖于所用的编程语言和个人的编程风格。在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量。代码行(LOC)功能点(FP)v用系统的功能数量来测量其规模,与实现产品所使用的语言和技术没有关系。v对系统的外部功能和内部功能进行计数。v根据技术复杂度因子(权)对它们进行调整,产生产品规模的度量结果。功能点计算公式vFP =UFC*TCFUFC(U

5、nadjusted Function Point Count) 未调整功能点计数TFC(Technical Complexity Factor) 技术复杂度因子UFC的计算方法v首先计算功能计数项,对以下五类元素计数:外部输入:由用户输入的面向应用的数据项。外部输出:向用户提供的输出数据项。外部查询:要求系统回答的交互式输入。外部接口文件:与其它系统的接口数据文件。内部文件:系统使用的内部固定文件。UFC的计算方法v然后对各功能计数项加权并求和,得到UFC。 功能计数项复杂度权重简单中等复杂外部输入346外部输出457外部查询346外部接口文件5710内部文件71015案例分析v某学院安装了一

6、个工资系统,人事处要求创建一个子系统来分析每门课程的人力资源成本。要求该子系统提供查询每门课程人力资源成本的功能。每名教师所得工资的细节可以通过工资系统中的文件得到,教师花在教每门课上的小时数可通过一个基于计算机的计时表系统中的文件得到。该子系统将计算结果存放到由总会计系统读取的一个文件中,并产生一个报告,来显示每名教师每门课的课时数及这些课时数相应的成本。案例分析v问题:计算该子系统的UFC。(子系统产生的报告复杂度为高,其它所有元素的复杂度均为中等) 案例分析v答案:UFC=1*7+1*4+3*7=32功能计数项功能计数项计数计数复杂度权重复杂度权重外部输入无外部输出报告 17外部查询14

7、外部接口文件工资文件 1,计时表文件 1,计算结果文件 17内部文件无TCF的计算方法技术复杂度影响因素F1可靠的备份和恢复F2数据通信F3分布式函数F4性能F5大量使用的配置F6联机数据输入F7操作简单性F8在线升级F9复杂界面F10 复杂数据处理F11重复使用性F12安装简易性F13多重站点F14易于修改TCF=0.65+0.01(sum(Fi): Fi:0-5,TCF:0.651.35TCF的计算方法每个技术复杂度影响因素的取值范围:取值取值对系统的影响对系统的影响0不存在或者没有影响1不显著的影响2相当的影响3平均的影响4显著的影响5强大的影响案例分析案例中技术复杂度影响因素的取值F1

8、可靠的备份和恢复 1F2数据通信5F3分布式函数0F4性能3F5大量使用的配置1F6联机数据输入0F7操作简单性1F8在线升级0F9复杂界面1F10 复杂数据处理4F11重复使用性0F12安装简易性3F13多重站点0F14易于修改3sum(Fi)=22TCF=0.65+0.01(sum(Fi)=0.65+0.01*22=0.87v该子系统的功能点为: FP=UFC*TCF=32*0.87=27.8案例分析功能点与代码行的转换语言代码行代码行/FPAssembly320C150COBOL105FORTRAN105PASCAL91ADA71PL/165PROLOG/LISP64SMALLTALK2

9、1SPREADSHEET6成本估算方法v代码行、功能点v类比估算法v参数估算法v专家估算法类比估算法v也称为基于案例的推理,估算人员根据以往完成的类似项目(源案例)所消耗的总成本(或工作量),来推算将要开发的软件(目标案例)的总成本(或工作量)。v需提取项目的一些特性作为比较因子,如项目类型(MIS系统、实时系统等)、编程语言、项目规模、开发人员数量、软件开发方法等。v在项目初期信息不足时(例如市场招标和合同签订)适于采用类比估算法。v该方法简单易行,花费少,但准确性差。类比估算法成本估算方法v代码行、功能点v类比估算法v参数估算法v专家估算法参数估算法v使用项目特性参数建立经验估算模型来估算

10、成本。v经验估算模型是通过对大量的项目历史数据进行统计分析(如回归分析)而导出的。v经验估算模型提供对项目工作量的直接估计。v该方法简单,而且比较准确,但如果模型选择不当或提供的参数不准确,也会产生较大的偏差。经验估算模型v模型形式:E=A+B*SCE:以人月表示的工作量A,B,C:经验导出的系数S:主要的输入参数(通常是LOC,FP等)v面向LOC的:Walston-Felix(IBM)模型 E= 5.2*(KLOC)0.91Balley-Basili模型 E=5.5+0.73*(KLOC)1.16Boehm简单模型 E=3.2*(KLOC)1.05Doty模型 E=5.288*(KLOC)

11、1.047经验估算模型v面向FP的: Albrecht and Gaffney 模型E=-13.39+0.0545FP Matson,BarnettE=585.7+15.12FP经验估算模型Walston-Felix(IBM)模型v1977年,IBM的Walston和Felix提出了如下的估算公式:E 5.2L 0.91 ,L是源代码行数(以KLOC计),E是工作量(以PM计) D 4.1L 0.36,D是项目持续时间(以月计) S 0.54E 0.6,S是人员需要量(以人计) DOC 49L 1.01。DOC是文档数量(以页计) COCOMO(Constructive Cost model)

12、v构造性成本模型,是世界上应用最广泛的参数型软件成本估计模型。v由Barry Boehm利用加利福尼亚的一个咨询公司的大量项目数据推导出的一个成本模型。该模型于1981年首次发表,于1994年又推出了COCOMO II。模型类别v基本COCOMO 静态单变量模型。v中等COCOMO 在基本模型基础上考虑各种影响因素(工作量驱动因子),调整模型。v高级COCOMO 中等COCOMO模型基础上考虑软件工程中各个步骤的影响。基本COCOMOvE=a*(KLOC)exp(b)E是项目的工作量(以人月计)KLOC是软件产品的代码行数a、b是依赖于项目自然属性的参数基本COCOMO系数表系统类型ab有机2

13、.41.05半相连3.01.12嵌入式3.61.20系统类型v有机(Organic)各类应用程序,例如数据处理、科学计算等。受硬件的约束比较小,接口环境灵活;软件的规模不是很大。v嵌入式(Embeded)系统程序,例如实时处理、控制程序等。在硬件和软件的严格约束条件下运行,对系统进行变更的代价很高;软件的规模任意。v半相连(Semidetached)介于上述两种系统之间。基本COCOMO举例v一个33.3 KLOC的软件开发项目,属于半相连型的项目,采用基本COCOMO进行工作量的估算:a=3.0,b=1.12E = 3.0L 1.12 = 3.033.3 1.12 = 152 PM 中等CO

14、COMOvE=a(KLOC)exp(b)*工作量系数 工作量系数是根据成本驱动因子的打分计算得出,是对公式的校正系数。中等COCOMO系数表系统类型ab有机3.21.05半相连3.01.12嵌入式2.81.20成本驱动因子驱动因子类型驱动因子类型编码编码成本驱动因子成本驱动因子产品属性产品属性RELY需要的软件可靠性需要的软件可靠性DATA数据库规模数据库规模CPLX产品复杂度产品复杂度计算机属性计算机属性TIME执行时间限制执行时间限制STOR主存限制主存限制VIRT操作系统变更的程度操作系统变更的程度TURN计算机恢复时间要求计算机恢复时间要求成本驱动因子(续)驱动因子类型驱动因子类型编码

15、编码成本驱动因子成本驱动因子人员属性人员属性ACAP分析员能力分析员能力AEXP应用经验应用经验PCAP程序员能力程序员能力VEXP虚拟机(如操作系统)经验虚拟机(如操作系统)经验LEXP编程语言经验编程语言经验项目属性项目属性MODP现代编程实践的使用现代编程实践的使用TOOL软件工具的使用软件工具的使用SCED需要的开发进度需要的开发进度工作量系数的计算v规定每个成本驱动因子的取值范围,将其取值划分为非常低、低、正常、高、非常高等级别,每个级别对应一个值。例如,软件组织可以决定使用以下系数来评估分析员能力(ACAP)的影响: 非常低(very low) 1.46 低(low) 1.19 正

16、常(nominal) 1.00 高(hign) 0.80 非常高(very hign) 0.71v当每个成本驱动因子Fi的值选定后,工作量系数的计算如下: 工作量系数=F1*F2*Fi*Fn工作量系数的计算中等COCOMO举例v一个33.3 KLOC的软件开发项目,属于半相连型的项目,采用中等COCOMO进行工作量的估算: a=3.0,b=1.12工作量系数=0.70*0.85*1*1.15=1.09E = 3.033.3 1.12 1.09166 PM 高级(详细)COCOMOv考虑了各成本驱动因子对分析、设计等各项目阶段的影响。成本估算方法v代码行、功能点v类比估算法v参数估算法v专家估算

17、法专家估算法v由多位对应用领域和开发环境有丰富经验的专家进行成本估算。v为避免单个专家产生偏见,尽量由多位专家进行估算,取得多个估算值,最后得出综合的估算值。专家估算法-Delphiv组织者发给每位专家一份软件系统的规格说明和一张记录估算值的表格,请他们估算。v专家详细研究软件规格说明后,对该软件提出3个工作量(或成本)的估算值:最小值ai 最可能值mi 最大值biv组织者对专家的表格中的答复进行整理,计算每位专家的平均估算值Ei=(ai+4mi + bi)/6和总的平均值E=(E1 +E2+En)/n (n表示n个专家)。v组织专家无记名填表格,比较估算差,并查找原因。v如果各个专家的估算差

18、异超出规定的范围(例如:15%),则需重复上述过程 ,最终可以获得一个多数专家共识的软件工作量(或成本)估计值。专家估算法-Delphi专家估算法举例v某管理信息系统-专家估算专家1:1,8,9 (1+9+4*8)/6=7(万元)专家2:4,6,8 (4+8+4*6)/6=6(万元)估算结果=(6+7)/2=6.5(万元) v在项目初期(特别是合同阶段),项目的需求不很明确,且需要尽快得出成本估算结果,此时可采用类比估算法或专家估算法。v需求确定之后,开始规划项目时,可采用参数估算法。v在项目的实施阶段,特别是在发生变更时,需重新估算项目的成本,这时可采用参数估算法和专家估算法。成本估算方法总

19、结2.3 一种实用的软件成本估算过程v该过程步骤如下:1.对项目进行任务分解:1,2,i,n2.估算每个任务的成本Ci3.项目的直接成本=C1+C2+Ci+Cn4.项目总估算成本= 直接成本+间接成本5.项目总报价=项目总估算成本+风险利润 估算每个任务的成本v先估计任务的工作量Ei (一般以人月为单位)。v然后估算任务成本Ci= Ei*人力成本参数。直接成本估算v直接成本的构成:开发成本、管理成本、质量成本v管理和质量成本的简易估算法:开发工作量:Effort(Dev) 管理和质量工作量:Effort(Mgn)=a*Effort(Dev) a为比例系数,可根据企业的具体情况而定,例如20%-

20、25%。v直接成本= Effort(Dev) + a*Effort(Dev)间接成本估算v根据企业具体的成本模型进行计算。v简易估算方法:间接成本=直接成本*间接成本系数间接成本系数根据企业的具体情况而定,例如取0.3。项目总估算成本v总估算成本=直接成本+间接成本 =直接成本+直接成本*间接成本系数 =直接成本(1+间接成本系数) =工作量*人力成本参数(1+间接成本系数)v成本系数=人力成本参数*(1+间接成本系数)v总估算成本=工作量*成本系数 例如:某项目的工作量是40人月,成本系数为2万元/人月,则项目的总估算成本为40*2=80万元。项目总报价v风险利润包括风险基金、项目税费和税后

21、利润等。v风险利润=项目总估算成本*a% a是利润系数,根据企业、项目的不同而不同。v项目总报价=项目总估算成本+项目总估算成本*a% =项目总估算成本(1+a%)2.4 成本估算的准确度类型类型准确度准确度说明说明量级估算:合同前Order of magnitude-25+75%概念和启动阶段,决策预算估算:合同期Budget-10+25%编制初步计划确定性估算:WBS后Definitive-5+10%工作分解后的详细计划估算不准确的原因v基础数据不足v估算对需求的敏感性v软件项目存在许多变更和不确定因素v缺乏有经验的估算人员v签约前后的不连贯避免低劣的估算v留出估算的时间,并做好计划v注意

22、积累项目数据,以开发人员提供的经验数据为基础进行估算v分类法估算v进行详细的较低层次上的估算v使用估算工具v使用几种不同估算技术,并比较它们的结果估算的表达方式v加减限定表示 6个人月的工作量可表示为6+3、6-1人月。v范围表示 6个人月的工作量可表示为59人月。估算的表达方式v风险量化估算:估算:6个人月,个人月,+3,-2+1人月:延迟交付转换子人月:延迟交付转换子系统系统-1人月:新成员的工人月:新成员的工作效率高作效率高+1人月:采用的新工具没人月:采用的新工具没有预计的好有预计的好-1人月:采用的新工人月:采用的新工具比预计的好具比预计的好+0.5人月人月:员工病事假员工病事假+0.5人月人月:低估规模低估规模本章内容提要v软件项目规模成本的概念v成本估算v成本预算v成本控制第三节第三节 成本预算成本预算 成本预算是将项目总估算成本分摊到各个工作单元中去,主要包括三个步骤:v将项目的总估算成本分摊到各项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论