项目估算规程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

项目估算规程
版权信息
本文件涉及之信息,属xxxx有限公司所有。

未经xxxx有限公司允许,文件中的任何部分都不能以任何形式向第三方散发。

网址:
文档修订记录
修订状态:A--增加,M--修改,D--删除日期格式:YYYY-MM-DD
目录
1.目的 (1)
2.适用范围 (1)
3.参考文件 (1)
4.术语和缩写 (1)
5.职责 (1)
6.入口准则 (1)
7.输入 (2)
8.过程描述 (2)
8.1.规模估计 (2)
8.1.1.启动准则 (2)
8.1.2.输入 (2)
8.1.3.主要步骤 (2)
8.1.4.输出 (3)
8.1.5.结束准则 (3)
8.1.6.备注 (3)
8.2.工作量估计 (3)
8.2.1.启动准则 (3)
8.2.2.输入 (3)
8.2.3.主要步骤 (3)
8.2.4.输出 (4)
8.2.5.结束准则 (4)
8.2.6.备注 (4)
8.3.成本估计 (4)
8.3.1.启动准则 (4)
8.3.2.输入 (4)
8.3.3.主要步骤 (4)
8.3.4.输出 (5)
8.3.5.结束准则 (5)
8.3.6.备注 (5)
8.4.进度估计 (5)
8.4.1.启动准则 (5)
8.4.2.输入 (5)
8.4.3.主要步骤 (5)
8.4.4.输出 (6)
8.4.5.结束准则 (6)
8.4.6.备注 (6)
8.5.关键计算机资源估计 (6)
8.5.1.启动准则 (6)
8.5.2.输入 (6)
8.5.3.主要步骤 (6)
8.5.4.输出 (6)
8.5.5.结束准则 (6)
8.5.6.备注 (6)
9.估计方法介绍 (7)
9.1.PERT规模估计法 (7)
9.2.Delphi估计方法 (7)
9.2.1.Delphi方法应用原理 (7)
9.2.2.Delphi方法软件过程中应用领域 (7)
9.2.3.DELPHI估计方法过程流程图 (8)
9.2.4.DELPHI估计方法过程详细说明 (8)
9.3.复用法 (9)
9.3.1.代码复用 (9)
9.3.2.功能复用 (9)
9.4.类比估算法 (9)
9.5.功能点工作量估计方法 (10)
9.6.国际通用功能点(FP)估算方法 (11)
9.6.1.功能点(FP)划分方法 (11)
9.6.2.功能点计算方法 (12)
9.6.3.COCOMO估算模型 (13)
9.6.4.IBM估算模型 (14)
9.6.5.历史经验数据分析法 (15)
9.6.6.估计因素权值计算方法 (15)
9.6.7.人员技能综合因素权值Q计算方法 (16)
10.功能点与代码行转换表 (17)
11.附录2 (18)
11.1.功能点系数表 (18)
11.2.复杂度调整因子 (18)
11.3.度量 (18)
11.4.估算方向与计算(逻辑) 公式 (18)
12.相关文件 (18)
1.目的
软件生命周期中需要对软件规模、工作量、成本、进度等要素进行估算,估算的结果将是制定、调整项目计划的重要依据。

本指南旨在提供一些专业的估算方法,用以指导估算活动的进行。

2.适用范围
本指南文件适用于各阶段执行的估算活动。

3.参考文件
本指南文件的编写依据是美国卡耐基梅隆软件工程研究院(SEI)的集成软件能力成熟度模型1.3版本(CMMI-DEV V1.3)。

4.术语和缩写
5.职责
6.入口准则
●在项目生命周期的计划阶段,制定项目计划之前即开始估算,在各个阶段有必要
细化项目计划时进行估算。

●应在学习、理解了正确的「估算方法」之后,根据项目特性(业务、特定的硬件
环境、交货期、预算控制等),选取合适的「估算方法」。

●结合“采用多种「估算方法」”、“采用多个人估算”、“与过去相似实绩进行对照”
等方法,在恰当的时候,通过实施反复估算,使估算的精度更准确。

7.输入
●来自客户的软件需求;
●客户提出的与项目有关的承诺信息(质量、成本、交货期)及工作环境等前提或
制约条件;
●过去相似项目的实绩数据。

8.过程描述
8.1.规模估计
8.1.1.启动准则
项目立项或需求分析完成
8.1.2.输入
原始分配的需求《软件需求规格说明书》
历史项目规模数据
8.1.3.主要步骤
(1)根据软件项目需求以及历史相似项目经验划分软件功能模块,编制工作分解结构图(WBS)。

A、工作分解结构图(WBS)是一种将项目所有尽可能细化的功能模块以结构层次
图的形式来表示,为软件规模估计提供依据。

B、随着项目的进行,在需求不断明确的情况下,工作分解结构图(WBS)将同步
更新并细化,进一步为规模及工作量估计提供更详细的依据。

C、由于此处WBS仅用于项目估计而非用于系统设计,其细分程度由估计小组决
定。

D、根据项目的实际情况,可以选用工作分解结构图(WBS)最底层的模块作为规
模及工作量估计的最小单元。

(2)针对WBS的最底层模块,采用功能点估算法进行规模估计,通过估算不同等级的功能点数量,描述项目规模与工作量。

面向功能,在产品功能需求较明确的情况下,用于估算功能点。

(3)根据工作分解结构图(WBS),自下而上汇总各层模块的功能点或代码数量。

(4)软件规模单位可以选择功能点(FP)、代码行(SLOC)或千行代码(KSLOC)对象数量、UC点数等;文档规模可以选择文档页数。

但在规模估计过程中,只使用功能点作为估计单位,在采用IBM法和COCOMO法进行工作量和进度估计时,可以将功能点转换为代码行或千行。

(5)只对软件模块进行规模估计,不对管理性质的工作(如项目策划、项目跟踪、质量保证、配置管理等活动)做规模估计。

(6)进行规模估计时建议采用两种或两种以上的估计方法,并由项目组不同的人去完成,然后对每种结果进行对比,根据历史项目的相似经验及本项目的实际情况选择其中
最可能的一种。

(7)在规模估计时,要区分软件模块是新开发的模块,还是复用或自动生成的模块。

8.1.4.输出
工作分解结构图(WBS)
估计的软件规模
8.1.5.结束准则
工作分解结构图(WBS)、软件规模估计已经记录到《项目计划》
8.1.6.备注
立项之后,进行第一次规模估计;需求分析完成后,进行第二次规模估计
8.2.工作量估计
8.2.1.启动准则
软件规模估计已经完成
8.2.2.输入
工作分解结构图(WBS)
估计的软件规模
8.2.3.主要步骤
(1)根据软件规模及项目实际情况,选择一种工作量估计方法估计本项目总工作量,如选择历史经验数据分析法、COCOMO估算模型、IBM估算模型等等。

使用历史经
验数据分析法时直接用功能点计算总工作量,使用COCOMO和IBM估算模型时,需要将功能点转换为代码千行。

(2)从过程财富库中提取公司与工作量估计相关的各种比例系数。

(3)计算开发工作量=总工作量*比例系数(各阶段开发工作量包括阶段评审工作量,按一定比例分配),其中:
需求分析工作量=开发工作量*比例系数
系统设计工作量=开发工作量*比例系数
软件编码工作量=开发工作量*比例系数(包括单元测试)
模块编码工作量=模块规模/总规模*编码工作量
系统测试工作量=开发工作量*比例系数
试运行工作量=开发工作量*比例系数
(4)计算管理工作量=总工作量*比例系数,管理工作量可细分为:项目策划工作量、项目监控工作量、配置管理工作量、质量保证工作量、培训管理工作量等。

(5)根据项目实际情况,可对估计的工作量进行增减调整。

(6)将估计的各项工作量记录到《项目计划》。

8.2.4.输出
估计的项目工作量
8.2.5.结束准则
估计的工作量已经记录到《项目计划》
8.2.6.备注
公司平均生产率针对软件项目整体生产率,不是软件编码生产率
工作量单位可选择人天或人月
8.3.成本估计
8.3.1.启动准则
软件工作量估计已经完成
8.3.2.输入
估计的项目工作量
8.3.3.主要步骤
(1)从过程财富库中提取公司与软件相关的各角色标准成本单价。

(2)计算分项人力成本=分项工作量*成本单价。

(3)估计项目发生费用。

(4)计算项目总成本=各分项成本之和+项目发生费用。

(5)将估计的各项成本记录到《项目计划》。

8.3.4.输出
估计的项目成本
8.3.5.结束准则
估计的成本已经记录到《项目计划》
8.3.6.备注
成本单位可选择元或万元
8.4.进度估计
8.4.1.启动准则
软件工作量估计已完成
8.4.2.输入
估计的工作量
工作分解结构图(WBS)
8.4.3.主要步骤
(1)计算本项目人员技能综合因素权值Q(《人员技能综合因素权值表》)。

(2)选择一种进度估计方法估计项目总体进度。

A、在交付日期已确定的情况下(如,已签订开发合同),总体进度=交付日期-
项目启动日期。

B、在交付日期不确定,且团队人数未知的情况下,采用COCOMO估算模型、IBM
估算模型估计总体进度。

C、在交付日期不确定,且团队人数已知的情况下,总体进度T=总工作量E×(1
-Q)/ 团队人数N。

(3)在阶段人数已知的情况下,计算阶段进度=阶段工作量×(1-Q)/ 阶段人数;在阶段人数未知的情况下,依据项目实际情况、历史相似项目经验和项目总体进度,
确定各阶段的工作进度。

具体阶段包括需求分析、概要设计、详细设计、软件编码、系统测试、安装调试培训、试运行及验收等。

(4)依据阶段工作量和阶段进度,确定阶段人数=阶段工作量×(1-Q)/ 阶段进度。

(5)必要时,可以依据模块工作量和模块开发人数,计算模块开发进度=模块工作量×(1-Q)/ 模块开发人数。

(6)采用甘特图的形式表示各项任务的先后关系,确定关键路径,并标识出关键里程碑。

(7)将估计的各任务进度记录到《项目计划》。

8.4.4.输出
估计的进度
8.4.5.结束准则
估计的进度已记录到《项目计划》
8.4.6.备注
进度单位可选择天或月
人员技能综合因素权值Q取值范围:-0.5~+0.5
8.5.关键计算机资源估计
8.5.1.启动准则
需求确定
关键计算机资源限制已经清楚
8.5.2.输入
关键计算机资源限制及软件项目的需求。

8.5.3.主要步骤
(1)罗列项目本身存在的计算机资源限制,根据软件需求确定本项目的关键计算机资源。

(2)估计开发环境、测试环境和运行环境对关键计算机资源的要求。

(3)将估计的关键计算机资源数据记录到《项目计划》。

8.5.4.输出
估计的关键计算机资源
8.5.5.结束准则
估计的关键计算机资源已记录到《项目计划》
8.5.6.备注
关键计算机资源可以是内存使用量、设备存储量、通讯传输速度等。

不同的项目有着不同的关键计算机资源。

9.估计方法介绍
9.1.PERT规模估计法
PERT规模估计法包含三个估计参数:正常估计值、最高估计值、最低估计值,将这三个估计值作为参数代入PERT公式,便可以计算出估计项的规模范围。

举例:估计一个广域网通讯系统的代码规模:
设A=估计最低可能需要10(KSLOC)千行代码
B=估计正常可能需要12(KSLOC)千行代码
C=估计最高可能需要15(KSLOC)千行代码
E=(A+4B+C)/6得出E=(10+4*12+15)/6=12.167(KSLOC)千行代码
SD=(C-A)/6得出SD=(15-10)/6=0.833(KSLOC)千行代码
从以上数据可以推断出本项目规模将有68%的机率在11.334(12.167-0.833)(KSLOC)千行代码和13(12.167+0.833)(KSLOC)千行代码之间。

9.2.Delphi估计方法
9.2.1.Delphi方法应用原理
召集各类专家对被估计的对象进行估计,对估计结果进行统计,找出每个被估计项估计数值的最大偏差(同一个被估计项的估计最大值与最小值之差),并将每一个被估计项的最大偏差由大到小排列,将排在前几位的被估计项单独挑出,再召集专家重新估计,对每个估计结果再进行统计排序,重复上述步骤,直到每个被估计项的偏差已经减小到大家都认可的范围内。

9.2.2.Delphi方法软件过程中应用领域
在软件开发领域主要应用于软件规模、工作量、成本估计,应用DELPHI方法对于每个项目中可以分解的工作任务(例如WBS)进行规模方面估计,这些工作任务主要包括需求分析、概要设计、详细设计、编码、测试等工作内容。

9.2.3.DELPHI估计方法过程流程图
9.2.4.DELPHI估计方法过程详细说明
(1)项目经理负责确定并分配专家的权值,标记这些权值的分配依据,并罗列这些权值到估计报告中。

(2)项目经理负责准备要估计的项目内容,并制作成表格(DELPHI规模估计表格)。

(3)项目经理组织一次会谈,会谈人员要求与本项目相关的技术及业务专家参加,主要讨论被制成表格(Delphi循环估计排序与汇总表)的各估计项规模、工作量、成本方面问题。

项目经理根据被估计项内容的多少掌握会谈时间,一般一次讨论控制在十五分钟为宜。

(4)会谈完毕由各专家以匿名方式填写自己对每个被估计项所估计的数值在Delphi循环估计填报表中,最后统一交给项目经理。

(5)项目经理对已填报的估计值进行统计(建议采用加权平均法),计算每一个被估计项的最大估计值与最小估计值之间的差值,并将这些被估计项按差值由大到小进行排序,从而找到规模估计差异较大的几个被估计项,最后一并汇总到Delphi循环估计
排序与汇总表中。

(6)项目经理根据Delphi循环估计排序与汇总表中的分析结果判断是否每个被估计项的偏差已经减小到大家都认可的范围内,如果是则活动结束,否则重新估计。

9.3.复用法
复用过去相似项目中的代码或功能点,通过公式计算本项目的复用工作量。

9.3.1.代码复用
[Step1] 确定可利用项目/模块的代码行数
[Step2] 分析复用代码需要重新设计、重新编码、重新测试的比例
[Step3] 根据公式计算等价代码行,并记录在《项目估算记录》中。

等价代码行=([%重新设计+%重新编码+%重新测试]/3)*已存在的代码
比如:有10,000行代码,假定30%需要重新设计,50%需要重新编码,70%需要重新测试,那么其等价的代码行可以计算为:
[ (30% + 50% + 70%)/3 ]× 10,000 = 5,000 等价代码行
意即:重用这10000代码相当于编写5000代码行的工作量
9.3.2.功能复用
[Step1] 确定可利用项目/模块的功能点数
[Step2] 分析复用功能点需要重新设计、重新编码、重新测试的数量比例
[Step3] 根据公式计算等价功能点,并记录在《项目估算记录》中。

等价功能点=([%重新设计+%重新编码+%重新测试]/3)*已存在的功能点
比如:有50个功能点,假定30%需要重新设计,40%需要重新编码,50%需要重新测试,那么其等价的功能点可以计算为:
[ (30% + 40% + 50%)/3 ]× 50 = 20 等价功能点
意即:重用这50个功能点相当于编写20个功能点工作量
9.4.类比估算法
[Step1]项目经理根据项目范围、功能要求与特点,确定类比项(类比项以分解到模块或任务包为合适)。

[Step2] 获取公司财富库,对比财富库中的项目/模块/任务包与本项目类比项的相似程度,
提取同类项目的数据。

[Step3] 根据本项目类比项的特点,对经验数据进行适当调整,并写明原因。

如果存在多个同类项目时,可取这几个项目的平均值。

若本项目存在对比经验项目没有的估算项,应再结合其它估算法进行估算。

[Step4]将估算结果形成《项目估计算记录》:
[Step5]若项目经理对估算结果存在疑问,可采用其它的估算方法进行估算验证
9.5.功能点工作量估计方法
通过估算不同等级的功能点数量,描述项目规模与工作量。

面向功能,在产品功能需求较明确的情况下,用于估算功能点。

1.每个功能点在开发各个阶段的工作量按组织财富库中的组织测量表的经验值分配,主要阶段包括:需求、设计、编码、测试、验收。

每个功能点对应的软件工程、项目管理、质量保证、配置管理的工作量比例关系按《组织测量表》的经验值分配。

2.对于功能点为简单、中等、复杂的工作量分配,他们之间的换算关系是:
简单:中等:复杂=1:2:4
简单、中等、复杂的功能定义如下:
做功能估计的时候,还要考虑具体每个功能工作量的调整系数,在产品功能列表中进行统计累计的增加调整系数之后的标准功能总数。

如果项目中的功能点都符合标准定义,则系数为1,如果相对于标准的功能复杂度定义而言工作量有偏大,则需要进行系数调整。

3.统计出《产品功能列表》中不同等级功能的数量。

通过统计不同等级功能点数量,获取累计后的标准功能总数。

以累计的标准功能总数作为定项目的功能规模,填写于《项目估算记录_功能点工作量估算》中。

4,参照组织财富库中《组织测量表》中功能点对应的生成率估计项目总的工作量。

5.参照组织财富库中《组织测量表》中的历史项目的不同阶段的工作量比例进行对产品不同开发阶段的工时进行估算,估算结果保存在《项目估算记录_功能点工作量估算》中。

6.参照组织财富库中《组织测量表》中的的软件工程、项目管理、质量保证、配置管理的比例关系,进行不同类别的工作量估算,估算结果保存在《项目估算记录_功能点工作量估算》中。

9.6.国际通用功能点(FP)估算方法
9.6.1.功能点(FP)划分方法
功能点仅代表单一的规模度量单位:即1FP=100行C++实体代码(包括VC++、UNIX C、C++ Builder),不受程序本身复杂度等因素影响,不管是100行复杂的递归算法还是100行简单的排序程序其规模都是指一个功能点。

具备抽象性质:FP功能点单独隔离来讲不表示任何其它意义,只表示规模度量单位,这点类似于货币,程序设计中的类、窗体、函数、功能和这里指的FP功能点没有任何关系。

统一性:整个公司的FP功能点都是指一个概念即1FP=100行C++实体代码,各个项目组不需要在脑海里根据项目情况定义自己的功能点划分方式。

9.6.2.功能点计算方法
(1)估计软件的输入、输出、查询、数据文件及外部接口的数目,可以采用PERT规模估计法,举例如下:
(2)估计各种复杂度的程序功能数量,举例如下:
(3)根据功能点系数表,计算未经调整的功能点总数。

功能点系数表请参见附录2《功能点系数表》。

举例如下:
未经调整的功能点总数=329。

(4)计算复杂度调整因子及调整后的功能点总数。

复杂度调整因子表参见附录2《复杂度调整因素表》。

例:上例中,调整后的功能点总数=未经调整的功能点总数×复杂度调整因子=329×1.17=385。

(5)使用功能点进行规范化的历史数据说明:这类组织的平均生产率为6.5FP/PM,如果一个劳动力价格是每月8000美元,则每个FP的成本约为1230美元。

根据FP估算及历史生产率数据,总的项目成本估算是472000美元,工作量为59个人月。

9.6.3.COCOMO估算模型
为了建立规模和工作量及进度之间的关系,这里引用COCOMO模型(构造型成本模型),规模单位采用千行(SLOC/KSLOC),工作量单位为人月,按级别分为以下两种形式:
(1)模型一:基本COCOMO模型,将软件开发工作量及进度作为程序规模的函数进行计算,程序的规模估算以代码千行表示。

(2)模型二:中级COCOMO模型,将软件开发工作量及进度作为程序规模及一组“成本驱动因子”的函数来进行计算,其中“成本驱动因子”包括对产品、硬件、人员、及项目属性的主观评估。

基本COCOMO模型估算公式
基本COCOMO模型估算公式:
E=a b KLOC b b
D=c b E d b
其中,E是以人月为单位的工作量,D是以月表示的开发时间,KLOC是估算的项目代码行(以千行为单位)。

系数a b和c b及指数b b和d b是指不同软件开发方式的值。

基本COCOMO模型系数及指数因子表:
由以上公式可以导出生产率和所需人员数的公式:
生产率=KLOC/E
人员数=E/D
中级COCOMO模型估算公式
中级COCOMO模型估算公式:
E=a i KLOC b i×EAF
EAF∈[0.9,1.4]
其中,E是以人月为单位的工作量,D是以月表示的开发时间,KLOC是估算的项目代码行(以千行为单位), EAF为乘法因子。

下表列出系数a i及指数b i。

中级COCOMO模型系数及指数因子表:
乘法因子是根据15个成本驱动因子打分定出的,用来对公式进行修订。

15个成本驱动因子分成如下4组:
∙产品属性:指所需软件可靠性、数据基大小及产品复杂性。

∙计算机属性:即执行时间方面的限制、主存限制、虚拟机的易变性及计算机周转时间。

∙人员属性:即分析员能力、应用领域中实践经验、程序员能力、虚拟机使用经验及程序语言使用经验。

∙项目属性:即现代程序设计方法、软件工具的使用及所需的开发进度。

备注:
∙组织模式:较小的、简单的软件项目,有良好应用经验的小型项目组,针对一组不是很严格的需求开展工作。

∙半分离模式:一个中等的软件项目(在规模及复杂性上),具有不等经验水平的软件项目组,必需满足严格的及不严格的需求。

∙嵌入模式:必需满足一组严格的硬件、软件及操作约束。

9.6.4.IBM估算模型
IBM模型估算公式:
E=5.2×L0.91
D=4.1×L0.36=2.4×E0.35
S=0.54×E0.6
DOC=49×L1.01
其中,E是以人月为单位的工作量,D是以月为单位的项目持续时间,S为所需人员数,DOC为文档页数,L是估算的项目代码行(以千行为单位)。

9.6.5.历史经验数据分析法
历史经验数据分析法主要先将已完成项目的工作规模、工作量、生产率、成本进行统计并记录到过程财富库中,在以后的项目中再从财富库中抽取平均的生产率数据,并考虑计算项目估计假设对目前要估计项目的影响,从而综合得出目前项目的工作量、成本估计值。

历史经验数据分析法基本操作步骤:
(1)从过程财富库中提取公司平均生产率P、公司平均估计因素权值;
(2)根据项目的实际情况参照估计因素检查表估算本项目的估计因素权值(参见估计因素权值计算方法);
(3)根据本项目的估计因素权值及公司平均估计因素权值,计算本项目的估计假设因子Z=本项目估计因素权值之和/ 公司平均估计因素权值之和。

(4)根据公司平均生产率P、估计假设因子Z和软件规模S,计算本项目的总工作量=软件规模S *项目估计假设Z / 公司平均生产率P。

9.6.6.估计因素权值计算方法
估计因素权值计算方法介绍
(1)项目经理根据项目的实际情况并参照下面估计因素检查表格,列出本项目在相应内容分类的估计因素权值。

(2)估计因素主要考虑从技能经验、质量等级、产品复杂程度、过程工具、项目管理水平这五方面进行对要估计项目的级别评定,建议由多人轮流评定,由项目经理对这些评定值进行综合平均处理。

(3)由项目经理依据多人评定的综合平均结果作为本项目的估计因素权值,如A:B:C:D:E。

估计因素检查表
9.6.7.人员技能综合因素权值Q计算方法
人员技能综合因素权值Q计算方法介绍
对于相同工作量的任务由不同人员技能的工作组去完成,所花费的工作时间将会有很大的不同,下列人员技能综合因素检查表帮助你快速确定一个确定的工作组人员技能综合因素权值Q的大小,从而确定一个固定工作量任务由不同的人或组去完成所花费的大概时间。

人员技能综合因素权值检查表
10.功能点与代码行转换表
11.附录2
11.1.功能点系数表
11.2.复杂度调整因子
复杂度调整因子=0.65+0.01*∑Fi=1.17,∑Fi对应上表因素值之和,每个因素的取值为0~5,复杂度调整因子在0.65到1.35之间变化。

11.3.度量
项目经理统计项目估算的工作量。

11.4.估算方向与计算 (逻辑) 公式
12.相关文件
●项目计划制订过程
●度量分析过程文件
●项目计划变更指南●项目立项报告
●项目计划书
●项目估算书。

相关文档
最新文档