案例16.1  PSP项目计划总结表更新后每小时缺陷数计算示例

 
 

 

问题提出:
  在设计阶段,学生和工程师一般每小时引入1~3个缺陷;在编码阶段,一般每小时引入5~8个缺陷。在测试阶段,每小时排除2~4个缺陷,而在代码复查阶段,每小时可发现6~12个缺陷。
  
缺陷管理有一点像沿一个下降的自动扶梯向上走。在设计和编码阶段引入缺陷。当发现和排除这些缺陷时,又需要花费更多的时间进行重新设计和重新编码。在这段时间也会引入更多的缺陷。为了赢得这场比赛,就需要减少缺陷引入率,增加缺陷排除率。为了做到这一点,必须计算和跟踪缺陷的引入率和排除率。为了计算个人的缺陷引入率和缺陷排除率,需要使用PSP方法收集必要的数据,现有一更新后的PSP项目计划总结表如表16.2所示,请计算其累计缺陷排除率及其缺陷排除效益?

问题解答: 

16.2  PSP项目计划总结表的示例
学生     学生X            日期    11/28/96    
程序                    程序号#   14      
教师     先生Z            程序设计语言  Ada    
                                               

总结
计 划
实 际
累 计
Minutes/LOC
   5.73   .
   4.65   .
    5.48    .
LOC/Hour
   10.47   .
   12.90   .
    10.95    .
Defects/KLOC
   96.90   .
   77.9   .
    92.53    .
过程效益
33.3.
80.0.
40.0.
A/FR
程序规模(LOC)
新开发的与更改的
   67    .
    77    .
h
    335     .
最大规模
   85    .
最小规模
   49    .
开发阶段时间/min
计 划
实 际
累 计
累计百分比
计划
   23   .
  32  .
  120  .
    6.5   .
设计
   39   .
  44  .
  195  .
    10.6  .
编码
   166  .
  155  .
  792  .
    43.1  .
代码复查
   29   .
  34  .
  145  .
    7.9   .
编译
   24   .
  8   .
  100   .
    5.5   .
测试
   62   .
  39  .
  279  .
    15.2  .
后置处理
   41   .
  46  .
  206  .
    11.2  .
总计
   384  .
  358  .
  1837  .
    100.0  .
最大时间
   487  .
最小时间
   281  .
引入的缺陷
计划
实际
累计
累计百分比
Def./Hour
计划
     .
     .
     .
      .
设计
  1   .
  1   .
  5   .
   16.1  .
   1.54  .
编码
  5   .
  4   .
  25  .
   80.7  .
   1.89  .
代码复查
     .
     .
      .
      .
编译
     .
  1   .
  1   .
   3.2  .
测试
     .
      .
总计
  6   .
  6   .
  31  .
  100.0  .
排除的缺陷
计划
实际
累计
累计百分比
Def./Hour
计划
     .
     .
     .
      .
设计
     .
     .
      .
      .
编码
     .
     .
     .
      .
代码复查
  2   .
  4   .
  12  .
  38.7  .
   4.97  .
编译
  3   .
  1   .
  13  .
  41.9  .
   7.80  .
测试
  1   .
  1   .
  6   .
  19.4  .
   1.29  .
总计
  6   .
  5   .
  31  .
  100.0  .
       .

  由表16.2可知,对每个阶段,从这个阶段的累计引入缺陷和累计花费分钟数开始,然后计算累计每小时引入的缺陷数,其计算公式为:60×(设计阶段累计引入缺陷数)/(设计阶段累计花费分钟数)。在表16.2的示例中,这些计算结果在缺陷引入和缺陷排除两栏的最右列中。计算过程如下:
  对于各阶段累计每小时引入缺陷数
  在设计阶段累计每小时引入缺陷数
  =60×(设计阶段累计引入缺陷数)/(设计阶段累计花费分钟数)
  =60×5/195
  =1.54defects/hour)。

  在编码阶段累计每小时引入缺陷数
  =60×(编码阶段累计引入缺陷数)/(编码阶段累计花费分钟数)
  =60×25/792
  =1.89defects/hour)。

  用同样方法可以计算所有其他阶段的缺陷引入率,但上面这两个是最重要。对于各阶段累计每小时缺陷排除率:
  在代码复查阶段累计每小时排除缺陷数
  =60×(代码复查阶段累计引入缺陷数)/(代码复查阶段累计花费分钟数)
  =60×12/145
  =4.97defects/hour)。

  在编译阶段累计每小时排除缺陷数
  =60×(编译阶段累计引入缺陷数)/(编译阶段累计花费分钟数)
  =60×13/100
  =7.80defects/hour)。

  在测试阶段累计每小时排除缺陷
  =60×(测试阶段累计引入缺陷数)/(测试阶段累计花费分钟数)
  =60×6/279
  =1.29defects/hour)。

  上面只计算了一些累计值。如果需要,可以分别计算计划的和实际的每小时缺陷数。

  当在某一格阶段排除缺陷时,想知道自己在这个阶段发现了多少缺陷,还漏掉多少缺陷,过程的历史数据可以给你很好的参考。方法就是计算和跟踪缺陷排除效益。在PSP中,我们定义缺陷排除效益是在第一次编译和测试前发现缺陷的百分比。
  对计划的、实际的和累计的过程效益的计算结果显示在项目计划总结表中上部的总结一栏中,参考表16.2。例如,计划阶段的过程效益值的计算如下:
  编译前计划的引入缺陷数是1+5=6

  编译前计划的排除缺陷数是2

  这样,计划的过程效益值的计划如下:

过程效益    =100×(编译前计划的排除缺陷数)/(编译前计划的引入缺陷数)

            =100×2/1+5

            =100×2/6

            =33.3%

  实际的过程效益值的计算如下: 

过程效益    =100×(编译前实际的排除缺陷数)/(编译前实际的引入缺陷数)

            =100×4/1+4

            =100×4/5

            =80.0%

  对于累计值:

过程效益    =100×(编译前累计的排除缺陷数)/(编译前累计的引入缺陷数)

            =100×12/5+25

            =100×12/30

            =40.0% 

  在编译阶段引入一个缺陷。由于过程效益的计算只关心编译前的缺陷排除率,所以只考虑在编译前引入的和排除的缺陷。在编译或测试阶段引入的任何缺陷都不在代码复查阶段的程序中,因为不包括在缺陷排除效益的计算中。