软件项目估算
感激不尽-谢坤山
软件项目估算
学院:数学与计算机科学学院
专业:计算机科学与技术(软件工程方向)
班级:软件12
学号:1
姓名:邓茂记
时间:2014年5月10日
软件项目估算是软件项目管理的核心所在,通过估算才
能得出软件项目的计
划,并成为软件项目控制的依据。一个成功的软件项目首先要有一个好的起点,也就是一个合理的项目计划,而一个好的项目计划,离不开一个准确、可信、客
观的项目估算。但是
因为软件本身的复杂性、历史经验的可重复性、估算工具的
缺乏以及一些人为错误,都会导致软件项目的
估算往往和实际情况相差甚远。
软件项目估算的目的在于为软件项目制定一个预算,确定项目目标是否
能够
实现,从而让项目在可控的状态下达成这个目标,同时为后续的软件质量提供对
比依据,从
中找出项目中存在的问题和好的经验,促进企业的持续改进。对项目
经理来说,合理、有效的项目估算能
够让自己在工作中掌握主动权,否则在工作
中只能是疲于奔命。软件项目估算主要包括规模估算、工作量
估算和成本估算。
软件项目估算一般分为两种应用场景:一是招投标的时候用来估价、报价;
二是用来安排进度计划和指导项目具体工作的分配。前者是为了确定承接项目签
合同进行的估算,后者是
在项目确定后进一步的细化估算,往往前者的结果可能
会影响项目的执行。一个完全准确地估算基本是不
可能的,这主要在于估算本身
存在很多困难。进行软件估算的困难有些是软件本身所固有的,特别是软件
的复
杂性和不可见性。
在估算一个软件项目时,软件项目经理需要明确以下三点:一是软件本
身是
非常困难的,但是估算又是必须的。二是只有准确地估算软件的功能,才能准确
地估算出软
件的成本,并制定出合理的进度计划。三是估算终究是估算,一个准
确的与实际情况一模一样的估算是不
可能的。
软件的估算有主观和客观两种估算方法。主观的估算方法可以通过召集项目
团队成员
,或者邀请各方面的专家,共同对某个项目的属性进行评估,参与评估
的每个人都要单独进行估算,如果
发现大家对某个项目属性估算的结果存在较大
偏差,那么就需要做进一步的讨论,直到取得共识为止,对
个别特殊属性进行主
观估算时,一定要有直接干系人的参与。客观的估算方法是利用公司提供的各种度量数据进行估算。
软件估算要有一个时机,不能过早也不能过迟,过早的估算使估算的结果可<
br>能与实际的结果相差很远,项目快结束时进行估算,虽然误差不会很大,但是此
时似乎又不需要估
算了。尽管估算是非常困难的,但是项目估算在项目的不同阶
段都在某一个可以预测的范围内,估算最终
是收敛的。软件项目的估算不是一个
一劳永逸的活动,它是随着项目进展不断细化的过程。软件开发的每
一个阶段都
可能最终影响到项目成本与进度,一般需要从可行性研究、需求说明、系统设计、
系
统实现、系统运行五个阶段进行估算。可行性研究阶段的估算是为软件组织提
供基本的信息,已决定项目
对组织是否有利;需求说明阶段的估算有助于组织在
进入产品开发之前再次权衡产品的可行性;系统设计
阶段的估算主要考虑的是如
何将设计好的系统开发出来以及有没有被忽视的问题;系统实现阶段的估算主
要
是对原有的估算进行调整;系统运行阶段的估算是对估算过程的评价,用实际的
消耗和各个阶
段的估算值进行比较,总结估算工作中哪些方面需要提高,为向项
目提供经验。
软件项目估算
的步骤:确定软件项目范围、确定完成软件开发所需的资源(包
括人力资源、可复用软件资源、环境资源
)、估算工作量、估算成本。
常见的软件规模估算方法主要包括:代码行法、功能点法、自下而上法、
类
比法、专家判断法、参数估算法、简单估算法等。
代码行是常用的度量软件规模的一种方法
,是对软件产品的源代码的行数进
行测量。现在的一般规则是计算物理行数,不计算空行
,不计算注释。对于其他
选项,一般为计算源文件根目录下的所有文件。所以代码行指的是所有的可执行
的源代码行数,包括可交付的工作控制语言语句、数据定义、数据类型声明、等
价声明、输入输
出的格式声明等。但是这种方法也存在许多问题:1、在需求、
计划、设计阶段因为本身没有代码行,需
要靠估算来解决。2、在满足客户的要
求以及反映进度方面的能力差强人意,对于管理者意义不大。3、
可视化编程工
具的大量采用以及模板库、类库的广泛采用,在程序的结果中有大量自动生成的
代
码或者复杂的自动配置脚本或资源文件设置。4、对于不同的编程语言来说,
代码行也缺乏可信转换方式
。但是由于它容易使用、非常直观、操作成本低,因
此仍然是规模估算中的一种可推荐的方法。
功能点分析法是重要的,也是有效的软件规模估算方法,它可以在项目早期
就对项目进行测量,并在开
发过程中不断地更新数据,从而实现一种持续一致的
管理。功能点分析法是从用户的角度来估算软件规模
,因为这种方法与开发语言
无关,而和系统的功能相关。此方法是在需求分析阶段基于系统功能的一种规
模
估算方法,是基于应用软件的外部、内部特性以及软件性能的一种间接的规模估
算。功能点分
析法是从软件用户的角度来评估一个软件系统的功能-,它将软件
的功能分为5个基本要素。其中两个表
示终端用户的数据需求:内部逻辑文件和
外部接口文件;另外三个表示用户对数据的获取处理的事务功能
,即人机交互事
务类型的功能点:用户输入、用户输出和用户查询。
内部逻辑文件是指一组以
用户角度识别的、在应用程序边界内且由用户输入
来维护的逻辑相关数据或控制信息。外部接口文件是指
一组在应用程序边界内被
查询,但在其他应用程序中被维护的、以用户角度来识别的、逻辑上相关的数据
。
用户输入是来自软件外部的数据输入,可以是控制信息,也可以是事务数据输入。
用户输出是
“经过处理”的数据,由程序内部输出到外部。用户查询是向应用程序
边界外发生数据基本处理的过程,
是一个输入输出的组合过程,从一个或多个ILF、
EIF中取出数据输出到程序外部。
自上
而下法的基础来自于范围定义时进行的WBS分解。首先对WBS中项目
工作包进行详细的规模、成本估
算,然后按照WBS的层次结构将结果累加起来
得出项目总规模或成本。用这种方法进行估算最为准确,
但是这种方法适用于
WBS分解足够准确的情况,否则估算的结果肯定有误差,而且这种方法不适用于项目初期的估算。
类比法适合评估一些与历史项目在应用领域、环境和复杂的方面相似的项目,
通过新项目与历史项目的比较得到规模估计。类比法估算结果的精确度取决于历
史项目数据的完
整性和准确度。类比法也可分为自顶向下类比法和自底向上类比
法,前者将估算项目的总体参数与类似项
目进行直接比较,从项目的整体出发进
行类推;后者比较类似的项目工作单元,然后通过工作单元的累加
得出项目的估
算结果。类比法简单易行,适合项目初期信息不足时使用。
专家判断法是通过专
家对项目成本做出估算。这种方法的精确度取决于专家
对估算项目的定性参数的了解和经验。德尔菲法是
最流行的专家评估技术,在没
有历史数据的情况下,这种方法适用于评定过去与将来、新技术与特定程序
之间
的差别。
软件项目成本估算包括综合估算法和简单估算法。软件项目的成本分为直接成本和间接成本。直接成本是指直接和本项目相关的成本,主要包括项目的开发
成本、管理成本和质
量成本。具体来说如人员工资、差旅费、通讯费、硬件、工
具、招待费等。综合的成本估
算方法是参数法和自上而下的结合,步骤如下:
(1)根据软件项目的功能创建WBS,并估算每个工作包的工作量(人月)
Qi。
(2)根据规模,直接估算每个工作包的直接成本:Ei=Qi*人力成本参数。
从而整个项目的直接成
本=E1+……+En。
(3)根据项目的直接成本估算项目的间接成本:间接成本=直接成本*间接
成本系数。
(4)估算总成本:总成本=直接成本+间接成本。
(5)估算项目报价:项目报价=项目总成本+风险利润=项目总成本*(1+利
润系数)。
基于工作量的简单成本估算法的公式是:成本=工作量*单位人员平均工资*
成本系数。基于系
统功能的简单成本估算法的步骤如下:
(1) 整理出项目功能列表。
(2)
将功能列表进行归类,整理成模块。
(3) 按照模块估算代码量和工作量。
(4)
估算出功能模块成本。
(5) 根据用户的需求和实现方式,估算开发系数。
(6)
估算成本:功能模块单价*功能模块数。