本章要点
- 估算过程概念
- 估算方法
- 成本预算
- 案例分析
- 课程实践
关于估算
软件规模单位
工作量
软件项目成本
软件规模和软件成本的关系
成本估算结果
下面关于估算的说法,错误的是( )
A、估算是有误差的
B、估算时不要太迷信数学模型
C、经验对于估算来说不重要
D、历史数据对于估算来说非常重要
( )是成本的主要因素,是成本估算的基础。
A、计划
B、规模
C、风险
D、利润
软件工作量估计–两种基本的成本估算形式
是对整个工程项目的总开发时间和总工作量作出估算,然后将他们按阶段,步骤和任务进行分配
学生要求每学期写一篇有关IT的报告,如果你想建立一个估算学生完成这样一份报告的模型,你用什么来衡量报告的大小,什么因素会影响学生完成报告的难度?
最明显的工作量驱动因子是:
字数
难度因子可能包括:
材料的可获得性
学生对主题的熟悉程度
需要的宽度/深度
技术难度
类比方法又被称为基于案例的推理
评估者寻找已经完成的项目,这些项目与需要开发的新项目在许多特征上必须是类似的
如何选择与带预测的项目相近的项目?
假定要匹配的案例基于两个参数,构造系统的输入和输出参数。新的系统有7个输入,15个输出,过去有一个项目A有8个输入,17个输出,这两个项目的欧几里的距离是多少?
- 代码行估算法
- 功能点估算法
- 用例点估算法
- 类比(自顶向下)估算法
- 自上而下估算法
- 参数估算法
- 专家估算法
基于问题的估算
一个例子
loc估算方法,机械设计计算机辅助设计开发软件包
这类系统的组织平均生产率是620loc/pm
如果一个劳动力价格=8000/月,则每行代码的成本约为13美元 8000/620=13
13*33200=431000
33200/620=54
根据loc估算及历史生产率数据,该项目总成本的估算值是431000美元,工作量的估算值是54人月
lDo a functional decompostion of the robot software.Estimate the size of robot system as 6450 LOC .Assuming that your organization produces 450 LOC/pm with a burdened labor rate of $7000 per person-month,estimate the effort and cost required to build the software using the LOC-based estimation technique described in this chapter.
l对机器人软件进行功能分解。估计机器人系统的规模为6450个LOC。假设您的组织生产450个LOC/pm,人工负担为每人每月7000美元,使用本章所述的基于LOC的估计技术估计构建软件所需的工作量和成本。
7000/450=15.5
100333
14.333
适用代码行估算方法的项目特点
从软件程序量的角度定义项目规模
代码行技术的主要优点
代码是所有软件开发项目都有的产品,而且很容易计算代码行数
代码行估算方法的缺点
功能点共识
fp=ufc*tfc
ufc:未调整功能点计数
tcf:技术复杂度因子
ufc-未调整功能点计数
功能计数项(从逻辑处理的角度)
ufc-微调整功能点计数
功能计数项的复杂度等级
复杂度权重因素 | |||
---|---|---|---|
项 | 简单 | 一般 | 复杂 |
外部输入 | 3 | 4 | 6 |
外部输出 | 4 | 5 | 7 |
外部查询 | 3 | 4 | 6 |
外部接口文件 | 5 | 7 | 10 |
内部逻辑文件 | 7 | 10 | 15 |
还有哪些因素会影响实现功能点的难度?
调整因子 | 值(0-5) |
---|---|
1.需要备份和恢复 | 4 |
2.需专门数据通信 | 2 |
3.存在分布式处理吗 | 0 |
4.性能是关键的吗 | 4 |
5.运行在现有的紧张操作环境吗 | 3 |
6.系统需要在线数据项吗 | 4 |
7.需要多屏幕输入切换吗 | 5 |
8.主文件联机更新吗 | 3 |
9.输入输出文件或查询是复杂的吗 | 5 |
10.内部处理是否复杂 | 5 |
11.设计的代码可复用吗 | 4 |
12.转换与安装包含在设计中吗 | 3 |
13.为多个安装而设计的吗 | 5 |
14.具有易于变更,易于用户设计的应用设计 | 5 |
复杂度校正因子 | 1.17 |
最后得出的fp的估算值为
fp=总计**[(0.65+0.01*sum(fi)]
在学院工资系统项目中需要开发一个程序,该程序将从会计系统中提取每年的工资额,并从两个文件中分别提取课程情况和每个老师教的每一门课的时间,该程序将计算每一门课的老师的成本并将结果存成一个文件,该文件可以输出给会计系统,同时该程序也将产生一个报表,以显示对于每一门课,每个老师教学的时间和这些工时的成本。
假定报表是具有高度复杂性的,其它具有一般复杂性
考虑加权
总45
根据那个面的外贸订单项目的需求评估
外部输入:3项 外部输出:1项 外部查询:1项
外部接口文件:1项 内部逻辑文件:2项
技术复杂度因子 | |||
---|---|---|---|
F1 | 可靠的备份和恢复 | F2 | 数据通信 |
F3 | 分布式函数 | F4 | 性能 |
F5 | 大量使用的配置 | F6 | 联机数据输入 |
F7 | 操作简单性 | F8 | 在线升级 |
F9 | 复杂界面 | F10 | 复杂数据处理 |
F11 | 重复使用性 | F12 | 安装简易性 |
F13 | 多重站点 | F14 | 易于修改 |
功能点方法:复杂性判定
如何判定功能的复杂性
国家功能点用户小组
技术复杂度因子的取值范围
fp=ufc*tcf
ufc=45
tcf=0.65+0.01(14*3)=1.07
fp=45*1.07=48
如果pe=15工时/功能点
则effort=48*15=720工时
语言 | 代码行**/FP** |
---|---|
Assembly | 320 |
C | 150 |
COBOL | 105 |
FORTRAN | 105 |
PASCAL | 91 |
ADA | 71 |
PL/1 | 65 |
PROLOG/LISP | 64 |
SMALLTALK | 21 |
SPREADSHEET | 6 |
Compute the function point value for a project with the following information domain characteristics:
number of user inputs:32
number of user outputs:60
number of user inquiries:24
number of files:8
number of external interfaces:2
Assuming the project is simple and all complexity adjustment values are average.
在表中,功能和过程活动被融合。我们可以估计完成每个软件功能的每个软件过程活动所需的工作量,例如人月
这些数据构成了表格中心矩阵
然后平均人工费率(成本/单位工作量)*每个过程活动的估算工作量,并得出成本
1.请说出 基于过程的估算 步骤
2.请说出 下图中 行列 内容表示什么意思
3.从下图中哪个过程需要的工作量大,为什么
如果一个平均劳动力价格是每月8000美元,则项目总成本的估算值是368,000美元,工作量的估算值是46人月
分析设计,编码 ,测试 各自应该占总工作量的比例大概是多少(百分比)
40-20-40原则
1.计算未调整的角色的权值UAW;
2.计算未调整的用例的权值UUCW ;
3.计算未调整的用例点UUCP;
4.计算技术和环境因子TEF;
5.计算调整的用例点UCP ;
6.计算工作量( man-hours) 。
UAW=
UUCP=UAW+UUCW
前面除了客观技术方面的因素能影响到项目工作量
主观方面,人的哪些因素 能影响到项目工作量?
生产力因素智能从历史资产中获得。在没有得到符合公司生产的生产力基准数据前。将生产力划分为三个等级。高级工程师15人时/ucp;中级工程师20人时/ucp;初级工程师30人时/ucp
估算人员根据以往的完成类似项目所消耗的总成本,来推算将要开发的软件的总成本。然后按比例将他分配到各个开发任务单园中
是一种自上而下的估算形式
自顶向下发是对整个工程项目的总开发时间和,然后将他们按阶段,步骤任务进行分配
类比估算–主观判断举例
证券交易网站
利用任务分解图,对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本
自下而上估算举例
特点
比较简单,而且也比较准确
如果模型选择不当或者数据不准,也会导致偏差
面向loc驱动的
建议掌握
Walston-Felix模型
Cocomo模型
乘法因子的成本驱动属性
n在企业中,绝大多数系统技术上,产品,计算机和项目等属性都是类似的。只有人员的属性有所差异。该企业制定了下表:
分析员非常优秀,编程人员也很优秀但是对该项目面向的领域不熟悉并准备用新的编程语言。他们对操作系统很熟悉。请计算dem。如果名义工作量是4人月,则估算的工作量是多少?
高级COCOMO
一个明显的特点是该模型适应了项目在执行过程中变得越来越确定的状态,因而是一种渐进性评估
计算规模因素的质量(0-5)
先前经验(Precedentedness): 是否有先前的经验
开发的灵活性(Development Flexibility): 是否需求能够以多种方式来满足;
体系结构/风险解决(Architecture/Risk Resolution):是否方案已经被确定和解决的程度
团队的凝聚性(Team cohesion)
过程的成熟性(Process Maturity)
对于某一个软件企业,一个新的项目的新颖性一般,因而在先前经验方面给3分,开发灵活性方面很低,因而给以0分,但是需求可能会变化得比较厉害,因而风险解决指数给4分,团队很融洽,给1分,但是过程不标准,因而过程成熟性给4分,请计算规模因素sf:
计算工作量乘法算子em
类似于dem的计算
在不同的阶段有不同的em
如果每一项对于项目而言无特别影响,则取1
由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算。取得多个估算值,最后得出综合的估算值
是一种自下而上和参数法的结合模型,步骤如下
直接成本组成
人力成本参数=5万/人月 30人月包括开发、管理、质量规模的项目的直接成本是150万
简易算法
成本预算是将项目的总成本按照项目的进度分摊到各个工作单元中去
成本预算的目的是产生成本基线
分配项目成本预算包括3中情况
给任务分配资源成本
给任务分配固定资源成本
给任务分配固定成本
有些任务是固定成本的类型的任务,也就是说,管理者知道某项任务的成本不变,不管任务的工期有多长,或不管人物使用了哪些资源,在做这种情况下,管理者向任务直接分配成本
MED的2个估算方法
计算开放成本
计算管理成本
管理成本=开发成本*10%
管理成本为42*10%=4.2
计算直接成本=开发成本+管理成本
直接成本=42万元+4.2=46.2
计算间接成本=直接成本*20%
46.2*20%=9.24
项目纵观算出
UAW=18
计算未调整的用例权值UUCW
计算未调整的用例点UUCP
UUCP=UAW+UUCW=18+240=258
规模Effort
PF=20工时/用例点
218.7*20=4374
4374/8=547人天
如果1000元/人天 成本为54.7万元
小结
成本估算
- 代码行估算法
- 功能点估算法
- 用例点估算法
- 类比(自顶向下)估算法
- 自下而上估算发
- 参数估算法
- 专家估算法
成本预算