七种场景下的软件工作量估算步骤

来源:互联网 发布:ubuntu 自带虚拟机 编辑:程序博客网 时间:2024/05/20 04:50

七种场景下的软件工作量估算步骤

发布: 2009-5-18 10:21 | 作者: 不详 | 来源: 测试时代采编 | 查看: 363次 | 进入软件测试论坛讨论

场景一:合同前的工作量估算
场景描述:
(1)没有实施过CMMI2级
(2)合同未签,需要给客户报价
(3)有客户的概要需求,有类似的项目数据可供参考
(4)需要估计整个项目的总工作量,以便于估算总成本,给客户报价

估算步骤:
(1)寻找类似的历史项目,进行项目的类比分析,根据历史项目的工作量凭经验估计本项目的总工作量;
(2)进行WBS分解,力所能及地将整个项目的任务进行分解;
(3)参考类似项目的数据,采用经验法估计WBS中每类活动的工作量;
(4)汇总得到项目的总工作量;
(5)与第(1)步的结果进行印证分析,根据分析结果,确定估计结果。

场景二:基于详细需求的经验估计
场景描述:
(1)只有详细需求,没有历史数据
估算步骤:
(1)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
(2)采用经验法估计每个活动的工作量;
(3)汇总得到:每个阶段的工作量、项目的总工作量。
其他说明:
在该场景下,只使用了经验法,无法对结果进行印证,难以判断结果的合理性。

场景三:由编码估算整体
场景描述:
(1)有类似项目的历史数据
(2)有编码活动的生产率数据
(3)有详细需求
(4)实施了CMMI2级,但是没有积累历史项目的工作量分布数据
估算步骤:
(1)产品分解,将系统分为子系统,子系统分解为模块;
(2)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
(3)建立WBS分解中的活动与产品元素的映射关系,识别出WBS中哪些活动可以采用模型法估算;
(4)估计产品元素的规模,可以采用代码行法或功能点法,并估计每个产品元素的复杂度、复用率等;
(5)根据历史的编码阶段的生产率数据和产品元素的规模估计、复杂度、复用率等采用模型法计算每个产品元素的编码工作量;
(6)根据历史的类似项目的数据及估算人的经验估计其他活动的工作量,可以采用经验法。
(7)汇总得到:每个阶段的工作量、项目的总工作量。
其他说明:
在该场景下,混合使用了经验法与模型法,这2种方法互相补充,而不是互相印证。

场景四:由总体印证基于WBS的估计
场景描述:
(1)有类似项目的历史数据
(2) 有类似项目的全生命周期的生产率数据(含管理工作量)
(3)有详细需求
(4)实施了CMMI2级,但是没有积累历史项目的工作量分布数据
估算步骤:
(1)产品分解,将系统分为子系统,子系统分解为模块;
(2)估计产品元素的规模,可以采用代码行法或功能点法;
(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;
(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;
(5)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
(6)根据历史的类似项目的数据及估算人的经验估计所有活动的工作量,可以采用经验法。
(7)汇总得到:每个阶段的工作量、项目的总工作量。
(8)与第(4)步得出的工作量进行比较印证,如果偏差不大,则以第(7)步的结果为准,如果偏差比较大,要仔细分析原因,可能的原因举例如下:
类似项目的生产率数据不适合本项目;
WBS分解的颗粒度不够详细;
估算专家的经验不适合本项目;
具体任务的估计不合理;
针对原因,对估算的结果进行调整,使其趋向合理。
其他说明:
在该场景下,对于项目的总工作量有2个结果或者多个结果,这些结果可以互相印证,以发现估算过程中的不合理之处,是估计更加合理。

场景五:三维印证基于WBS的估计
场景描述:
(1)有类似项目的历史数据
(2) 有类似项目的全生命周期的生产率数据(含管理工作量)
(3)有详细需求
(4)实施了CMMI3级,有历史项目的工作量分布数据(阶段分布、工种分布)
估算步骤:
(1)产品分解,将系统分为子系统,子系统分解为模块;
(2)估计产品元素的规模,可以采用代码行法或功能点法;
(3)累计出整个产品的总规模,并估计产品总体的复杂度、复用率等;
(4)根据类似项目的全生命周期的生产率数据和产品的总规模、复杂度、复用率等采用模型法计算总的开发工作量;
(5)根据历史项目的工作量分布数据及第(4)步估算的项目总工作量,计算:
? 每个阶段的工作量
? 每个工种的工作量
(6)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
(7)根据历史的类似项目的数据及估算人的经验估计所有活动的工作量,可以采用经验法。
(8)汇总得到:每个阶段的工作量、每个工种的工作量、项目的总工作量。
(9)与第(4)、(5)步得出的工作量进行比较印证,如果偏差不大,则以第(7)步的结果为准,如果偏差比较大,要仔细分析原因,可能的原因举例如下:
 类似项目的生产率数据不适合本项目;
 WBS分解的颗粒度不够详细;
 估算专家的经验不适合本项目;
 具体任务的估计不合理;
针对原因,对估算的结果进行调整,使其趋向合理。
其他说明:
在该场景下,对于项目的总工作量有2个结果或者多个结果,并且采用2种方法都得到了每个阶段、每个工种的工作量、项目的总工作量,可以从上述的3个维度对这些结果进行互相印证,以发现估算过程中的不合理之处,是估计更加合理。

场景六:四维印证基于WBS的估计
场景描述:
(1)有类似项目的历史数据
(2) 有类似项目的编码活动的生产率数据(不含管理工作量)
(3)有详细需求
(4)实施了CMMI3级,有历史项目的工作量分布数据(阶段分布、工种分布、阶段工种分布)
(5)项目采用了瀑布模型
估算步骤:
(1)产品分解,将系统分为子系统,子系统分解为模块;
(2)估计产品元素的规模,可以采用代码行法或功能点法,并估计每个产品元素的复杂度、复用率等;
(3)根据类似项目的编码活动的生产率数据和产品元素的规模、复杂度、复用率等采用模型法计算每个产品元素的编码工作量;
(4)根据历史项目的按工种的工作量分布数据及第(3)步的估算的编码工作量依次计算:
i)根据历史项目的编码的工作量占编码阶段的工作量的百分比与第(3)部计算出的编码工作量计算编码阶段的总工作量;
ii)根据历史项目的编码阶段各工种的工作量分布百分比计算编码阶段每个工种的工作量;
iii)根据历史项目的其他阶段的工作量与编码阶段的工作量比例计算其他阶段的总工作量;
iv)根据历史项目的其他阶段的每个工种的工作量分布百分比及第iii)步的结果计算其他阶段的每个工种的工作量;
(5)WBS分解,将任务分解到一个人或者一个小团队可以执行的颗粒度;WBS分解时要识别出所有的交付物、项目管理活动、工程活动等。
(6)根据历史的类似项目的数据及估算人的经验估计所有活动的工作量,可以采用经验法。
(7)汇总得到:每个阶段每个工种的工作量、每个阶段的工作量、每个工种的工作量、项目的总工作量。
(8)与第(4)步得出的工作量进行比较印证,如果偏差不大,则以第(6)步的结果为准,如果偏差比较大,要仔细分析原因,可能的原因举例如下:
 类似项目的生产率数据不适合本项目;
 WBS分解的颗粒度不够详细;
 估算专家的经验不适合本项目;
 具体任务的估计不合理;
针对原因,对估算的结果进行调整,使其趋向合理。
其他说明:
在该场景下,对于项目的总工作量有2个结果或者多个结果,并且采用2种方法都得到了每个阶段的工作量、每个工种的工作量、每个阶段每个工种的工作量、项目的总工作量,可以从上述的4个维度对这些结果进行互相印证,以发现估算过程中的不合理之处,是估计更加合理。

场景七:需求变更的工作量估计
场景描述:
(1)有变更的需求描述
(2)项目进行到了编码阶段
(3)有本项目的编码的生产率
估算步骤:
(1)进行需求变更的波及范围分析
(2)进行本次变更的的WBS分解
(3)对于变更引起的代码变化进行规模、复杂度等其他属性的估计
(4)根据本项目的编码的生产率及估计的规模采用模型法估计工作量
(5)对于WBS分解中其他活动进行经验估计
(6)汇总所有的工作量得到本次变更的工作量估计

运用UseCase估算工时

发布: 2008-10-07 09:48 | 作者: 不详 | 来源: 测试时代采编 | 查看: 558次 | 进入软件测试论坛讨论

关键字:UseCase 工时

摘要:本文介绍了通过UseCase估算项目工时的方法并给出其计算细节,同时还指出该方法存在的问题和不足。 

关键词:UUCP,技术因素,环境因素 

  

运用UseCase估算项目工时,首先是Gustav Karner本人在其出版的书籍《Applying Use Cases》中提出的。该方法通过利用项目初期产生的UseCase以及分析技术的复杂性和环境的复杂度对项目的工程量进行估算。但是给出的计算细节过于笼统,甚至很多因数亦未提及。因此在实际运用中,有着显著的误差。笔者根据自身的项目实践,参照《Applying Use Cases》中提供的原则,给出采用该方法考虑的要点和具体改进的计算细节,与诸位读者共享。 

UseCase法估算项目工程量的步骤如下: 

1 生成UseCase 

2 Actor权重的计算 

3 UseCase权重的计算 

4 UUCP计算(UUCP:unadjusted Use Case Point) 

5 技术因素权重的计算 

6 环境因素权重的计算 

7 UCP(Use Case Point)的计算 

8 工时计算 

     

下面对其进行一一的讲解。 

(1)      生成UseCase 

将UseCase图进行细化。使得每一个Actor对应且只对应一个UseCase。存在“extend”和“uses”情况时,由于派生或引用的UseCase与外部Actor不发生直接联系,不计入计算式。 

  

(2)      Actor的权重 

按照UseCase与Actor一对一的原则,根据Actor与UseCase交互时接口的类型,分别给出每个Actor的权重,然后进行合计,得出整个项目Actor的权重值①。具体参考如下: 

Actor权重参考表

接口类型

Actor权重

类DOS型界面

0.8

简单的对话型界面

1.6

复杂的对话型界面

2.3

简单的GUI界面

2.4

复杂的GUI界面

3.0

Actor的权重合计表

Actor

Actor权重

理由

 

 

 

 

 

 

 

 

 

合计

 

 

   
  


  

(3)      UseCase权重的计算 

这里指的 UseCase仍是指与Actor直接交互且存在一对一关系的UseCase。根据UseCase包含的事务数(Transaction)与分析类的数目,给出UseCase的权重。然后将所有UseCase的权重相加得出整个项目UseCase的权重总和②。 

UseCase权重参考表

类型

意义

权重(系数)

简单型

3个以下事务/4个以下分析类

4~7

平均型

4至7个事务/5至10个分析类

8~12

复杂型

8个以上事务/11个以上分析类

13~17