《{项目管理项目报告}第四章软件项目成本计划》由会员分享,可在线阅读,更多相关《{项目管理项目报告}第四章软件项目成本计划(134页珍藏版)》请在金锄头文库上搜索。
1、软件开发项目管理,北京邮电大学软件学院 韩万江,0, chapter_4,承上启下,1, chapter_4,成本计划,2, chapter_4,软件开发项目管理,第 4 章 软件项目成本计划,3, chapter_4,本章要点,一、软件项目规模成本的概念 二、估算的过程 三、估算的方法 四、成本预算 五、项目核心(进度)计划续 六、案例分析,4, chapter_4,关于估算,估算不是很准确的,有误差的 经验(历史)数据非常重要 不要太迷信数学模型,5, chapter_4,软件项目规模,软件项目规模即工作量,是从软件项目范围中抽出的软件功能,然后确定每个软件功能所必须执行的一系列软件工程任
2、务 包括:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。,6, chapter_4,规模的单位,LOC(Loc of Code) 源代码程序长度的测量 FP(Function Point) 用系统的功能数量来测量 人月 人天 人年,7, chapter_4,软件项目成本,完成软件规模相应付出的代价。 待开发的软件项目需要的资金。 人的劳动的消耗所需要的代价是软件产品的主要成本,8, chapter_4,成本的单位,货币单位 人民币元 美元 .,9, chapter_4,软件的规模和成本的关系,规模是成本的主要因素,是成本估算的基础 有了规模就确定了成本,10, chapte
3、r_4,本章要点,一、软件项目规模成本的概念 二、估算的过程 三、估算的方法 四、成本预算 五、项目核心(进度)计划续 六、案例分析,11, chapter_4,成本估算过程,估算输入,估算结果,成本估算方法,12, chapter_4,成本估算输入,项目需求、 WBS 历史项目度量 资源要求(资源编制计划) 资源消耗率:如人员成本: 100元/小时 进度规划:项目总进度(一般是合同要求) 学习曲线,13, chapter_4,资源规划,需要的资源种类、数量等,14, chapter_4,成本估算,直接成本 间接成本,15, chapter_4,直接成本,与具体项目相关的成本,16, chap
4、ter_4,间接成本,不能具体到某个项目中的成本, 可以分摊到各个具体项目中的成本,例如: 培训 房租水电 员工福利 市场费用 管理费 其他等等,17, chapter_4,项目估算结果,估算文件 资源,资源的数量,质量标准,估算成本等信息 单位:一般是货币单位 BAC(Budget At completion) 估算说明 工作范围 估算的基础和依据 估算的假设 估算的误差变动等,18, chapter_4,估算说明,预测所需要的总工作量的过程。 是一种量化的结果 可以有一些误差 成本估算不同于项目定价 贯穿于软件的生存周期。,19, chapter_4,本章要点,一、软件项目规模成本的概念
5、二、估算的过程 三、估算的方法 四、成本预算 五、项目核心(进度)计划续 六、案例分析,20, chapter_4,估算的基本方法,代码行、功能点 类比 (自顶向下)估算法 自下而上估算法 参数法估算法 专家估算法,21, chapter_4,代码行(LOC),从软件程序量的角度定义项目规模。 要求功能分解足够详细的 有一定的经验数据(类比和经验方法) 与具体的编程语言有关,22, chapter_4,代码行技术的主要优点,代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。,23, chapter_4,代码行(LOC)缺点,对代码行没有公认的可接受的标准定义 代码行数量依赖于所用的
6、编程语言和个人的编程风格. 在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量. 代码行强调编码的工作量,只是项目实现阶段的一部分,24, chapter_4,功能点(FP: Function point),用系统的功能数量来测量其规模 与实现产品所使用的语言和技术没有关系的 两个评估 内部基本功能 外部基本功能 加权和量化,25, chapter_4,功能点的公式,FP =UFC*TCF UFC:未调整功能点计数 TCF:技术复杂度因子,26, chapter_4,UFC-未调整功能点计数,功能计数项: 外部输入 外部输出 外部查询 外部文件 内部文件,27, cha
7、pter_4,UFC-未调整功能点计数,功能计数项的复杂度等级,28, chapter_4,功能点计算实例-UFC,29, chapter_4,TCF-技术复杂度因子,TCF=0.65+0.01(sum(Fi): Fi:0-5,TCF:0.65-1.35,30, chapter_4,技术复杂度因子的取值范围,31, chapter_4,功能点计算实例,FP=UFC*TCF UFC=301 TCF=0.65+0.01(14*3)=1.07 FP=301*1.07=322,32, chapter_4,功能点与代码行的转换,33, chapter_4,估算的基本方法,代码行、功能点 类比 (自顶向下
8、)估算法 自下而上估算法 参数法估算法 专家估算法,34, chapter_4,类比-定义,估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中 是一种自上而下的估算形式,35, chapter_4,类比使用情况,有类似的历史项目数据 信息不足(要求不是非常精确)的时候 在合同期和市场招标时,36, chapter_4,类比特点,简单易行,花费少 具有一定的局限性 准确性差,可能导致项目出现困难,37, chapter_4,类比举例,38, chapter_4,类比举例,证券交易网站 需求类似 历史数据:10
9、万,39, chapter_4,估算的基本方法,代码行、功能点 类比 (自顶向下)估算法 自下而上估算法 参数法估算法 专家估算法,40, chapter_4,自下而上定义,利用任务分解结构图,对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。,41, chapter_4,自下而上使用情况,项目开始以后,WBS的开发阶段 需要进行准确估算的时候,42, chapter_4,自下而上特点,这种方法相对比较准确,它的准确度来源于每个任务的估算情况 非常费时,估算本身也需要成本支持 可能发生虚报现象,43, chapter_4,自下而上举例,银行综合业务系统估算结果,44, ch
10、apter_4,估算的基本方法,代码行、功能点 类比 (自顶向下)估算法 自下而上估算法 参数法估算法 专家估算法,45, chapter_4,参数估算法定义,一种使用项目特性参数建立数据模型来估算成本的方法,是一种统计技术,如回归分析和学习曲线。,46, chapter_4,参数估算法使用情况,存在成熟的项目估算模型 应该具有良好的数据库数据为基础,47, chapter_4,参数估算法特点,比较简单,而且也比较准确 如果模型选择不当或者数据不准,也会导致偏差,48, chapter_4,参数成本估算实例(适合单价合同),49, chapter_4,经验导出成本模型,提供工作量(规模)的直接
11、估计 通过过去项目数据,进行回归分析,得出的回归模型,50, chapter_4,经验导出成本模型,整体公式:E=A+B*SC E:以人月表示的工作量 A,B,C:经验导出的系数 S:主要的输入参数(通常是LOC,FP等),51, chapter_4,经验导出成本模型(续),面向LOC驱动的 Walston-Felix(IBM) E= 5.2*(KLOC)0.91 Balley-Basili E=5.5+0.73*(KLOC)1.16 .COCOMO E=3.2*(KLOC)1.05 Doty E=5.288*(KLOC)1.047,52, chapter_4,经验导出成本模型(续),面向FP
12、驱动的 Albrecht and Gaffney E=-12.39+0.0545FP Matson,Barnett E=585.7+15.12FP,53, chapter_4,建议掌握模型,模型(Walston-Felix) COCOMO模型(Boehm),54, chapter_4,模型,1977年,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是文档数量(以页计),5
13、5, chapter_4,举例,采用java 完成项目,366功能点,则 L = 36646 = 16386行 = 16.386KLOC E 5.2L 0.91 5.216.386 0.91 66人月 DOC 49L 1.01 4916.386 1.01 826页,56, chapter_4,COCOMO(Constructive Cost model),结构化成本模型 是世界上应用最广泛的参数型软件成本估计模型 由Barry Boehm开发的,57, chapter_4,COCOMO模型发展,COCOMO 81 COCOMO II 模型系列,58, chapter_4,COCOMO 81,项
14、目类型: 有机: Organic 嵌入式: Embedded 半有机: Semidetached,模型类别: 基本COCOMO 中等COCOMO 高级COCOMO,59, chapter_4,模型类别,基本COCOMO 静态单变量模型 中等COCOMO 基本模型基础上考虑影响因素,调整模型 高级COCOMO 中等COCOMO模型基础上考虑各个步骤的影响,60, chapter_4,项目类型,有机: Organic, 各类应用程序,例如数据处理、科学计算 等 受硬件的约束比较小,程序的规模不是很大 嵌入式: Embedded 系统程序,例如实时处理、控制程序等 紧密联系的硬件、软件和操作的限制条
15、件下运行,软件规模任意 半有机: Semidetached 各类实用程序,介于上述两种软件之间,例如编译器(程序) 规模和复杂度都属于中等或者更高,61, chapter_4,基本COCOMO,E= a(KLOC)exp(b) 其中: E是所需的人力(人月), KLOC是交付的代码行 a , b是依赖于项目自然属性的参数:,62, chapter_4,基本COCOMO系数表,63, chapter_4,举例,一个33.3 KLOC的软件开发项目,属于中等规模、半有机型的项目,采用基本COCOMO: a=3.0,b=1.12。 E = 3.0L 1.12 = 3.033.3 1.12 = 152
16、 PM,64, chapter_4,中等COCOMO,E=a(KLOC)exp(b)*乘法因子 a b是系数 乘法因子是根据成本驱动属性打分的结果,对公式的校正系数,65, chapter_4,中等COCOMO系数表,66, chapter_4,乘法因子属性,产品属性 平台属性 人员属性 过程属性,67, chapter_4,乘法因子,68, chapter_4,乘法因子计算,每个属性Fi的取值范围为: 很低、低、正常、高、很高、极高,共六级。正常情况下 Fi=1。 当每个Fi的值选定后,乘法因子的计算如下 乘法因子F1*F2* Fi * Fn,69, chapter_4,举例(续),一个33.3 KLOC的软件开发项目,属于中等规模、半有机型的项目,采用中等COCOMO模型 a=3.0,b=1.12。 乘法因子0.70*0.85*1*1.15=1.09 E = 3.0L 1.12 = 3.033.3 1.12 PM,70, chapter_