第5章 软件工程 / 5.6
5.6 软件质量管理
一句话讲明白
软件质量就是"做出来的东西,跟说好的要求对得上对不上";质量管理则是提前把过程立好规矩并盯住执行,而不是等做完了再挑毛病。
生活类比
一家面包店:
- 质量控制(QC) = 出炉后逐个检查,糊了的、分量不够的挑出去扔掉——挑坏产品。
- 质量保证(QA) = 规定面粉品牌、烤箱温度、发酵时长,并且每天抽查店员有没有按流程做——管好过程,让坏的面包根本烤不出来。
软考里记住:QA 管过程、重在预防;QC 管产品、重在检查。
正经定义
软件质量就是软件与明确地和隐含地定义的需求相一致的程度,即软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准,以及所有专业开发的软件都应具有的隐含特征的程度。
软件质量保证(SQA)是建立一套有计划、有系统的方法,向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目采用。
拆解与流程
一、影响软件质量的三组因素(McCall 模型)
从管理角度,按用户使用软件的三种倾向划分:
| 倾向 | 用户的心里话 | 质量因素 |
|---|---|---|
| 产品运行 | 用起来怎么样? | 正确性、健壮性、效率、完整性、可用性、风险 |
| 产品修改 | 我能改它吗? | 可理解性(我能理解它吗)、可维修性(我能修它吗)、灵活性(我能改变它吗)、可测试性(我能测试它吗) |
| 产品转移 | 我能搬到别处/接别的系统吗? | 可移植性(另一台机器上能用吗)、可再用性(能再用它的某些部分吗)、互运行性(能和另一个系统结合吗) |
二、补充:ISO/IEC 25010 八大质量特性(考试拓展)
教材第 3 版本节以三组因素为主,但 ISO/IEC 25010 的八大特性在选择题中同样常见,建议一并记住:
功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性。
记忆:功(能)性(能)兼(容)易(用)靠(可靠)信(安全)为(维护)移(植)——"功能兼备,容易靠信心,维护可移植"。
三、软件质量保证 SQA
- 目的:使软件过程对管理人员可见,通过对软件产品和活动进行评审和审计来验证软件是否合乎标准。
- 关注点:一开始就避免缺陷的产生。
- 四大目标:①事前预防(着重缺陷预防而不是缺陷检查);②尽量在刚刚引入缺陷时即捕获,不让缺陷扩散到下一阶段;③作用于过程而不是最终产品(影响广、收益大);④贯穿于所有活动之中。
- SQA 要保证的内容:选定的开发方法被采用、选定的标准和规程得到遵循、进行独立审查、偏离问题及时反映处理、项目定义的每个软件任务得到实际执行。
- 三大主要任务:
| 任务 | 内容 |
|---|---|
| SQA 审计与评审 | 审计软件工作产品、软件工具和设备是否符合组织标准;评审保证软件工作组活动与预定的软件过程一致 |
| SQA 报告 | 记录结果并发布给相关人员 |
| 处理不合格问题 | 对发现的问题及时处理,及时向有关人员及高级管理者反映 |
- SQA 报告发布的 3 条原则:①SQA 与高级管理者之间应有直接沟通渠道;②SQA 报告必须发布给软件工程组,但不必发布给项目管理人员;③可能的情况下向关心软件质量的人发布。
考试怎么考
- 题型:选择题;案例题偶尔考"该项目质量保证工作缺失了什么"。
- 必背:三组因素影响分类(运行/修改/转移各含哪些);SQA 四大目标;SQA 报告三条原则。
- 常见问法:
- "'我能修它吗'属于哪类质量因素?" → 产品修改(可维修性)
- "SQA 报告必须发布给谁?" → 软件工程组
- "SQA 的重点是?" → 事前预防、作用于过程(不是检查最终产品)
- 陷阱词:把"质量保证"说成"检查最终产品是否合格"(那是质量控制);把 SQA 目标说成"发现尽可能多的缺陷"(是预防缺陷)。
易混辨析
| 对比 | 质量保证 QA | 质量控制 QC |
|---|---|---|
| 管什么 | 过程(有没有按流程做) | 产品(做出来的东西合不合格) |
| 手段 | 评审、审计、过程改进 | 测试、检查、度量 |
| 时机 | 贯穿全过程、事前预防 | 事后检查 |
| 对应过程 | 管理质量(执行过程组) | 控制质量(监控过程组) |
一秒记忆
"质 量 三 问:跑 得 动(运行)、改 得 了(修改)、搬 得 走(转移)。QA 保 过 程、重 预 防,报 告 必 发 工 程 组。"