概念

质量管理挑战:三要素

面向用户的质量观、质量策略、质量路径

面向用户的质量观

该质量观定义质量为满足用户需求的程度,需要明确:

  • 用户是谁?
  • 用户需求的优先级?
  • 这种优先级对软件产品的开发过程有什么影响?
  • 怎么度量该质量观下的质量水平?

典型的用户质量期望:

  • 产品能工作
  • 执行快
  • 安全可靠,兼容性好,可用易用

质量管理策略和背后逻辑

  • 先保证基本没有缺陷,再考虑其他质量目标

  • 用缺陷管理来替代质量管理

  • 高质量产品即意味着软件产品的各个组件基本无缺陷

不同缺陷消除方式消除缺陷的效率:

测试消除缺陷的典型流程:

  1. 发现异常
  2. 理解程序工作方式
  3. 调试程序找出出错原因
  4. 修改缺陷
  5. 测试验证修改是否有效

评审消除缺陷典型流程:

  1. 按评审者的逻辑来理解程序
  2. 发现缺陷
  3. 修正缺陷

评审

个人评审

关键控制因素

打印后评审效果更好:

  • 评审复杂系统时,单个屏幕上的信息不全
  • 评审人员的注意力:屏幕容易分散

时机选择

编译前or编译后

后:

  • 编译器可以帮助发现更多错误
  • 再nb的评审也会遗漏20%~50%的语法错误
  • 即视编译器仍然遗漏了一些错误,单元测试可以兜底

前:

  • 不管评审前有没有编译,评审的速度是一定的不会变;而如果先评审,编译时就可以避免许多错误,节省编译时间
  • 编译器总会遗漏大概9%的错误,可以期望评审消除这些缺陷
  • 编译时遇到的错误越多往往意味着测试时遇到更多的错误
  • 一发过编译会使开发人员有成就感

小组评审

个人评审1 → 小组评审

小组评审的意义:

  1. 有利于更好地发现缺陷预防风险
  2. 个人之后安排小组评审,也有利于提高个人技能

过程质量控制方式

PSP?TSP?评审?

质量控制指标(考虑特点和用途)

Yield

Yield指标用于度量每个阶段在消除缺陷方面的效率

Phase Yield = 100 * (某阶段发现的缺陷个数)/(某阶段注入的缺陷个数+进入该阶段前遗留的缺陷个数)

Process Yield = 100 * (第一次编译前发现的缺陷个数)/(第一次编译前注入的缺陷个数)

答案:

6.90
22.2
2.41
33.3
50

A/FR

  • PSP中定义的失效成本为编译时间和单元测试时间之和。
  • PSP中定义的质检成本为设计评审时间与代码评审时间之和。

A/FR = PSP质检成本 / PSP失效成本

理论上,A/FR越大质量越高;但是过高的AFR意味着做了更多评审,会导致开发效率下降;因此期望值是2.0

PQI

5个指标的乘积:

  • 设计质量:设计的时间应该大于编码的时间
  • 设计评审质量:设计评审的时间应该大于设计时间的50%
  • 代码评审质量:代码评审时间应该大于编码时间的50%
  • 代码质量:代码的编译缺陷密度应当小于10个/千行
  • 程序质量:代码单元测试缺陷密度应当小于5个/千行

有一个做的不到位,直接给PQI干成0了

PQI和交付后缺陷密度关系:

与集成时缺陷关系:

RR(Review Rate)

评审速度,因为高质量的评审需要投入足够多时间,所以不能太快

在PSP的实践中,代码评审速度小于200 LOC/小时,文档评审速度小于4 Page/小时

DRL

缺陷消除效率比,度量的是不同手段消除缺陷的效率。

计算方式是以某个测试阶段(一般是单元测试)每小时发现的缺陷数为基础,其他阶段每小时发现缺陷数和该基准阶段发现数量的比值

示例:

Quality Journey(质量路径)

  1. 第一步:各种测试
  2. 第二步:进入测试之前的产物质量提升
  3. 第三步:评审过程度量和稳定
  4. 第四步:质量意识和主人翁态度
  5. 第五步:个体 review 的度量和稳定
  6. 第六步:诉诸设计
  7. 第七步:缺陷预防
  8. 第八步:用户质量关 —— 其他质量属性

思考:Quality Journey体现了什么质量管理哲学