第6章 成本计划

第6章 软件项目成本计划

软件项目规模

软件项目规模即工作量

例如:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。

规模单位

软件项目成本

  1. 完成软件规模相应付出的代价。
  2. 待开发的软件项目需要的资金。
  3. 人的劳动的消耗所需要的代价是软件产品的主要成本

规模是成本的主要因素,是成本估算的基础

成本估算结果

  1. 直接成本
    • 与具体项目相关的成本
  2. 间接成本
    • 可以分摊到各个具体项目中的成本,例如水电费

估算方法(掌握每种估算方法的计算法)

  1. 代码行估算法
  2. 功能点估算法
  3. 用例点估算法
  4. 类比(自顶向下)算法
  5. 自下而上估算法
  6. 参数估算法
  7. 专家估算法

代码行估算法

缺点

功能点估算

FP =UFC*TCF

UFC

TCF

用例点计算模型

  1. 计算未调整的角色的权值UAW;
  2. 计算未调整的用例权值UUCW ;
  3. 计算未调整的用例点UUCP;
  4. 计算技术和环境因子TEF;
  5. 计算调整的用例点UCP ;
  6. 计算工作量( man-hours)

未调整的角色权值UAW

未调整的用例权值UUCW

计算UUCP

UUCP = UAW + UUCW

计算技术因子TCF

计算环境因子ECF

计算调整后的用例点UCP

UCP = UUCP * TCF * ECF

计算工作量

Effort = UCP * PF

例:设PF = 20 工时/用例点

类比(自顶向下)估算法

估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中

使用情况

自下而上估算法

利用任务分解图(WBS),对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。

特点

参数估算法

通过项目数据,进行回归分析,得出回归模型,参数模型来估算(规模)成本的方法。

特点

比较简单,而且也比较准确 如果模型选择不当或者数据不准,也会导致偏差

具体公式

建议掌握模型

Walston-felix模型

E = 5.2×L ^0.91 ,L是源代码行数(以KLOC计),E是工作量(以PM计)

D = 4.1×L ^ 0.36,D是项目持续时间(以月计)

S = 0.54×E ^ 0.6,S是人员需要量(以人计)

DOC = 49×L ^ 1.01,DOC是文档数量(以页计)

例子:

采用java 完成项目,估计有366功能点,则

L = 366×46 = 16386行 = 16.386KLOC

E = 5.2×L ^ 0.91 = 5.2×16.386 ^ 0.91 = 66人月

DOC = 49×L ^ 1.01 = 49×16.386 ^ 1.01 = 826页

COCOMO(Constructive Cost model)

系列

COCOMO 81 COCOMO II 模型系列

基本原理

将开发所需要的工作量表示为软件规模和一系列成本因子的函数,基本估算公式:

A:可以校准的常量; S为软件规模; E为规模的指数,说明不同规模软件具有的相对规模经济和不经济性;EM为工作量乘数,反映某个项目特征对完成项目开发所需工作量的影响程度;n为描述软件项目特征的成本驱动因子的个数

模型级别
  1. 基本COCOMO
    • 静态单变量模型
  2. 中等COCOMO
    • 基本模型基础上考虑影响因素,调整模型
  3. 高级COCOMO
    • 中等COCOMO模型基础上考虑各个步骤的影响
项目类型
  1. 有机: Organic,
    • 各类应用程序,例如数据处理、科学计算 等
    • 受硬件的约束比较小,程序的规模不是很大
  2. 嵌入式: Embedded
    • 系统程序,例如实时处理、控制程序等
    • 紧密联系的硬件、软件和操作的限制条件下运行,软件规模任意
  3. 半有机: Semidetached
    • 各类实用程序,介于上述两种软件之间,例如编译器(程序)
    • 规模和复杂度都属于中等或者更高

基本COCOMO-81

E= a * (KLOC)^b

中等COCOMO-8

中等COCOMO-81乘法因子的成本驱动属性
  1. 产品属性
  2. 平台属性
  3. 人员属性
  4. 过程属性 乘法因子为各项相乘

高级(详细)COCOMO

将项目分解为一系列的子系统或者子模型 在一组子模型的基础上更加精确地调整一个模型的属性,

COCOMO II

专家估算法

由多位专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值,最后得出综合的估算值。

Delphi

实用软件估算模型

是一种自下而上和参数法的结合模型,步骤如下:

  1. 对任务进行分解:1,2,…,I,…n

  2. 估算每个工作包的成本Ei

    1. 直接估算成本Ei
    2. 先估算规模Qi,然后估算成本Ei= Qi *人力成本参数
  3. 直接成本=E1+E2+……+ Ei+……+ En

    1. 开发成本
    2. 管理成本,质量成本
      • Scale(Mgn)=a* Scale(Dev)
      • [a为比例系数:例如:20%--25%]
  4. 间接成本估算

    1. 按照企业模型直接估算
    2. 间接成本=直接成本*间接成本系数
    3. 间接成本= 规模人力成本参数间接成本系数
  5. 项目总估算成本= 直接成本+间接成本

    1. 估算成本=直接成本+间接成本
    2. 估算成本=直接成本(1+间接成本系数)
    3. 估算成本=规模*人力成本参数(1+间接成本系数)
    4. 成本系数=人力成本参数* (1+间接成本系数)
  6. 项目总报价

    1. 项目总报价=项目总估算成本+风险利润
    2. 项目总报价=(1+(a+b+c) %) *项目总估算成本
      1. 项目利润=估算成本*a%
      2. 风险基金=估算成本*b%
      3. 税=估算成本*c% (例如:c为5.5左右)

成本预算