一、SQC 概念和方法
什么是质量控制
- 那些提供一种方法来控制和测量项目、过程或设施的特性以满足既定要求的质量保证措施
- 维持产品或服务质量以满足特定需求的操作技术和活动; 以及此类技术和活动的使用
- 质量控制活动以工作产品为导向
- 他们测量产品,识别缺陷并提出改进建议
- 这些活动的直接结果是产品的变化
- 这些范围可以从单行代码更改到完全重新设计产品
- 他们评估产品,找出弱点并提出改进建议
- 测试和审查是 QC 活动的例子,因为它们通常会导致对产品的更改,而不是过程
- QC 活动通常是质量保证 (QA) 活动的起点
基本方法
目标问题度量方法(Goal-Question-Metric/GQM)
- 目标-问题-度量 (GQM) 方法最初由 V. Basili 和 D. Weiss 开发,然后由 D. Rombach 进行了显著扩展
- GQM 旨在制定与不同业务衡量指标(如客户满意度、质量、财务进度、技术绩效等)相关的一组公司、部门和项目目标
- GQM 方法是一种系统化的方法,可以将组织的目标剪裁并整合到度量目标中,并将其细化为可度量的值
- 它有助于系统地推导测量计划
GQM 流程
- 为生产力和质量制定一套公司、部门和项目目标,例如客户满意度、提高质量
- 以可量化的方式生成尽可能完整地定义这些目标的问题
- 指定需要收集的措施来回答这些问题并跟踪过程和产品与目标的一致性
- 建立数据收集机制
- 实时收集、验证和分析数据,为项目提供纠正措施的反馈(改进措施),并以事后剖析(事后剖析)的方式分析数据,以评估是否符合目标并为未来的改进提出建议。

实施 GQM 的优势
- 它支持项目计划和控制
- 它用于确定优势和劣势
- 它为采用和改进各种软件工程技术或方法提供了基本原理
- 它允许评估技术和方法变化的影响
- 它支持对软件过程和产品的评估
目标具有五个属性被确定:
- 感兴趣的对象是什么
- 研究感兴趣的对象的目的是什么
- 关于感兴趣对象的特征的重点是什么
- 目标支持谁的观点
- 在何种语境或环境中作为研究对象
经验法则
- 平均故障密度为每千行源代码 1.9 个
- 管理功能的故障密度是分配功能的故障密度的三倍。
- 控制台功能的故障密度是分配功能故障密度的两倍
- 纠正分配软件故障所需的平均工作量是纠正管理功能故障所需工作量的五倍
二、SQC 模型和技术
风险管理方法(Risk management approach / RM)
风险定义
- 不确定性对目标的影响 (ISO)
- 不幸发生的可能性
- 实现事件的不想要的负面后果的可能性
- 暴露于一个不确定的命题(例如发生损失)
- 活动的后果和相关的不确定性
- 与人类重视的事物相关的活动后果的不确定性和严重性
- 活动的某些特定后果的发生和相关的不确定性
- 与参考值的偏差和相关的不确定性
为什么使用各种风险指标
- 描述或衡量风险
- 判断风险的大小
风险指标/描述(示例)
- 后果的概率和幅度/严重性的组合
- 损坏的可能性分布(例如三角形可能性分布)
风险管理的两个关键组成部分
- 风险评估是识别软件风险来源、分析或评估其潜在影响并对其进行优先排序的发现过程
- 风险控制是制定软件风险解决计划、监控风险状态、实施风险解决计划并纠正与计划的偏差的过程
风险评估的不确定性
- 不确定性是风险概念化和风险评估的关键概念
- 概率分析是处理风险分析中涉及的不确定性的主要方法,包括偶然的(代表变异)和认识的(由于缺乏知识)
PDCA质量控制方法
定义
- PDCA 循环,也称为戴明循环或戴明轮
- PDCA循环是一个持续改进的过程,由四部分组成:– 计划、执行、检查和行动
- PDCA 循环是由 W. Edwards Deming 博士于 1950 年应邀在日本发表演讲时提出的
- PDCA是提高产品质量的重要原则
- PDCA是一种精细化企业管理和企业运营的基本方法
- 它也是IT项目管理中各种迭代和螺旋过程模型的基础

PDCA循环是一个由四个部分组成的持续改进过程
plan
计划是指根据既定要求建立交付结果所需的目标和过程。 在这个阶段,您需要规划整个 PDCA 过程。
do
做意味着实施计划的过程,在受控情况下采取小步骤。
check
实施计划的过程后,应对结果进行研究。 需要根据目标和具体要求对过程和结果进行监控和评估,并且需要报告结果。
act
在检查步骤之后,必须根据上一步中研究的内容采取行动以达到必要的改进
Total Statistical Quality Control(全面统计质量控制)Model based on PDCA

-
质量控制模型中的参数不是孤立的,而是具有相关性。
-
在质量控制中需要对这些参数进行综合调节、平衡。
-
参数
- 产品:所有可交付物
- 过程:所有活动的集合
- 资源:活动的物质基础(人力、技术、设备、时间、资金等)
三、软件质量保证
什么是质量保证
- 质量保证活动以工作过程为导向
- 他们衡量流程,识别缺陷并提出改进建议
- 这些活动的直接结果是过程的改变
- 这些变化的范围可以从更好地遵守流程到全新的流程
- 质量控制活动的输出通常是质量保证活动的输入
- 审核(审核)是 QA 活动的一个示例,它查看是否以及如何遵循该过程。 最终结果可能是建议改进或更好地遵守流程
- 为使项目或项目符合既定技术要求提供足够的信心所必需的所有行动的计划和系统模式。
软件质量保证涉及
- 审查和审计软件产品和活动,以验证它们是否符合适用的程序和标准
- 向经理和软件项目团队成员提供这些审查和审计的结果
为什么关心软件质量保证
- 法律责任
- 成本效益
- 客户要求
软件质量保证 (SQA)
-
包括一种监视软件工程过程和方法的手段,用于确保质量
-
它通过对创建软件系统的质量管理体系进行审核来实现这一点
-
这些审核由一个或多个标准支持,通常是 ISO 9000 或 CMMI
从难度和时间限制来看,几乎不可能在发布之前消除每个错误。
SQA方法
PPQA审核
- 工艺和产品质量保证
- 是确保过程和工作产品符合商定的过程的活动
SQA活动
- 验证和确认
- 测试
- 审查
- 审计
- 检查
SQA的作用
- 在工厂所有软件项目的过程中,从长远的角度寻找更好的方法
- 教育所有参与开发产品的人员以更好的方式实施
SQA的优势
- 提高客户满意度
- 降低开发成本
- 降低维护成本
质量成本
- COQ = COF + ( COA + COP )
- 预防:为防止或避免错误而发生的成本
- 评估:试图检测错误所产生的成本
- 失败:由于其他尝试不成功而产生的成本


实施过程改进计划的成本可以通过减少 COQ 所节省的资金来支付

四、软件质量标准
为什么软件标准很重要
- 封装最佳(或最合适)实践
- 经过多次尝试和错误后获得
- 有助于避免以前的错误
- 提供一个框架来实施 SQA 流程
- 确保正确遵循最佳实践
- 协助确保项目工作的连续性
- 减少开始新工作时的学习努力
每个项目都需要决定哪些标准应该被忽略、按原样使用、修改、创建
软件质量标准水平

Commonly used software quality standards
-
– ISO 9001/ 9000-3
-
CMM
-
CMMI
-
IEEE Software engineering standards
-
ISO/IEC TR 15504
-
ISO: International Organization for Standards国际标准化组织
-
CMM: Capability Maturity Model for Software能力成熟度模型
-
CMMI: Capability Maturity Model Integration能力成熟度模型集成
-
IEC: International Electro technical Commission国际电工委员会
-
TR: Technique Report 技术报告
CMM
- CMM 是由美国国防部软件工程研究所开发的
- CMM 的目标:改进现有的软件开发流程
- CMM 的五个成熟度级别
- 最初的
- 可重复
- 已定义
- 管理
- 优化
CMM模型的主要缺点
- 当组织使用 CMM 时,他们将每个级别视为一个目标,他们将目标定为达到下一个级别,这可能是一个危险的想法,因为如果您专注于达到下一个级别,您可能会忘记真正的目标,即改进流程
- CMM 没有指定实现这些目标的特定方法
- CMM 认为只有在软件开发过程的早期应用它才有帮助,也就是说,如果有一个过程处于危机中,它不能作为从困境中恢复过来的应急方法
- CMM 关注管理相关活动的改进,而不重视与过程相关的活动
CMMI
- CMMI 是一个过程模型,它明确定义了组织应该做什么来促进行为,从而提高绩效并允许整合不同的组织功能
- CMMI 是通过组合 CMM 模型(SW-CMM V2.0、集成产品开发 (IPD) 和系统工程 CMM (SE-CMM))创建的
- CMMI 由五个成熟度级别定义为
- 初始化
- 可重复
- 已定义
- 质量管理
- 优化

CMMI的缺点
- 可能并不适合每个组织
- 它可能会增加文档方面的开销
- 可能需要小型组织所需的额外资源和知识来启动基于 CMMI 的过程改进
- 可能需要大量的时间和精力来实施
- 需要组织文化和态度的重大转变