「软件项目管理」一文详解软件项目成本计划
Posted 星期一研究室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「软件项目管理」一文详解软件项目成本计划相关的知识,希望对你有一定的参考价值。
软件项目成本计划
序言
大家都知道,软件项目管理包含项目初始、项目计划、项目执行控制和项目结束这四大模块。其中,项目计划包含范围计划、成本计划、时间计划等9大计划。
那在今天的文章中,就带大家来了解项目计划中的成本计划。
叮,开始学习吧~🎩
一、成本估算的定义
-
成本估算是成本管理的核心,是预测开发一个软件系统所需要的总工作量的过程。
-
软件项目成本是指软件开发过程中所花费的工作量及相应的代价。
-
成本估算应该以软件项目管理、分析、设计、编程、测试等过程所花费的代价作为依据。
-
成本估算贯穿于软件的生命周期。
二、估算的基本概念
1、关于估算
- 估算不是很准确,会有误差;
- 项目经验数据非常重要;
- 不要太迷信某些数学模型。
2、软件项目规模
- 软件项目规模即工作量;
- 例如:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。
3、软件规模单位
LOC
(Line of Code) → 表示源代码长度的测量;FP
(Function Point) → 用系统的功能数量来测量;- 人月;
- 人天;
- 人年。
4、软件项目成本
- 完成软件规模相应付出的代价;
- 待开发的软件项目需要的资金;
- 人的劳动的消耗所需要的代价是软件产品的主要成本。
5、成本单位
成本单位通常是各种货币单位,比如:
- 人民币元
- 美元
- 英镑
- ……
6、软件规模和软件成本的关系
- 规模是成本的主要因素,是成本估算的基础;
- 有了规模就确定了成本。
7、成本估算结果
直接成本: 与具体项目相关的成本(如:人员工资、材料费、外包外购成本等)
间接成本: 可以分摊到各个具体项目中的成本(如:培训、房租水电、员工福利、市场费用、管理费、其他等等)
三、成本估算过程
1、估算输入
需求、资源要求、资源消耗率、进度规划、历史项目数据、学习曲线等
2、估算处理
采用一定的估算方法进行,包含直接成本和间接成本的估算。
3、估算输出
以简略或详细的形式表示,对项目所需的所有资源的成本均需要加以估计。
四、成本估算方法
1、代码行估算法
(1)定义
- 从软件程序量的角度定义项目规模。
- 与具体的编程语言有关。
- 分解足够详细。
- 有一定的经验数据(类比和经验方法)。
(2)代码行估算的优点
代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。
(3)代码行估算的缺点
- 对代码行没有公认的可接受的标准定义。
- 代码行数量依赖于所用的编程语言和个人的编程风格。
- 在项目早期、需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量。
- 代码行强调编码的工作量,只是项目实现阶段的一部分。
2、功能点估算法(重点)
(1)定义
- 与实现的语言和技术没有关系;
- 用系统的功能数量来测量其规模;
- 通过评估、加权、量化得出功能点。
(2)功能点公式
- FP = UFC * TCF
- UFC:未调整功能点计数
- TCF:技术复杂度因子
(3)UFC-未调整功能点计数
从处理逻辑的角度出发, UFC
可以分为 5
个功能计数项。分别是:
- 外部输入
- 外部输出
- 外部查询
- 外部接口文件
- 内部逻辑文件
接下来我们将依据这 5
个功能计数项进行详细细述。
(4)功能计数项详述
1)外部输入(External Inputs:EI)
给软件提供面向应用的数据的项(如屏幕、表单、对话框、控件,文件等);在这个过程中,数据穿越外部边界进入到系统内部。 如下图所示:
2)外部输出(External Outputs:EO)
向用户提供(经过处理的)面向应用的信息,例如,报表和出错信息等。 如下图所示:
3)外部查询(External Inquiry:EQ)
外部查询是一个输入引出一个即时的简单输出,没有处理过程。 如下图所示:
4)外部接口文件(External Interface Files :EIF’s)
用户可以识别的一组逻辑相关数据,这组数据只能被引用。用这些接口把信息传送给另一个系统。 如下图所示:
5)内部逻辑文件(Internal Logical Files:ILF’S)
用户可以识别的一组逻辑相关的数据,而且完全存在于应用的边界之内,并且通过外部输入维护,是逻辑主文件的数目。 如下图所示:
(5)功能计数项的复杂度等级
下面给出功能计数项的复杂度等级,如下图所示:
(6)UFC计算实例
下面,我们用一个例子来举例。
某外贸订单项目的需求评估为:
外部输入: 3
项;外部输出: 1
项;外部查询: 1
项;外部接口文件: 1
项;内部逻辑文件: 2
项。请计算出该项目的 UFC
。
他们的复杂程度如下表所示:
功能点 | |||
---|---|---|---|
项 | 简单 | 一般 | 复杂 |
外部输入 | 2 * 3 | 1 * 4 | 0 * 6 |
外部输出 | 0 * 4 | 0 * 5 | 1 * 7 |
外部查询 | 0 * 3 | 1 * 4 | 0 * 6 |
外部接口文件 | 0 * 5 | 1 * 7 | 0 * 10 |
内部逻辑文件 | 1 * 7 | 1 * 10 | 0 * 15 |
总计 | 13 | 25 | 7 |
UFC | 45 |
(7)TCF-技术复杂度因子
TCF = 0.65 + 0.01(sum(Fi)),其中 Fi
为技术复杂度因子,其范围是 0-5
, TCF
的取值范围是 0.65-1.35
。
Fi
技术复杂度因子有 14
项,如下表所示:
技术复杂度因子 | |||
---|---|---|---|
F1 | 可靠的备份和恢复 | F2 | 数据通信 |
F3 | 分布式函数 | F4 | 性能 |
F5 | 大量使用的配置 | F6 | 联机数据输入 |
F7 | 操作简单性 | F8 | 在线升级 |
F9 | 复杂界面 | F10 | 复杂数据处理 |
F11 | 重复使用性 | F12 | 安装简易型 |
F13 | 多重站点 | F14 | 易于修改 |
技术复杂度因子的取值范围,如下表所示:
调整系数 | 描述 |
---|---|
0 | 不存在或者没有影响 |
1 | 不显著的影响 |
2 | 相当的影响 |
3 | 平均的影响 |
4 | 显著的影响 |
5 | 强大的影响 |
(8)TCF计算实例
同样,我们用外贸订单项目的例子来计算 TCF
。假设 14
个复杂度因子的影响值都是平均,计算出该项目的功能点。
① U F C = 45 UFC=45 UFC=45
② T C F = 0.65 + 0.01 ( 14 ∗ 3 ) = 1.07 TCF=0.65+0.01(14*3)=1.07 TCF=0.65+0.01(14∗3)=1.07
③ F P = U F C ∗ T C F = 45 ∗ 1.07 = 48 FP=UFC*TCF=45*1.07=48 FP=UFC∗TCF=45∗1.07=48
④ 如 果 P E = 15 工 时 / 功 能 点 , 那 么 : E f f o r t = 48 ∗ 15 = 720 工 时 如果PE=15工时/功能点,那么:Effort=48*15=720工时 如果PE=15工时/功能点,那么:Effort=48∗15=720工时
(9)功能点与代码行的转换
语言 | 代码行/FP |
---|---|
Assembly | 320 |
C | 150 |
COBOL | 105 |
FORTRAN | 105 |
PASCAL | 91 |
ADA | 71 |
PL/1 | 65 |
PROLOG/LISP | 64 |
SMALLTALK | 21 |
SPREADSHEET | 6 |
3、用例点估算法(重点)
(1)图例
用例模型如下图所示:
(2)基本步骤
用例点估算方法的基本步骤为:
- 计算未调整的角色的权值
UAW
; - 计算未调整的用例的权值
UUCW
; - 计算未调整的用例点
UUCP
; - 计算技术和环境因子
TCF
和ECF
; - 计算调整的用例点
UCP
; - 计算工作量 (
man-hours
) 。
接下来将依据这几个内容进行展开介绍。
(3)计算未调整的角色的权值UAW
公式: U A W = ∑ C = c a W e i g h t ( c ) × a C a r d i n a l i t y ( c ) UAW=∑_C=caWeight(c) × aCardinality(c) UAW=∑C=caWeight(c)×aCardinality(c)
下面给出 Actor
权值定义表,如下表所示:
序号 | 复杂度级别 | 复杂度标准 | 权值 |
---|---|---|---|
1 | simple | 角色通过API与系统交互 | 1 |
2 | average | 角色通过协议与系统交互 | 2 |
3 | complex | 用户通过GUI与系统交互 | 3 |
(4)计算未调整的用例的权值UUCW
公式: U u c w = ∑ C = c u W e i g h t ( c ) × u C a r d i n a l i t y ( c ) Uucw=∑_C=cuWeight(c) × uCardinality(c) Uucw=∑C=cuWeight(c)×uCardinality(c)
下面给出 Use Case
权值定义表,如下表所示:
序号 | 复杂度级别 | 事务/场景个数 | 权值 |
---|---|---|---|
1 | simple | 1-3 | 5 |
2 | average | 4-7 | 10 |
3 | complex | >7 | 15 |
(5)计算未调整的用例点UUCP
公式: U U C P = U A W + U U C W UUCP=UAW+UUCW UUCP=UAW+UUCW。例如:
表1: Actor
权值
序号 | 复杂度级别 | 权值 | 参与角色数 | UAWi |
---|---|---|---|---|
1 | simple | 1 | 2 | 2 |
2 | average | 2 | 4 | 8 |
3 | complex | 3 | 5 | 15 |
表2:Use Case
权值
序号 | 复杂度级别 | 权值 | 用例数 | UUCWi |
---|---|---|---|---|
1 | simple | 5 | 5 | 25 |
2 | average | 10 | 2 | 20 |
3 | complex | 15 | 3 | 45 |
(6)计算技术因子TCF
公式: KaTeX parse error: Expected group after '_' at position 19: …=0.6+(0.01×\\sum_̲\\limitsi=1^1…_ W e i g h t i × V a l u e i Weight_i×Value_i Weighti×Valuei 。
假设现有某项目的复杂度因子如下图表所示:
序号 | 技术因子 | 说明 | 权值 |
---|---|---|---|
1 | TCF1 | 分布式系统 | 2.0 |
2 | TCF2 | 性能要求 | 1.0 |
3 | TCF3 | 最终用户使用效率 | 1.0 |
4 | TCF4 | 内部处理复杂度 | 1.0 |
5 | TCF5 | 复用程度 | 1.0 |
6 | TCF6 | 易于安装 | 0.5 |
7 | TCF7 | 系统易于使用 | 0.5 |
8 | TCF8 | 可移植性 | 2.0 |
9 | TCF9 | 系统易于修改 | 1.0 |
10 | TCF10 | 并发性 | 1.0 |
11 | TCF11 | 安全功能特性 | 1.0 |
12 | TCF12 | 为第三方系统提供直接系统直接系统访问 | 1.0 |
13 | TCF13 | 特殊的用户培训设施 | 1.0 |
具体的 TCF
值为:
T C F = 0.6 + 0.01 × ( 2.0 × 3 + 1.0 × 5 + 1.0 × 3 + 1.0 × 5 + 1.0 × 0 + 0.5 × 3 + 0.5 × 5 + 2.0 × 3 + 1.0 × 5 + 1.0 × 3 + 1.0 × 5 + 1.0 × 0 + 1.0 × 0 ) = 1.02 TCF=0.6+0.01×(2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+0.5×3+0.5×5+2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+1.0×0)=1.02 TCF=0.6+0.01×(2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+0.5×3+0.5×5+2.0×3+1.0×5+1.0×3+1.0×5+1.0×0+1.0×0)=1.02
其中,调整系数为给定数值。
(7)计算环境因子ECF
公式: KaTeX parse error: Expected group after '_' at position 20: …1.4+(-0.03×\\sum_̲\\limitsi=1^8…_ W e i g h t i × V a l u e i ) Weight_i×Value_i) Weighti×Valuei) 。
假设现有某项目的环境因子如下表所示:
序号 | 环境因子 | 说明 | 权值 |
---|---|---|---|
1 | ECF1 | UML 精通程度 | 1.5 |
2 | ECF2 | 系统应用经验 | 0.5 |
3 | ECF3 | 面向对象经验 | 1.0 |
4 | ECF4 | 系统分析员能力 | 0.5 |
5 | ECF5 | 团队士气 | 1.0 |
6 | ECF6 | 需求稳定度 | 2.0 |
7 | ECF7 | 兼职人员比例高低 | 1.0 |
8 | ECF8 | 编程语言难易程度 | 1.0 |
假设调整系数已给定,那么具体的 ECF
值为:
E C F = 1.4 + ( − 0.03 × ( 1.5 × 3 + 0.5 × 3 + 1.0 × 3 + 0.5 × 5 + 1.0 × 3 + 2.0 × 3 + 1.0 × 0 + 1.0 × 0 ) ) = 0.785 ECF=1.4+(-0.03×(1.5×3+0.5×3+1.0×3+0.5×5+1.0×3+2.0×3+1.0×0+1.0×0))=0.785 「软件项目管理」一文详解软件项目成本计划