项目估算方法

Posted Rolei_zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目估算方法相关的知识,希望对你有一定的参考价值。

项目估算方法 -- 估算是基于经验和历史数据的工作,适当增加余量

1. 常用词汇
    1) PDP,项目定义过程,project define progress/program
    2) SS,范围说明书,scope statement
    3) SOW,工作说明书,statement of work
    4) WBS,工作分解结构图,work breakdown structure:项目阶段、阶段产出、开始结束标准、里程碑节点,目的是为了分解任务,对项目进行准确估算
           项目分解成任务,任务分解为工作,工作分解为日常活动,日常活动产出交付成果(工作包 workpackage,80H原则;工作细目,workitem),所有工作都要落实到具体的人、执行时间、投入成本。
    5) 自项向下(宏观模型,按阶段和组成进行估算,系统性强但粒度粗,不易控制执行细节) 和 自底向上(微观模型,从项目组成组件、工作着手,对项目可能的工作进行假设评估,工作详尽但工作间联系会缺少整体考虑,不易控制过程),项目估算方法。 

2. 估算内容

  • 规模
  • 工作量 = 规模/生产率
  • 进度/工期 = 工作量/资源

3. 估算方法
    1)类比估算
         基于历史经验/类似案例进行评估。需要有项目积累,适合于同一行业或领域的项目。

    2)Delphi/专家估算
         项目领域专家或具有项目应用环境知识/经验的人员进行评估。依靠个人主观看法/经验,通过多次评审、讨论最终达成一致。

    3)PERT三点估算(Program Evaluation an Review Technique)
          \\small evaluateResult = \\frac{optimistic+pessimistic+4*mostLike}{6} \\pm \\frac{pessimistic-optimistic}{6}               
          估算结果 = (乐观估计 + 悲观估计 + 4*最可能估计)/ 6  +- (悲观估计 - 乐观估计)/6

     4)FP估算 -- function point,功能点估算,规模估算 -> 工作量

基本原则从用户角度识别项目范围和边界,进行评估;即对用户有意义的FP才是真正的FP -- 做客户要求做的
FP估算标准国际发布5项标准:IFPUG方法、NESMA 方法、COSMIC方法、FISMA方法、MARK II方法。
IFPUG方法(International Function Point Users Group)
基本步骤1)识别功能点的类型
2)识别待估算应用程序的边界和范围
3)计算数据类型功能点(不可见,数据/业务流)所提供的未调整的功能点数量
4)计算人机交互功能点(可见,界面可操作)所提供的未调整的功能点数量
5)确定调整因子
6)计算调整后的功能点数量
基本公式AFP(调整后功能点)= UFP (未调整功能点数目)* AF (影响因子)  
功能点类型1.数据类型功能点,Data Function,对最终用户不可见的数据功能(流程),对数据库复杂度的计算
  1)ILF:Internal Logical File内部逻辑/控制文件 -- 系统内部处理对象,处理内部数据
  2)EIF: External Interface File外部接口文件 -- 系统外部交互对象,处理交互数据

2.人机交互事务类型功能点,Transaction Function,对最终用户可见的交互功能,对程序开发复杂度的计算
  1)EI: External Input外部输入,能过增/删/改对ILF进行更改和维护
  2)EO: External Output外部输出 -- 对数据处理运算操作的EQ,改变ILF
  3)EQ: External Inquiry外部查询 -- 不对数据处理,不更改ILF

* Elementary Process基本处理过程
  从用户角度有意义的、最小的活动单位,EI EO EQ是基本处理过程的基本处理单元
数据类型功能点复杂度
ILF/EIF计算
* ILF判定规则:应用程序边界内,用户进行了增/删/改/查操作的数据
* EIF判定规则:应用程序边界内查询,应用程序边界外保存的数据;

* DET(Data element type)-- 数据对象属性
  用户角度识别的、非重复的、有业务逻辑意义的字段,ILF维护 或 ILF/EIF的返回字段
  业务逻辑对数据对象处理的料度(整体处理 1 DET,分别处理 N DET)
  数据库表字段 + 业务处理对象

* RET(Record element type)-- 数据对象集处理 = 必选集合 + 可选集合 = 处理对象/信息集合
  DET集合,可以理解为数据库处理的对象表集合,ILF/EIF被计算为一个RET
交互
事务类型功能点

* FTRS = EI读取/维护的ILF/EIF + EO/EQ读取/维护的ILF/EIF  -- file type record

   FTR,file type record,文件类型记录
* DETS = EI输入的非重复字段 + 主/外键 + 提示信息/注释信息 + EO/EQ输入/返回的非重复字段(报表字段)
  非外部输入,即使经过计算也不记灵EI/EO/EQ

* EI:外部输入;处理程序外部数据输入,维护1个或多个ILF,或系统更改
  唯一的外部接收的数据、独立的系统处理逻辑、不同的ILF或EIF

* EO:外部输出;数据到程序外部(经过计算的数据),向用户呈现信息,维护1个或多个ILF,或系统更改
* EQ:外部查询;数据到程序外部(原始数据),向用户呈现信息,不做ILF维护或系统更改
  

通俗理解* ILF:系统处理对象/数据; * EIF:交互外部系统/数据
-- DET + RET
* EI:系统对象增/删/改; * EO:对象数据处理展示; * EQ:对像数据查询展示
-- DET + FTR

DET必须为外部边界输入或维护的字段;RET/FTR是处理的记录集(单个字段或字段集合)
复杂度

S: simple - A: average, C - complex

****** ILF\\EIF复杂度

RET/DET     1-4      5-15      >15

  1                  S        S         A 
  2-5               S        A         C
  >6                A        C         C

    
****** EI复杂度
FTR/DET     1-4      5-15      >15
  0-1              S        S         A 
  2                 S        A         C
  >2               A        C         C

****** EO/EQ复杂度
FTR/DET     1-5      6-19      >19
  0-1              S        S         A 
  2-3              S        A         C
  >3               A        C         C      

权重功能点/复杂度    S       A       C
   EI                    3       4       6
   EQ                  3       4       6
   EO                  4       5       7
   EIF                  5       7       10
   ILF                  7       10      15
调整因子影响度   无影响    影响小    有一定影响       重要       比较重要      很重要
 DI       0         1          2              3           4            5

VAF(调整因子) = 0.65 + TDI*0.01   ---  DI(影响度值,由系统14项基本特征评估构成)
                                      TDI(总影响程度) = SUM(DI)
1)数据通讯
2)分布式数据处理
3)性能
4)大业务量配置
5)事务处理率
6)在线数据输入
7)最终用户效率(用户界面友好程度)
8)在线更新
9)复杂处理(算法)
10)可复用性
11)易安装性
12)易操作性
13)多场地(多点运行)
14)支持变更(客户化程度)

 参考:https://zhuanlan.zhihu.com/p/96629679

网络

教程

实例

1.数据类型功能点

TypeRETDET复杂度FP
ILF员工4基本信息7  
教育信息3
工作经历4
亲属信息4
 4 18S7
部门1部门信息2  
 1 2S7
EIF工资2员工信息2  
工资信息2
 2 4S5
 7 24 19

2.人机交互事务类型功能点

TypeFTRDET复杂度FP
EI员工添加3员工16  
部门0
工资2
 3 18C6
修改3员工16  
部门0
工资2
 3 18C6
删除3员工16只对员工ID 
部门0
工资2
 3 1A4
部门添加1部门1S3
修改1部门1S3
删除1部门1S3
 12 40 25
1.员工ID/部门ID2个不是由输入产生(系统自动生成),不计为DET
2.员工、部门、工资重复部分不重复计算DET,
EQ员工查询3员工16  
部门2
工资2
 3 20C6
部门查询1部门2  
 1 2S3
 4 22 9
1.系统每个提示信息记为1个DET
2.主外键字段分别记为DET,员工+部门+工资 ??
EO工资统计2员工4  
工资1  
 2 5S4
 2 5 4
1.报表显示信息记为DET
2.报表标题、系统自动生成不计为DET

3. 调整因子 = 0.65+19*0.01 = 0.84
共19项,难易度由个人经验和项目实际共同决定,因此变数较大。

4. 调整FP = (1. + 2.)*0.84 = (19 + (25 + 9 + 4))*0.84 =  57*0.84 = 47.88 

以上是关于项目估算方法的主要内容,如果未能解决你的问题,请参考以下文章

项目估算方法

基于 功能点 估算项目规模 FPA

「软件项目管理」一文详解软件项目成本计划

「软件项目管理」一文详解软件项目成本计划

「软件项目管理」一文详解软件项目成本计划

一个软件项目如何评估工作量和成本?