软件开发成本估算

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件开发成本估算

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

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

1.Putnam 模型

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

L = Ck * K1/3 * td4/3

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

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

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

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

软件开发成本估算

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

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

1.Putnam 模型

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

L = Ck * K1/3 * td4/3

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

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

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

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

因开发环境而异,见下表

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

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

1.COCOMO模型(constructive cost model)

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

COCOMO模型中用到以下变量:

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

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

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

1.组织型(organic): 相对较小、较简单的软件项目。开发人员对开发目

标理解比较充分,与软件系统相关的工作经验丰富,对软件的使用环

境很熟悉,受硬件的约束较小,程序的规模不是很大(<50000行)

2.嵌入型(embedded): 要求在紧密联系的硬件、软件和操作的限制条件

下运行,通常与某种复杂的硬件设备紧密结合在一起。对接口,数据

结构,算法的要求高。软件规模任意。如大而复杂的事务处理系统,

大型/超大型操作系统,航天用控制系统,大型指挥系统等。

3.半独立型(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个历史项目的历史数据,得到如下计算公式。

最近在温习软件工程的课程,对软件项目成本估算模型有了些认识,以下是我的一些心得,希望与大家分享.

首先我们需要明确的是为什么要做软件项目预算.首先软件项目是不同于一般工程项目的项目类型.受用户需求,开发方式的影响很

大.没有明确的预算,会导致软件开支的不可控制,随着项目的进行,开发放要承担的风险也会增加.另外如果没有预算,更不可能与客户达

成开发协议.没有人会傻到委托别人做一个自己都不知道要花多少钱

才能完成的项目.最后也就是我个人对项目预算的看法,好的项目预

算应该包括团体预算与小组或个人预算两部分,好的项目经理应该了

解自己的团队,对突发事件等的考虑应该放在项目预算之中,然后将

项目的开支细化到小组乃至个人,这一点看似多余,但是却很有必要.

比如在实际的开发过程中,由于为了缩短工期而招收新的程序员,这

就需要对新程序员进行培训.新程序员消耗的团队成本是要考虑在内

的.这也就是传统意义上的peron-monthes所不能完全表达的部分.

新增人员的开支是不能被忽略的.这需要在实际开发过程中统计

得到数据,来精确计算.

项目策划任务集:

1.明确项目范围

2.确定可行性

3.分析风险

4.确定需要的资源

a.确定需要的人力资源

b.确定可复用的软件资源

c.标识环境资源

5.估算成本和工作量

a.分解问题

b.使用规模,功能点,过程任务或用例等方法进行两种以上的估算

c.调和不同的估算

6.制定项目进度计划

a.建立一组有意义的任务集合

b.定义任务网络

c.使用进度计划工具制定时间表

d.定义进度跟踪机制

在项目策划任务集中,每一步都涉及到软件开发成本.对人员,环境,可复用软件的资源的统一调度,将直接影响成本.其中受软件开发的

相关文档
最新文档