技术 > 软件过程能力度量
  the measurement of the software procedure capability
  1、 引言
  sei cmm等级4描述了两个关键过程域(kpa):定量过程管理和软件质量管理。其中前者针对的是软件过程的执行,而后者针对的是软件产品的质量。本文主要讨论过程执行程度如何被度量,以及如何通过度量过程执行程度来提高软件产品的质量。
  文章中还给出了cpk指数及其使用的简短描述,并通过几个具体案例分析了针对所选定的度量标准,如何使用cpk指数对项目定义软件过程进行度量和分析。
  “要想获得透彻的了解,必须首先进行精确的度量。”
  2、 缩写
  cmm
  capability maturity model(能力成熟度模型)
  ipf in process faults(过程缺陷)
  kpa key process area(关键过程域)
  ll lower limit(下限)
  sei software engineering institute(软件工程研究所)
  spc statistic process control(统计过程控制)
  sqa software quality assurance(软件质量保证)
  ul upper limit(上限)
  3、 分析中所使用的和所度量的度量标准
  ipf密集度是一种度量标准,可以用来判定过程产品的质量以及检测过程的执行程度。
  ipf密集度可以表示如下:
  其中缺陷数目是指每次检测所发现的缺陷数目;工作产品大小是指每次检测的代码页数或行数。
  4、 过程能力分析
  进行过程能力分析,实质上就是通过系统地分析和研究来评定过程能力与指定需求的一致性。在我们所举的案例中,指定需求就是所建立的软件度量基线。
  之所以要进行过程能力分析,有两个主要原因。首先,我们需要知道过程度量所能够提供的基线在数量上的受控性;其次,由于我们的度量计划还相当“不成熟”,因此需要对过程度量基线进行评估,来决定是否对其进行改动以反映过程能力的改进情况。根据过程能力的数量指标,我们可以相应地放宽或缩小基线的控制条件。
  5、 建立和使用基线
  5.1相对于均值的标准偏差
  由于软件的过程能力度量技术还处于“初步探索”阶段,传统的做法仍然是通过建立标准偏差的上限和下限来设置基线。当发现超出上限或下限的度量值及其产生原因时,就可以有系统地将其去除,并在必要的情况下采取一些改进措施。
  整个过程可以总结如下:
  (1) 收集关于度量的所有可用数据
  (2) 建立均值(即所有数据点的平均值)
  (3) 建立上限(均值+标准偏差)
  (4) 建立下限(均值-标准偏差)
  (5) 删除超出上下限的数据值
  (6) 找出删除原因并文档化
  5.2比较产品度量与基线
  在项目开发过程中可以使用所建立的基线。通过将项目度量值与基线进行比较,可以找出哪些度量指标高于上限、哪些低于下限以及哪些处在控制条件之内。
  这种做法一般是可以接受的,因为这提供了对过程进行评估的一种公正的方法。但是使用这种方法并不能从数量上给出过程执行程度的度量。特别是,我们可能需要得出某个特定过程执行的σ级别。例如,我们需要通过数量化的方式比较在相同或者不同的项目中检测过程的执行程度。最后可能需要以下面这种方式给出比较结果:需求检测过程执行程度为5.3σ,而代码检测过程的执行程度为3σ。然后就可以根据这种数量化的结果来判定检测过程想对于当前的过程能力等级的执行程度如何。
  5.3过程能力度量
  参照组织当前的实际开发过程,我们可以通过使用cpk指数进行过程能力度量来评定实际过程与基线的目标均值的接近程度以及过程变更的数量。
  要度量组织的过程能力,首先需要有如下信息:
  1) 指定界限(即上限和下限)
  2) 指定宽度(可根据指定界限得出)
  3) 过程界限(通过过程度量所得出的上限和下限)
  4) 过程宽度(可根据过程界限得出)
  5.4设定基线的指定界限
  在控制表中,可以使用相对于均值的1σ标准偏差来设定界限。但是在过程能力度量中,如果也使用1σ标准偏差来设定规范界限,将会大大限制过程范围而产生很多界外值。在正态曲线中,均值± 1s只能给出68%的覆盖程度,而使用均值± 3s则可以界定正态曲线中99%的覆盖程度。
  图1 使用m±1s界定的需求文档缺陷密集度
  在过程能力度量中,我们可以使用相对于均值的3s标准偏差来确定指定界限。
  图2使用m±3s界定的需求文档缺陷密集度
  可以使用柱状图来描述实际过程输出与正态分布曲线的相似性。柱状图能够比较直观地展示度量数值集合。我们可以使用microsoft excel中的analysis toolpak工具绘制柱状图。根据大多数统计方法参考书的建议,在绘制的柱状图中所采用的柱形条不能少于6个,但也不能多于15个。在excel工具中可以设定这一条件。这样做可以或多或少地避免在定义柱形条间隔距离时的个人偏见。
  图3 使用excel analysis toolpak工具所绘制的需求文档缺陷密集度的柱形图
  6、 使用cpk指数度量过程能力
  在使用cpk指数进行过程能力度量时,我们将相对于均值的3s标准偏差改为传统做法中的1s标准偏差。基线的上限和下限控制条件也根据1s标准偏差来建立。下面我们通过几个案例来分析如何开展对检测过程的度量。
  6.1cpk目标
  本文对于cpk和cp指数的导出不作详细讨论,但我们将介绍一下cpk和cp指数能够反映过程能力的哪些情况。cp指数反映的是当指定的规范或基线与实际过程相同时过程所具有的潜在能力,而cpk指数则反映了在综合考虑过程的潜在cp和不同的均值之后所具有的实际过程能力。
  下表列出了与不同的cp值相当的s值。
  下表展示了针对不同k值的一种定级标准,该标准由fon k.c.(参考文献)所建立,并在measuring process capability(参考文献)一文中进行了描述。
  有了上面两个表格,cpk和cp以及k指数中的每个过程参数都可以独立进行分析。我们可以通过分析k指数来决定某项工作是否应该做为核心工作来开展,也可以通过集中分析cp指数来决定是否应该减少对过程的变更。
  较大的1-k值(即较小的k值)和较大的cp指数是比较受欢迎的,因为这样两者的乘积可以得出比较大的cpk指数。
  cpk指数具有davis r. bothe(参考文献)所描述的如下各种定级结果:
  cpk<1表示过程没有达到执行能力的最低标准
  cpk =1表示过程恰好达到最低要求
  cpk >1表示过程超过了预定的最低标准
  7、 对缺陷密集度的cpk分析
  我们给出了几个项目在不同过程阶段的缺陷密集度的度量,并使用cpk指数对其进行分析来评定其过程能力,同时与所设定的基线指定界限进行比较。
  分析的结果总结如下:
  根据上面的分析结果,我们可以定量化识别过程的3个重要方面。
  7.1案例1:项目a-需求
  项目a在检测过程中搜集到的需求缺陷密集度得出的cpk指数为1.52。这表明该过程的执行达到并超过了预定的最低标准,也就是缺陷密集度基线。
  此外,所显示的k值为0.22表明“精确性定级”为良好。这表示过程的均值与指定均值的目标相差不大。
  cp值表明过程的变更非常接近6σ。较大的cp值表示通过指定宽度和过程宽度比较可知,过程的变更不大。
  7.2案例2:项目b-需求
  项目b的cpk指数值为0.75。很显然,这表明过程没有达到执行能力的最低标准。
  同样较小的k值再次表明精确性定级非常好。过程均值非常接近于指定均值。因此,必定有其他因素影响了cpk指数的值。
  cp的值为0.86是导致cpk指数值比较低的原因。参照cp与σ的对应列表可知,0.86的cp值明显要低于3σ。要想获得6σ的过程执行,就必须提高cp值。
  从分析可知,过程宽度实际上要大于指定宽度。进一步分析可以发现,项目b是一个新的项目平台,软件开发小组对该项目是完全陌生的。因此过程的变更性比一般的正态分布要大。过程能力值cpk表明该项目的开发过程相对于一般的软件开发项目具有较大的变异性。
  7.3案例3:项目c-设计
  项目c的cpk指数值为1.23。这表明过程超过了最低执行标准。
  k值为0.008表明过程均值与指定均值之间几乎是没有差别的。
  cp的值为1.23表明其σ等价值为小于4σ。该案例中产生过程变更的一个原因可能在于项目采样数目较少。在该案例中只有4个数据点。尽管如此,项目的过程能力还是可以接受的。
  7.4案例4:项目b-设计
  项目b的cpk指数值高达2.49。k值为0.32表明精确性定级仅为“一般”。cp的值则高达3.68。
  在对项目b这一分析中故意只采用少数几个数据点作为样本,其目的是为了说明在度量过程能力时数据点的抽样是非常重要的。
  作为首选规则,在度量过程能力中如果要删除某些界外值,需要搜集所有相关的数据点和极端的实践情况进行分析。因为错误的删除有可能会给出错误的过程能力度量结果。
  8、 知识等级
  如同john frei(参考文献)所述,过程描述中的知识定级有如下几种:
  (1) 没有数据——经验
  (2) 收集的数据——数据的数量
  (3) 分组后的数据——表格、图形
  (4) 描述性统计——均值,标准偏差
  (5) 特征化统计——cpk指数和cp指数
  (6) 受控的统计——spc图表
  (7) 推论性统计——anova,衰退,doe
  9、 结束语
  在软件开发小组中搜集度量数据曾经耗费了我们很长的时间,并且在最初搜集的度量数据中,有一些是从来都没有用到过的。通过多年的研究,我们积累了许多使用所搜集到的度量数据的经验,从简单地参考度量数据的数目,到将数据绘制成图表,再到从数据中计算出均值和标准偏差以及绘制出spc图表。使用过程能力度量中的cpk指数来特征化描述过程的执行程度,为我们提供了另一个角度的统计过程控制方法。通过分析cpk指数,我们可以断定过程在多大程度上受到定量化的控制和管理。同样,根据cpk指数和cp指数,我们还可以决定基线的均值和(或)控制条件是否需要进行修改,以反映过程能力的改进。
  10、参考文献
   fon, k. c., control charts, 1980, chinese society for quality control, taipei, taiwan.
   davis r. bothe, measuring process capability, mcgraw-hill, 1997.
   john frei, process characterization, spc training material, xxx radio products americas group.