1.9 - 过程质量标准模型
¶一、CMM 模型
CMM 标准模型全称为 “能力成熟度模型” (Capability Maturity Model),是对软件组织在定义、实施、度量、控制和改善其软件的过程中各个发展阶段的描述。CMM 模型将开发视为一个过程,并对过程进行监控与研究,以实现科学化、标准化的最终目标。
CMM 的作用:可以用于科学的评价某个组织的软件开发能力等级,帮助软件开发组织进行自检与强弱项的了解,从而不断改进其软件开发过程,以便达到 “确保软件质量” 与 “提高软件开发效率” 的目的。
CMM 的意义:是迄今为止学术界与工业界公认的关于软件工程与管理实践 “很好的标准模型”。CMM 为评估软件开发组织的生产能力提供了标准,为提高软件开发组织的生产过程指明了方向。
CMM 的五级模型:
- 优化级 (Optimizing) -> [最高]
- 管理级 (Managed)
- 定义级 (Defined)
- 可重复级 (Repeatable)
- 初始级 (Intial) -> [最低]
¶1️⃣ 初始级 (Intial)
软件开发过程没有秩序(或者混乱),没有章法或步骤可循。组织缺乏管理能力,开发过程不可预测,难以重复。类似于 “大棒开发法”,开发的软件能否取得成功主要依赖个别开发者的个人能力与组织机遇。
¶2️⃣ 可重复级 (Repeatable)
软件开发组织已经建立了基本的项目管理过程,用于对开发成本、进度和功能特性进行跟踪。在开发新的软件项目时,组织可以直接按照既定的开发过程进行重复操作,有章可循。
¶3️⃣ 定义级 (Defined)
软件开发组织已经将软件开发与管理的过程实现了文档化、标准化,形成了适用于组织的标准软件过程。组织的所有项目均可以直接使用对应实际情况、适度进行修改的标准软件过程进行开发。如果某个软件开发组织已经达成了 “定义级”,则可以认定此组织已经具备了较为成熟的软件开发能力。
¶4️⃣ 管理级 (Managed)
软件开发组织已经对软件的开发过程与产品质量制定了相应的度量方式,同时也制定了明确的度量指标。达成此级别的软件开发组织在开发软件时,开发过程可以得到定量的认证和控制。
¶5️⃣ 优化级 (Optimizing)
CMM 模型的最高等级,此时软件开发组织已经具备了非常成熟的软件开发能力。组织只需对来源于当前开发过程、新概念、新技术等方面的有用信息进行定量分析,持续不断的对开发过程进行改进与优化即可。
¶二、ISO 9000 标准
ISO 全称为 International Organization for Standardization (国际标准化组织)。ISO 9000 是 TC176 制定的关于质量管理与评价的一系列国际标准,它定义了一套基本达标的方法,可以用来帮助组织交付符合客户质量要求的产品。ISO 9000 并不是单独的某个标准,而是一族标准的统称,针对软件质量评估的部分分别为 ISO 9000-3 与 ISO 9001。
ISO 9000 标准可以帮助组织解决以下的问题:
- 开发者代码风格不一致
- 组织中各部门间缺少沟通
- 组织中没有合适的测试团队
- 产品新旧版本混乱
- 错误或缺陷反复出现
- 客户投诉严重
- 等
ISO 9000 标准与 CMM 模型的区别:
- ISO 9000 标准侧重于评估;CMM 模型侧重于认证。
- ISO 9000 标准是通用标准,适用于各行各业;CMM 模型只适用于软件。
- ISO 9000 标准是相对固定化的标准;CMM 模型则强调持续改进。
- 等
¶三、SQA 简介
SQA 全称为 Software Quality Assurance (软件质量保障),是为了确保软件开发过程与结果符合预期要求而建立的一系列规程,以及按照规程与计划所采取的一系列活动及其结果评价。在软件开发组织中负责此项工作的人员被称为 QA (Quality Assurance)。
理论上,SQA 应当是组织中独立于项目团队的监督团队,QA 的权力与项目经理平行,负责监督项目中的所有软件工程环节。QA 的主要工作内容分为以下几点:
- 监控软件开发过程,确保产品质量符合预期。
- 保证开发的产品符合 ISO 9000 标准或 CMM 模型。
- 确保软件开发过程中的不合规不合理问题及时得到处理。
- 确保项目团队制定的计划、标准、规程、文档等符合要求。
QA 与测试工程师的职责区别:
- 软件测试工作侧重于发现问题,软件质量保障工作侧重于预防问题。
- 理论上,测试工作属于软件生命周期的一部分,也应受到 SQA 的监督。