「软件项目管理」一文详解软件项目成本计划

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 * 31 * 40 * 6
外部输出0 * 40 * 51 * 7
外部查询0 * 31 * 40 * 6
外部接口文件0 * 51 * 70 * 10
内部逻辑文件1 * 71 * 100 * 15
总计13257
UFC45

(7)TCF-技术复杂度因子

TCF = 0.65 + 0.01(sum(Fi)),其中 Fi 为技术复杂度因子,其范围是 0-5TCF 的取值范围是 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(143)=1.07

F P = U F C ∗ T C F = 45 ∗ 1.07 = 48 FP=UFC*TCF=45*1.07=48 FP=UFCTCF=451.07=48

如 果 P E = 15 工 时 / 功 能 点 , 那 么 : E f f o r t = 48 ∗ 15 = 720 工 时 如果PE=15工时/功能点,那么:Effort=48*15=720工时 PE=15/Effort=4815=720

(9)功能点与代码行的转换

语言代码行/FP
Assembly320
C150
COBOL105
FORTRAN105
PASCAL91
ADA71
PL/165
PROLOG/LISP64
SMALLTALK21
SPREADSHEET6

3、用例点估算法(重点)

(1)图例

用例模型如下图所示:

(2)基本步骤

用例点估算方法的基本步骤为:

  • 计算未调整的角色的权值 UAW ;
  • 计算未调整的用例的权值 UUCW ;
  • 计算未调整的用例点 UUCP ;
  • 计算技术环境因子 TCFECF ;
  • 计算调整的用例点 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 权值定义表,如下表所示:

序号复杂度级别复杂度标准权值
1simple角色通过API与系统交互1
2average角色通过协议与系统交互2
3complex用户通过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 权值定义表,如下表所示:

序号复杂度级别事务/场景个数权值
1simple1-35
2average4-710
3complex>715

(5)计算未调整的用例点UUCP

公式: U U C P = U A W + U U C W UUCP=UAW+UUCW UUCP=UAW+UUCW例如:

表1: Actor 权值

序号复杂度级别权值参与角色数UAWi
1simple122
2average248
3complex3515

表2:Use Case 权值

序号复杂度级别权值用例数UUCWi
1simple5525
2average10220
3complex15345

(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

假设现有某项目的复杂度因子如下图表所示:

序号技术因子说明权值
1TCF1分布式系统2.0
2TCF2性能要求1.0
3TCF3最终用户使用效率1.0
4TCF4内部处理复杂度1.0
5TCF5复用程度1.0
6TCF6易于安装0.5
7TCF7系统易于使用0.5
8TCF8可移植性2.0
9TCF9系统易于修改1.0
10TCF10并发性1.0
11TCF11安全功能特性1.0
12TCF12为第三方系统提供直接系统直接系统访问1.0
13TCF13特殊的用户培训设施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)

假设现有某项目的环境因子如下表所示:

序号环境因子说明权值
1ECF1UML 精通程度1.5
2ECF2系统应用经验0.5
3ECF3面向对象经验1.0
4ECF4系统分析员能力0.5
5ECF5团队士气1.0
6ECF6需求稳定度2.0
7ECF7兼职人员比例高低1.0
8ECF8编程语言难易程度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 EC以上是关于「软件项目管理」一文详解软件项目成本计划的主要内容,如果未能解决你的问题,请参考以下文章

「软件项目管理」一文详解软件项目成本计划

「软件项目管理」一文详解软件项目质量计划

「软件项目管理」一文详解软件项目质量计划

「软件项目管理」一文详解软件项目质量计划

「软件项目管理」一文详解软件配置管理计划

「软件项目管理」一文详解软件配置管理计划