软件项目估算指南CMMI5.docx
《软件项目估算指南CMMI5.docx》由会员分享,可在线阅读,更多相关《软件项目估算指南CMMI5.docx(13页珍藏版)》请在冰豆网上搜索。
软件项目估算指南CMMI5
项目估算指南
Version1.1
文档名称:
CMMI5-项目估算指南-V1.1.doc
修订历史记录
日期
版本号
修改说明
修改人
核准人
项目估算指南
1目的
本文用于估算软件项目的规模、进度、工作量、成本,以指导项目作出合理的估算。
2围
本文件包括软件项目估算的各个方面,包括规模、进度、工作量、成本,并包括其在项目的中的分布估算。
本文件适用于公司所有项目。
3术语、缩写词
UCPUseCasePoint,用例点
4估算过程
4.1简要说明
准确的估算是最大可能加快开发速度的基础,没有准确的进度估算,再有效的进度计划也无从谈起。
不切实际的估算、不正确的期望是带来项目问题的主要原因。
估算是一个不断改进的过程,只有当详细地理解了每个功能,你才有可能准确估算出软件开发的进度和成本。
因此,能够提前做出的决策越多,估算的精确度就越高。
准确的估算可以更好的控制项目的规模、进度、成本。
工作量和进度估算通常在提交建议书及制定项目计划时进行,在项目实施过程中,也可能要对工作量和进度重新估计。
对于软件规模的估算主要有三种方法:
代码行,功能点,用例点。
本公司现在主要使用用例点方法。
对于工作量的估计,主要有两种方法:
⏹自顶向下的方法(Top-downapproach),用一个简单的方程从估计的规模求出估计的总工作量,各阶段的工作量可以根据它们占总工作量的百分比而得到。
在需求不太明确时,规模估计比较困难,这时估算的误差会比较大。
⏹自底向上的方法(Bottom-upapproach),首先获得项目各部分估计的规模,然后得到整个项目估计的规模。
在这种方法主要依据WBS来估算,首先将项目进行分解,列出主要工作,然后估计每件工作的工作量,汇总就可以得到整个项目的工作量。
对以上两种方法比较如下:
方法类别
优点
缺点
适用情况
自顶向下的方法
可以较好的利用过程数据库及历史数据
不需要进行工作分解
需求不明确时,规模不容易估算
项目情况与组织标准能力可能有较大差别
需求比较明确(一般在需求分析完成之后)
自底向上的方法
不需要估算规模
在WBS中可能会忽略某些重要的任务,工作分解比较困难
对某管理性工作不容易直接估算
不容易积累经验
需求不明确时(一般在撰写建议书或需求分析完成之前)
当工作量已经知道或确定以后,就可以根据历史数据,计算项目最适合的总进度,然后根据项目的人力分配情况及历史数据,计算出各主要进程碑的进度计划。
4.2流程图
4.2.1自顶向下的方法
4.2.2自底向上的方法
4.3估算规程
EntryCriteria
1
RFP,客户发出招标书,投标时
2
项目启动时
3
重大需求变更时
4
项目围变化时
Inputs
1
SRS
2
合同及建议书
3
历史信息
Steps
1
需求分解:
在估算时,首先需要当需求细分,需求分解越清楚、明确,估算的准确度越高。
需求随着项目的进展而不断明确。
2
⏹自顶向下的方法
估算产品规模:
本公司现在对产品规模采用UCP(用例点)来计算。
估算规模可以用以下几种方法:
(1)用估算算法进行估算
(2)采用Delphi法,根据历史数据,进行类比分析
⏹自底向上的方法
将项目的工作进行分解,列出项目的工作分解结构WBS,并估算出每件工作的工作量。
3
⏹自顶向下的方法
估算工作量:
根据产品规模及生产率历史数据推算出工作量,工作量用人月(PM,Person-Month)来衡量。
表单:
UCP估算表
⏹自底向上的方法
将WBS中所有工作的工作量汇总后,就可以得到整个项目的工作量。
表单:
WBS估算表
4
估算进度:
根据工作量推算出最合适的进度。
5
估算成本:
根据工作量及项目需要的资源,估算出成本。
具体处理方式见:
建议书和合同评审过程
表单:
报价表
6
工作量、进度分解:
将总的工作量及进度根据历史资料中的分配比例,分解到各阶段和活动中。
具体处理方式见:
项目度量与分析指南。
表单:
软件项目度量表
7
估算核准:
项目估算应写到项目管理计划中,并报开发部经理、业务部经理核准。
具体处理方式见:
项目管理过程。
表单:
项目管理计划
8
估算跟踪:
项目经理应定期跟踪项目估算,将其与实际执行情况进行比较。
若产生偏差,则要采取纠正和预防措施。
必要时,要进行重新估算,重复以下2~8步。
具体跟踪措施,见:
项目度量与分析指南。
Outputs
1
UCP估算表
2
WBS估算表
3
报价表
4
软件项目度量表
5
项目管理计划
ExitCriteria
1
估算通过核准
4.4裁剪指南
当不需要估算成本时,估算步骤中第5步可裁剪。
5估算方法
5.1UCP估算算法
UCP是用例点估算模型,估算流程包括以下步骤:
1.估算UUCP(未经过调整的UCP)
2.估算TCF调整因子
3.估算EF调整因子
4.估算UCP
5.估算工作量
6.估算进度
7.估算成本
估算时使用UCP估算表。
5.1.1估算UUCP
将软件需求用UseCases方式表达后,利用Actor(参与者)和UseCase(用例)的数量乘以相应的权值来计算UUCP(未经过调整的UCP)。
对于增强型项目,只计算新增及修改用例的UUCP。
计算UUCP时,Actor(参与者)和UseCase(用例)权值定义如下:
类别
复杂度
复朵度标准
权值
Actor
Simple
GUI
1
Average
Interactiveorprotocal-driverinterface
2
Complex
API/lowlevelinteractions
3
UseCase
Simple
1-3transactions/scenarios(事务/场景)
5
Average
4-7transactions/scenarios(事务/场景)
10
Complex
>7transactions/scenarios(事务/场景)
15
5.1.2估算TCF调整因子
估算TCF(TechnicalComplexityFactor,技术复杂度因素),要考虑以下因素:
Factor
Description
Value(0-5)
Weight
ExtendedValue
T1
Distributedsystem分布式系统
2
T2
Responseobjectives响应或吞吐量绩效要求
2
T3
End-userefficiency终端用户效率(联机)
1
T4
Complexinternalprocessing复杂的部处理过程
1
T5
Reusablecode可重用性
1
T6
Easytoinstall易安装性
0.5
T7
Easytouse易使用性
0.5
T8
Portable可移植性
2
T9
Easytochange易更改性
1
T10
Concurrent并发处理要求
1
T11
Securityfeatures安全要求
1
T12
Providesdirectaccessforthirdparties为第三方提供访问接口
1
T13
Specialusertrainingrequired特殊的用户培训要求
1
Tfactor(sumofextendedvalues)=
TechnicalComplexityFactor(TCF)=0.60+(0.01*Tfactor)=
其中:
8.ExtendedValue=Value*Weight
9.Weight值已给定
10.Value根据各因素的影响等级来确定:
●0:
表明因素与项目无关
●3:
影响程度中等
●5:
表示必不可少的因素,在整个软件开发过程中都有较强的影响
5.1.3估算EF调整因子
估算EF(EnvironmentalFactor,环境因素),要考虑以下因素:
Factor
Description
Value(0-5)
Weight
ExtendedValue
T1
FamiliarwithUML,熟悉UML
1.5
T2
Applicationexperience,开发经验
0.5
T3
Object-orientedexperience,面向对象的经验
1
T4
Leadanalystcapability,系统分析能力
0.5
T5
Motivation,积极性
1
T6
Stablerequirements,稳定的需求
2
T7
Part-timeworkers,兼职员工
-1
T8
DifficultprogrammingLanguage,复杂的编程语言
-1
EFactor(sumofextendedvalues)=
EnvironmentalFactor(EF)=1.40+(-0.03*EFactor)=
其中:
11.ExtendedValue=Value*Weight
12.Weight值已给定
13.Value根据各因素的影响等级来确定:
●0:
nottrueforanyteammembers,项目组成员都不具备该因素
Ø对于与经验有关的因素,表示没有该主题的经验
Ø对于积极性,表示没有积极性
Ø对于需求的稳定性,表示非常不稳定的需求
Ø对于兼职员工,表示全为兼职员工
Ø对于编程语言,表示容易掌握的编程语言
●3:
average,影响程度中等
●5:
trueforallteammembers,所有项目组成员都具有该因素
Ø对于与经验有关的因素,表示专家水平
Ø对于积极性,表示积极性高
Ø对于需求的稳定性,表示不变的需求
Ø对于兼职员工,表示全为全职员工
Ø对于编程语言,表示非常难的编程语言
5.1.4估算UCP
UCP计算公式如下:
UCP=UUCP*EF*TCF
计算出的结果就是产品的规模。
5.1.5估算工作量
根据产品规模及历史项目的生产率资料,可以计划出项目的工作量,公式如下:
Effort=Size*Productivity,effort单位为PM(Person.month)。
productivity要根据组织项目的实际历史数据来确定。
根据业界经验,建议每个UCP需要20人时,即2.5人日/UCP。
数据来源见附录。
5.1.6估算进度
以下是计算进度的一种方法:
Time(工作日)=C*Effort^P
C为进度调整系数,一般取3.0;
P为组织部开发能力调整系数,一般取0.35,此系数要根据组织实际项目执行的数据进行调整,以适合公司的实际能力.
数据来源见附录。
5.1.7估算成本
成本估算主要根据项目的工作量及项目需要的其它资源来计算,并要考虑风险等因素,具体请参考项目管理过程。
6附录
6.1生产率数据来源
公司建议生产率为每个UCP需要20人时,即2.5人日/UCP。
来源依据为:
《EstimatingSoftwareDevelopmentEffortbasedonUseCases.pdf》
Karner[13]proposedafactorof20staffhoursperusecasepointforaprojectestimate,whileSparksstatesthatfieldexperiencehasshownthateffortcanrangefrom15to30hoursperusecasepoint[21].SchneiderandWintersrecommendthattheenvironmentalfactorsshoulddeterminethenumberofstaffhoursperusecasepoint[18].ThenumberoffactorsinF1throughF6thatarebelow3arecountedandaddedtothenumberoffactorsinF7throughF8thatareabove3.Ifthetotalis2orless,use20staffhoursperUCP;ifthetotalis3or4,use28staffhoursperUCP.Ifthenumberexceeds4,theyrecommendthatchangesshouldbemadetotheprojectsothenumbercanbeadjusted.Anotherpossibilityistoincreasethenumberofstaffhoursto36perusecasepoint.
《ProjectEstimation.ppt》
Thisvariesfrom10hoursto40HoursperUCP.Thevariationisduetofactorsthathavenotbeentakenintoaccountsuchasnatureoftheteam,theproject,andtheprocessesusedbytheorganization
6.2进度估算数据来源
进度估算的公式为:
Time(工作日)=C*Effort^P
其中C=3.0;P=0.35,数据来源于:
《快速软件开发》(RapidDevelopment)P145
以及COCOMOII模型。