项目规模估计方法介绍

      项目成本估算是对完成项目工作所需要的费用进行估计和计划,是项目计划中的一个重要组成部分。要实行成本控制,必须先估算费用费用估算过程实际上是确定完成项目全部工作活动所需要的资源的一个费用估计值,这是一个近似值,既可以用货币单位表示,也可用工时、人月、人天等其他单位表示。在进行费用估算时,也包括各种备选方案的费用估算。
项目成本估算方法就是运用一系列科学的手段去对项目有关工程技术、经济、社会等方面的条件和情况进行调查、研究、分析,从而推算出项目所需成本的手段。

IT项目开发成本的估算方法编辑

对于一个大型的IT软件项目,由于项目的复杂性及IT项目的独特性,开发成本的估算不是一件容易的事情,它需要进行一系列的估算处理,因此,主要依靠分析和类比推理的手段进行,最基本的估算方法有以下几种:
● 成本建模技术
根据项目特征,用数学模型来预测项目的成本。一般采用历史成本信息(这些信息与项目成本的一些软件度量标准相关)来建立估算模型,并通过这个模型预测工作量和成本。
● 专家判定技术
也称为Delphi法,聘请一个或多个领域专家和软件开发技术人员,由他们分别对项目成本进行估计,并最后达成一致而获得最终的成本。
● 类比评估技术
根据以前类似项目的实际成本作为当前项目的估算依据。
● Parkson法则
Parkson法则表示工作能够由需要的时间来反映。在软件成本估计中,这意味着成本是由可获得的资源而不是由目标评价决定的。如果一个软件需要在12个月内由5个人来完成,那么工作量就是12 X 5 = 60个人月(PM)。
● 自顶向下估算法
成本的估算,主要依据工作分解结构、产品的功能以及实现该功能的子功能组成形式逐层分配成本。
● 自下而上估算法
首先估计每个组成单元的成本,然后根据工作分解结构,通过累加方式得到最终的成本估计
● 赢利定价法
软件的成本通过估计用户愿意在该项目上的投资来计算,成本的预算依靠客户的预算而不是软件的功能。
上面这些估算法都有它们的优势和不足,不能简单评价某种方法和好坏。在一个大型的IT项目中,通常要同时采用几种估算方法并且比较它们估算的结果,如果采用不同方法估算的结果大相径庭,就说明没有收集到足够的成本信息,应该继续设法获取更多的成本信息,重新进行成本估算,直到几种方法估算的结果基本一致为止。
成本预算是在确定总体成本后的分解过程。分解主要是作两个方面的工作:一是按工作分解结构和工作任务(工作包)分摊成本,这样可以对照检查每项工作的成本,出现偏差时可以确定是哪项工作出了问题;二是按工期时段分摊成本,将预算成本分摊到项目工期的各个时段,这样,可以确定在未来某个时段累计应该花费的成本,并检查偏差,评价成本绩效
目前最常用且最好用的度量方法主要用3种:面向规模(LOC)、面向功能点(FP)及COCOMO模型的度量方法。

2面向规模(LOC)的度量

面向规模的软件度量通过规范化质量和生产率测量的方法得到,这种测量是基于所生产软件的规模(Size)确定的。为了与其他项目中的同类度量相比较,选择代码行作为规范化,这样,就可以为每个项目产生一组简单的、面向规模的度量标准:
●每千行代码(KLOC)的错误数。
●每千行代码行(KLOC)的缺陷数。
●每千行代码行(KLOC)的成本。
●每千行代码行(KLOC)的文档页数。
●每人月错误数。
●每页文档的成本。
面向规模的软件度量,通常并不被认为是软件开发过程中最优的方法,因为有很多因素直接影响代码的行数。例如,代码行数依靠软件和硬件的选择,应用商业数据库管理系统就不用再编写有关数据库管理部分的代码。而用ADA语言就比用FORTRAN语言的代码行要多等。因此,在1979年Albercht提出面向功能点(FP)软件度量。

例如,某软件公司统计发现该公司每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。某项目的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月费用为10000元(包括人均工资、福利、办公费用公滩等),则该项目中1LOC的价值为: 
  (240×10000)/150000=16元/LOC 
  改项目的人月均代码行数为: 
  150000/240=625LOC/人月

3面向功能点(FP)的度量

面向功能点法是由Albrecht最先提出的,并且在1983年由Albrecht和Gaffney进行了改进。功能点可由以下4个参数计算出来:
● 外部输入和输出数
● 外部接口数
● 用户交互数
● 系统要用的文件数
每个参数都可以根据复杂性进行评估,一般它们的权理为3~15.功
 
能点是通过完成如图所示的功能点度量计算出来的。其中,FP计数等于数量与加权因子之积,加权因子根据功能点的复杂程度取不同的值。
功能点法是通过建立一个标准来确定某个特定的测量参数(简单、平均或复杂)的功能点数,但权重的确定多少带有一定的主观性。
一般,可以采用下面的方工计算功能点:
FP = 总计数值*[0.65+0.01*SUM(Fi)]
其中总计数值是上表中所得到的所有条目的总和。Fi(i=1,2,3,...14)是对以下14个问题回答的结果而得出的权重调整值(0~5)。等式中的常数和参数的加权因子是根据经验确定的。
序号 问题
1 系统是否需要可靠的备份和恢复
2 是否需要数据通信
3 是否有分布处理功能
4 系统是否很关键
5 系统是否在一个已有的、很实用的操作环境中运行
6 系统是否需要联机处理
7 联机数据项是否需要在多屏幕或多操作之间切换以完成操作
8 是否需要联机更新主文件
9 输入、输出及文件查询是否很复杂
10 内部处理是否复杂
11 代码是否需要设计成可复用的
12 设计中是否需要包括转换及安装
13 系统的设计是否支持不同组织的多次安装
14 应用的设计是否方便用户修改及使用
问题的答案及相应权重如下表所示
Fi的取值
0
1
2
3
4
5
没有影响
偶有影响
轻微影响
平均影响
较大影响
严重影响
一旦计算出功能点,就可以采用类似面向规模的方法来使用,以便规范软件生产率、质量及其他属性的测量:
● 每个功能点(FP)的错误数。
● 每个功能点(FP)的缺陷数。
● 每个功能点(FP)的成本。
● 每个功能点(FP)的文档页数。
● 每人月完成的功能点(FP)数。
面向功能点(FP)和面向规模(LOC)两种度量方法之间的关系为:LOC=AVC*功能点的数量,其中AVC是指该语言在实现一个功能点时所要用的平均代码行数。

4COCOMO模型

COCOMO模型是目前普及程度比较高的一种自顶向下项目成本估算模型,是比较精确,易于使用的成本估算方法。该模型的项目成本估算公式为:
E=A(KDSI)b
其中:E为开发成本:DSI为项目源代码行数,但不包括注释行数,DSI以千行为一个基本单位,即1KDSI=1024DSI:A、b为两个常数,具体值由项目的种类而定。
在COCOMO模中,根据开发环境及项目规模等因素,可把项目分为以下3种:
● 组织模式:指规模较小的、简单的软件项目;
● 半分离模式:指在南侧模和复杂性上处于中等程度的软件项目;
● 嵌入模式:指必须要求在一组紧密联系的硬件、软件及操作约束下开发的软件项目。
相应的,COCOMO模型的层次也包括3种基本形式,即初级COCOMO模型、中级COCOMO模型和高级COCOMO模型。
 
==============================================================================

方法一、Delphi 法 
  Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特定程序之间的差别,但专家"专"的程度及对项目的理解程度是工作中的难点,尽管Delphi技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时通常用得不多,但是,这种方式对决定其它模型的输入时特别有用。Delphi法鼓励参加者就问题相互讨论。这个技术,要求有多种软件相关经验人的参与,互相说服对方。 

  Delphi法的步骤是: 
  1、协调人向各专家提供项目规格和估计表格;    2、协调人召集小组会各专家讨论与规模相关的因素;   3、各专家匿名填写迭代表格; 
  4、协调人整理出一个估计总结,以迭代表的形式返回专家;   5、协调人召集小组会,讨论较大的估计差异; 
  6、专家复查估计总结并在迭代表上提交另一个匿名估计;   7、重复4-6, 直到达到一个最低和最高估计的一致。  
 
方法二、 类比法 
  类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。 
  其基本步骤是: 

  1、整理出项目功能列表和实现每个功能的代码行; 
  2、标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方; 
  3、通过步骤1和2得出各个功能的估计值;   4、产生规模估计。 
  软件项目中用类比法,往往还要解决可重用代码的估算问题。估计可重用代码量的最好办法就是由程序员或系统分析员详细地考查已存在的代码,估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比,可用下面的计算公式计算等价新代码行: 
  等价代码行 = [(重新设计% +重新编码% +重新测试%)/3]× 已有代码行  
  比如:有10,000行代码,假定30%需要重新设计,50%需要重新编码,70%需要重新测试,那么其等价的代码行可以计算为: 
  [ (30% + 50% + 70%)/3 ]× 10,000 = 5,000 等价代码行。 
  意即:重用这10000代码相当于编写5000代码行的工作量。 
  方法三、功能点估计法 
  功能点测量是在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通常的步骤是: 
  1、计算输入,输出,查询,主控文件,和接口需求的数目。   2、将这些数据进行加权乘。下表为一个典型的权值表。 
    功能类型  权值     输入    4     输出    5     查询    4 

    主控文件  10     接口    10 
  3、估计者根据对复杂度的判断,总数可以用+25%、0、或-25%调整。 
  据发现,对一个软件产品的开发,功能点对项目早期的规模估计很有帮助。然而,在了解产品越多后,功能点可以转换为软件规模测量更常用的LOC。 
  方法四、PERT估计法 
  PERT对各个项目活动的完成时间按三种不同情况估计:一个产品的期望规模,一个最低可能估计,一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计。Pert 估计可得到代码行的期望值E, 和标准偏差SD. 

 
posted @ 2015-04-03 15:17  BarryW  阅读(9269)  评论(0编辑  收藏  举报