技术开发 频道

软件产品成本估算方法

【IT168 技术文章】

    软件开发成本估算主要指软件开发过程中所花费的工作量及相应的代价。 不同与传统的工业产品,软件的成本不包括原材料和能源的消耗,主要是人的劳动的消耗。另外,软件也没有一个明显的制造过程,它的开发成本是以一次性开发过程所花费的代价来计算的。因此,软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、集成测试到认证测试,整个开发过程所花费的代价作为依据的。

    软件开发成本估算的经验模型

    Putnam 模型

    1978年Putnam提出的,一种动态多变量模型。

    L = Ck * K1/3 * td4/3

    其中: L-----------源代码行数(以LOC计)

    K-----------整个开发过程所花费的工作量(以人年计)

    td-----------开发持续时间(以年计)

    Ck----------技术状态常数,它反映“妨碍开发进展的限制”,取值因开发环境而异

    Ck的典型值 开发环境 开发环境举例

    2000 差 没有系统的开发方法,缺乏文档和复审

    8000 好 有合适的系统的开发方法,有充分的文档和复审

    11000 优 有自动的开发工具和技术

    从上述方程加以变换,可以得到估算工作量的公式: K = L3/(Ck3*td4)

    还可以估算开发时间: td = [L3/(Ck3*K)]1/4

    COCOMO模型(constructive cost model)

    这是由TRW公司开发,Boehm提出的结构化成本估算模型。是一种精确的、易于使用的成本估算方法。

    COCOMO模型中用到以下变量:

    DSI-------源指令条数。不包括注释。1KDSI = 1000DSI。

    MM-------开发工作量(以人月计) 1MM = 19 人日 = 152 人时 =1/12 人年

    TDEV-----开发进度。(以月计)

    COCOMO模型中,考虑开发环境,软件开发项目的类型可以分为3种:

    组织型(organic): 相对较小、较简单的软件项目。开发人员对开发目标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环境很熟悉,受硬件的约束较小,程序的规模不是很大(<50000行)

    嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,大型/超大型操作系统,航天用控制系统,大型指挥系统等。

    半独立型(semidetached): 介于上述两种软件之间。规模和复杂度都属于中等或更高。最大可达30万行。

    估算公式:

    基本COCOMO模型估算工作量和进度的公式如下

    工作量: MM = r*(KDSI)c

    进度: TDKV = a(MM)b

    其中经验常数 r, c, a, b 取决于项目的总体类型。

    COCOMO模型按其详细程度可以分为三级:基本COCOMO模型,中间COCOMO模型,详细COCOMO模型。其中基本COCOMO模型是是一个静态单变量模型,它用一个以已估算出来的原代码行数(LOC)为自变量的经验函数计算软件开发工作量。 中级COCOMO模型在基本COCOMO模型的基础上,再用涉及产品、硬件、人员、项目等方面的影响因素调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但更进一步考虑了软件工程中每一步骤(如分析、设计)的影响。

    基本COCOMO模型

    通过统计63个历史项目的历史数据,得到如下计算公式。

    总体类型 工作量 进度

    组织型 MM = 10.4*(KDSI)1.05 TDKV = 10.5(MM)0.38

    半独立型 MM = 3.0*(KDSI)1.12 TDKV = 10.5(MM)0.35

    嵌入型 MM = 3.0*(KDSI)1.20 TDKV = 10.5(MM)0.32

    进度计划是从时间的角度对项目进行规划,而成本估算则是从费用的角度对项目进行规划。这里的费用应理解为一个抽象概念,它可以是工时、材料或人员等。

0
相关文章