软件开发成本估算
软件开发成本估算主要指软件开发过程中所花费的工作量及相应的代价。不同与传 统的工业产品,软件的成本不包括原材料和能源的消耗,主要是人的劳动的消耗。另 外,软件也没有一个明显的制造过程,它的开发成本是以一次性开发过程所花费耗的团队成本是要考虑在内 的
•这也就是传统意义上的peron-monthes所不能完全表达的部分.
新增人员的开支是不能被忽略的•这需要在实际开发过程中统计 得到数据,来精确计算.
项目策划任务集:
1•明确项目范围
2•确定可行性
3•分析风险
4•确定需要的资源
a・确定需要的人力资源
b•确定可复用的软件资源
c・标识环境资源
5•估算成本和工作量
a•分解问题
b•使用规模,功能点,过程任务或用例等方法进行两种以上 的估算
c•调和不同的估算
6•制定项目进度计划
a・建立一组有意义的任务集合
b・定义任务网络
c•使用进度计划工具制定时间表
d•定义进度跟踪机制
在项目策划任务集中,每一步都涉及到软件开发成本•对人员,环境, 可复用软件的资源的统一调度
,将直接影响成本•其中受软件开发的 特殊行,人力资源成本是最不好控制的•相对来说环境资源就容易控 制得多.
环境资源包括软件工具,硬件,网络资源等,当然还要包括公司的日 常费用(刨除开发团队佣金与开支,因为这部分属于人力资源成本)•这 些无非是买来或者维持,成本是很容易计算的.
可复用软件资源就要考虑到软件的具体设计,功能模块的关系以 及系统架构等具体信息•专家建议是将软件资源分为如下四部分:
1•成品构件:指能够从第三方直接购买的商品构件•或者以前项目 中完全相同的构件.
2•具有完全经验的构件:以前项目开发过的,与当前需求相似的功 能构件.
3•具有部分经验的构件:为以前项目开发,与当前项目要构造的软 件有关的已有规格,设计,代码或测试数据•但是需要从新架构.
4•新构件
开发的成本可像而知,是升序排列的•所以在软件开发的一开始就 应该考虑的使用以后技术,对可复用软件资源进行整理,不能在开发 过程中才考虑,要知道一个关键构件的重用会为软件开发带来多大的 效益•不过凡事也不是必然,不已有构件的扩展要考虑到原构件设计, 开发文档的完整性等因素.
还是就人力资源进行分析,由于跟人能力与技术方向的不
同,prog rammer不可能像一般意义上的工人或者机器一样有效地 预期成本•我们可以开发一个原型,利用原型数据来对应分析每个人 的价值与成本•
但是应该考虑的是,随着程序员的个人因素的变更(年 龄,职务,时间,身体状况等),原型数据只能作为一个一般参考•例如 SARS期间,或流行性感冒的传播,人力成本就会变得不好控制•(极限 情况下,这将使一个项目面临流产~)
目前流行的估算模式大致可分为如下几类:
分解估算:
.
2•基于问题的估算.
3•基于loc估算.(loc:代码行数)
4•基于 fp 估算.(fp:functionpoint 功能点)
5•基于过程估算.
6•基于用例估算.
经验估算:
典型的经验估算模型是通过回归分析从以往的软件项目中收集
的数据得来的•这种模型的总体结构表现为下面的形式:
E=A+B*(e)人C
其中A,B,C都是经验常量・E是工作量(单位:人*月),e是估算 变量(loc或者fp)•除了公式表达的方式以外,还有一些形式的项目调 整成分,如问题的复杂程度,开发人员经验,开发环境等,一下列出些常 用的调整系数:
Personnel Attributes
• Analyst capability
(ACAP)
• Programmer capability
(PCAP)
• Applications experience
(AEXP)
• Virtual machine Experience
(VEXP)
• Programming language experience
(LEXP)
Project Attributes
• Modern programming practices
(MODP)
• Software Tools
(TOOL)
• Required Development schedule
(SCED)
这些系数都应该应该根据具体的项目进行调整和设计.
cocomo:(constructive cost model)
这种模型是Barry Boehm在其论述,,软件工程经济学,,中介绍
的一种
软件开发成本估算 来自淘豆网m.daumloan.com转载请标明出处.