项目估算规程.docx
- 文档编号:23375536
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:29
- 大小:49.58KB
项目估算规程.docx
《项目估算规程.docx》由会员分享,可在线阅读,更多相关《项目估算规程.docx(29页珍藏版)》请在冰豆网上搜索。
项目估算规程
密级:
内部公开
文档编号:
NTT_PP_JHBGGC
版本号:
V1.0
项目估算规程
惠州市新中新电子技术开发有限公司
编制:
xx
生效日期:
22008年9月28日
审核:
xx
批准:
xx
惠州市新中新电子技术开发有限公司对本文件资料享受著作权及其它专属权利,未经书面许可,不得将该等文件资料(其全部或任何部分)披露予任何第三方,或进行修改后使用。
文件更改摘要:
日期
版本号
修订说明
修订人
审核人
批准人
2008-01-17
V0.1
初稿
2008-03-25
V0.2
修订变更评估与分析、计划变更申请
2008-09-28
V1.0
正式版
目录
1目的6
2适用范围6
3参考文件6
4术语和缩写6
5职责6
6入口准则7
7输入7
8过程描述7
8.1规模估计7
8.1.1启动准则7
8.1.2输入8
8.1.3主要步骤8
8.1.4输出8
8.1.5结束准则9
8.1.6备注9
8.2工作量估计9
8.2.1启动准则9
8.2.2输入9
8.2.3主要步骤9
8.2.4输出10
8.2.5结束准则10
8.2.6备注10
8.3成本估计10
8.3.1启动准则10
8.3.2输入10
8.3.3主要步骤10
8.3.4输出10
8.3.5结束准则10
8.3.6备注11
8.4进度估计11
8.4.1启动准则11
8.4.2输入11
8.4.3主要步骤11
8.4.4输出11
8.4.5结束准则12
8.4.6备注12
8.5关键计算机资源估计12
8.5.1启动准则12
8.5.2输入12
8.5.3主要步骤12
8.5.4输出12
8.5.5结束准则12
8.5.6备注12
9估计方法介绍13
9.1PERT规模估计法13
9.2Delphi估计方法13
9.2.1Delphi方法应用原理13
9.2.2Delphi方法软件过程中应用领域13
9.2.3DELPHI估计方法过程流程图14
9.2.4DELPHI估计方法过程详细说明14
9.3复用法15
9.3.1代码复用15
9.3.2功能复用15
9.4类比估算法15
9.5功能点工作量估计方法16
9.6国际通用功能点(FP)估算方法17
9.6.1功能点(FP)划分方法17
9.6.2功能点计算方法17
9.6.3COCOMO估算模型18
9.6.4IBM估算模型19
9.6.5历史经验数据分析法19
9.6.6估计因素权值计算方法20
9.6.7人员技能综合因素权值Q计算方法21
10功能点与代码行转换表22
11附录222
11.1功能点系数表22
11.2复杂度调整因子22
11.3度量23
11.4估算方向与计算(逻辑)公式23
12相关文件23
1
目的
软件生命周期中需要对软件规模、工作量、成本、进度等要素进行估算,估算的结果将是制定、调整项目计划的重要依据。
本指南旨在提供一些专业的估算方法,用以指导估算活动的进行。
2适用范围
本指南文件适用于各阶段执行的估算活动。
3参考文件
本指南文件的编写依据是美国卡耐基梅隆软件工程研究院(SEI)的集成软件能力成熟度模型1.2版本(CMMI-DEVV1.2)。
4术语和缩写
缩写
含义
FP
功能点(FunctionPoint)
DB
数据库(Database)
SLOC
源代码行(SourceLineOfCode)
RFP
方案建议书(RequestForProposal)
WBS
工作分解结构(WorkBreakdownStructure)
SW
软件(Software)
HW
硬件(Hardware)
DASD
直接存取存储设备(directaccessstoragedeviceordevices)
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的最底层模块,采用DELPHI法进行规模估计。
由多个专家对要估计的模块进行轮流估计,直到达到估计的最小误差为止,最终确定每个模块的估计规模。
在采用DELPHI方法估计时采用加权平均法求估计数值,对每一个参与估计的专家要分配一个权值,权值的大小要依据专家在被估计对象领域方面经验大小来确定。
(3)在DELPHI规模估计中间,可以穿插历史经验数据分析法、PERT方法和FP功能点分析方法。
(4)根据工作分解结构图(WBS),自下而上汇总各层模块的功能点或代码数量。
(5)软件规模单位可以选择功能点(FP)、代码行(SLOC)或千行代码(KSLOC)对象数量、UC点数等;文档规模可以选择文档页数。
但在规模估计过程中,只使用功能点作为估计单位,在采用IBM法和COCOMO法进行工作量和进度估计时,可以将功能点转换为代码行或千行。
(6)只对软件模块进行规模估计,不对管理性质的工作(如项目策划、项目跟踪、质量保证、配置管理等活动)做规模估计。
(7)进行规模估计时建议采用两种或两种以上的估计方法,并由项目组不同的人去完成,然后对每种结果进行对比,根据历史项目的相似经验及本项目的实际情况选择其中最可能的一种。
(8)在规模估计时,要区分软件模块是新开发的模块,还是复用或自动生成的模块。
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.1PERT规模估计法
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.2Delphi估计方法
9.2.1Delphi方法应用原理
召集各类专家对被估计的对象进行估计,对估计结果进行统计,找出每个被估计项估计数值的最大偏差(同一个被估计项的估计最大值与最小值之差),并将每一个被估计项的最大偏差由大到小排列,将排在前几位的被估计项单独挑出,再召集专家重新估计,对每个估计结果再进行统计排序,重复上述步骤,直到每个被估计项的偏差已经减小到大家都认可的范围内。
9.2.2Delphi方法软件过程中应用领域
在软件开发领域主要应用于软件规模、工作量、成本估计,应用DELPHI方法对于每个项目中可以分解的工作任务(例如WBS)进行规模方面估计,这些工作任务主要包括需求分析、概要设计、详细设计、编码、测试等工作内容。
9.2.3DELPHI估计方法过程流程图
9.2.4DELPHI估计方法过程详细说明
(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]将估算结果形成《项目估计算记录》:
类比项
对比项一
对比项二
本项目估算值
说明
规模
50个功能点
46个功能点
48个功能点
取平均值
设计工作量
30人日
25人日
33人月
增加界面设计要求
压力测试工作量
无
无
5人日
采用专家估算法
……
……
……
……
……
[Step5]若项目经理对估算结果存在疑问,可采用其它的估算方法进行估算验证
9.5功能点工作量估计方法
通过估算不同等级的功能点数量,描述项目规模与工作量。
面向功能,在产品功能需求较明确的情况下,用于估算功能点。
1.每个功能点在开发各个阶段的工作量按组织财富库中的组织测量表的经验值分配,
主要阶段包括:
需求、设计、编码、测试、验收。
每个功能点对应的软件工程、项目管理、质量保证、配置管理的工作量比例关系按《组织测量表》的经验值分配。
2.对于功能点为简单、中等、复杂的工作量分配,他们之间的换算关系是:
简单:
中等:
复杂=1:
2:
4
简单、中等、复杂的功能定义如下:
复杂度
单元复杂度标准
简单(SIMPLE)
业务逻辑少,访问数据库表单不超过2个,涉及少量数据
中等(MEDIUM)
业务逻辑数量中等,访问数据库表单2-4个,涉及中等数量的数据
复杂(COMLEX)
业务逻辑复杂,访问数据库表单超过4个,涉及大量数据
做功能估计的时候,还要考虑具体每个功能工作量的调整系数,在产品功能列表中进行统计累计的增加调整系数之后的标准功能总数。
如果项目中的功能点都符合标准定义,则系数为1,如果相对于标准的功能复杂度定义而言工作量有偏大,则需要进行系数调整。
3.统计出《产品功能列表》中不同等级功能的数量。
通过统计不同等级功能点数量,获取累计后的标准功能总数。
以累计的标准功能总数作为定项目的功能规模,填写于《项目估算记录_功能点工作量估算》中。
4,参照组织财富库中《组织测量表》中功能点对应的生成率估计项目总的工作量。
5.参照组织财富库中《组织测量表》中的历史项目的不同阶段的工作量比例进行对产品不同开发阶段的工时进行估算,估算结果保存在《项目估算记录_功能点工作量估算》中。
6.参照组织财富库中《组织测量表》中的的软件工程、项目管理、质量保证、配置管理的比例关系,进行不同类别的工作量估算,估算结果保存在《项目估算记录_功能点工作量估算》中。
9.6国际通用功能点(FP)估算方法
9.6.1功能点(FP)划分方法
功能点仅代表单一的规模度量单位:
即1FP=100行C++实体代码(包括VC++、UNIXC、C++Builder),不受程序本身复杂度等因素影响,不管是100行复杂的递归算法还是100行简单的排序程序其规模都是指一个功能点。
具备抽象性质:
FP功能点单独隔离来讲不表示任何其它意义,只表示规模度量单位,这点类似于货币,程序设计中的类、窗体、函数、功能和这里指的FP功能点没有任何关系。
统一性:
整个公司的FP功能点都是指一个概念即1FP=100行C++实体代码,各个项目组不需要在脑海里根据项目情况定义自己的功能点划分方式。
9.6.2功能点计算方法
(1)估计软件的输入、输出、查询、数据文件及外部接口的数目,可以采用PERT规模估计法,举例如下:
程序功能
乐观值
可能值
悲观值
估算数量
输入数
20
24
30
24
输出数
12
15
22
16
查询数
16
22
28
22
数据文件数
4
4
5
4
外部接口数
2
2
3
2
(2)估计各种复杂度的程序功能数量,举例如下:
程序功能
估计数量
一般复杂
中等复杂
很复杂
输入数
24
4
16
4
输出数
16
4
9
3
查询数
22
5
15
2
数据文件数
4
0
4
0
外部接口数
2
0
0
2
(3)根据功能点系数表,计算未经调整的功能点总数。
功能点系数表请参见附录2《功能点系数表》。
举例如下:
程序功能
一般复杂
中等复杂
很复杂
输入数
4×3
16×4
4×6
输出数
4×4
9×5
3×7
查询数
5×3
15×4
2×6
数据文件数
0×7
4×10
0×15
外部接口数
0×5
0×7
2×10
小计
43
209
77
未经调整的功能点总数=329。
(4)计算复杂度调整因子及调整后的功能点总数。
复杂度调整因子表参见附录2《复杂度调整因素表》。
例:
上例中,调整后的功能点总数=未经调整的功能点总数×复杂度调整因子=329×1.17=385。
(5)使用功能点进行规范化的历史数据说明:
这类组织的平均生产率为6.5FP/PM,如果一个劳动力价格是每月8000美元,则每个FP的成本约为1230美元。
根据FP估算及历史生产率数据,总的项目成本估算是472000美元,工作量为59个人月。
9.6.3COCOMO估算模型
为了建立规模和工作量及进度之间的关系,这里引用COCOMO模型(构造型成本模型),规模单位采用千行(SLOC/KSLOC),工作量单位为人月,按级别分为以下两种形式:
(1)模型一:
基本COCOMO模型,将软件开发工作量及进度作为程序规模的函数进行计算,程序的规模估算以代码千行表示。
(2)模型二:
中级COCOMO模型,将软件开发工作量及进度作为程序规模及一组“成本驱动因子”的函数来进行计算,其中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 估算 规程
![提示](https://static.bdocx.com/images/bang_tan.gif)