21 软件质量保证¶
说明
本文档由 AI 生成
这一章(Chapter 21: Software Quality Assurance,软件质量保证)深入探讨了如何通过系统性的管理和技术手段来确保软件产品的质量。与上一章关注“评审”这一具体技术不同,这一章的视角更加宏观,涵盖了SQA的要素、任务、统计分析方法(如六西格玛)、可靠性计算以及ISO标准。
这一章的逻辑非常清晰:首先引用了质量大师Phil Crosby的观点,指出了人们对“质量”的认知误区;接着详细列举了SQA的**核心要素**和**具体任务**;然后提出了SQA的**目标**,并对比了形式化方法与统计方法;随后重点讲解了**统计SQA**和**六西格玛**在软件工程中的应用;紧接着介绍了**软件可靠性**和**安全性**的定义与计算;最后落脚到**ISO 9001**这一国际标准。
以下是为你整理的详细笔记(Markdown格式),专有名词后均已附上英文对照,非常适合用来复习备考。
🛡️ 软件工程 Chapter 21: 软件质量保证 (Software Quality Assurance, SQA)¶
1. 关于质量的思考 (Comment on Quality)¶
- Phil Crosby 的观点:
- 质量管理的问题不在于人们不知道它,而在于人们认为他们已经知道了。
- 人们对质量的普遍心态:
- 人人支持 (Everybody is for it): 当然,前提是条件允许。
- 自以为懂 (Everyone feels they understand it): 即使他们不想解释它。
- 认为执行只是本能 (Execution as natural inclination): 认为只要跟着感觉走就能做好(毕竟我们总能应付过去)。
- 归咎于他人 (Problems caused by others): 认为质量问题都是别人造成的,只要别人都认真点就好了。
2. SQA 的要素 (Elements of SQA)¶
软件质量保证不仅仅等同于测试,它是一个包含多个维度的综合体系:
- 标准 (Standards)
- 评审与审计 (Reviews and Audits)
- 测试 (Testing)
- 错误/缺陷收集与分析 (Error/defect collection and analysis)
- 变更管理 (Change management)
- 教育 (Education)
- 供应商管理 (Vendor management)
- 安全管理 (Security management)
- 安全性 (Safety)
- 风险管理 (Risk management)
3. SQA 的任务 (SQA Tasks)¶
SQA小组在项目中需要执行的具体工作流程:
- 制定 SQA 计划 (Prepare SQA Plan):
- 确定需要执行的评估 (evaluations)、审计和评审。
- 确定适用的标准。
- 制定错误报告和跟踪的流程 (procedures)。
- 确定SQA小组产出的文档。
- 确定向项目团队提供多少反馈。
- 参与过程描述的制定 (Participate in process development):
- 审查过程描述是否符合组织策略、内部标准、外部标准 (如 ISO-9001)。
- 评审软件工程活动 (Review engineering activities):
- 验证是否遵守了定义的软件过程。
- 识别、记录并跟踪偏差 (deviations),验证纠正措施。
- 审计指定的工作产品 (Audit designated work products):
- 抽查选定的工作产品。
- 报告结果给项目经理 (Project manager)。
- 确保偏差被记录和处理 (Ensure deviations are handled):
- 记录不合规项 (Noncompliance),报告给高层管理 (Senior management),直到问题解决。
4. SQA 的目标 (SQA Goals)¶
- 需求质量 (Requirements quality): 需求模型的正确性、完整性和一致性,将强烈影响后续所有工作产品的质量。
- 设计质量 (Design quality): 设计模型的每个元素都应被评估,确保高质量且符合需求。
- 代码质量 (Code quality): 源代码必须符合本地编码标准,且具有可维护性 (Maintainability)。
- 质量控制有效性 (Quality control effectiveness): 以有限的资源,最大程度地实现高质量结果。
5. 形式化 SQA 与 统计 SQA¶
- 形式化 SQA (Formal SQA):
- 假设每种编程语言都有严格句法和语义。
- 对软件需求使用严格的形式化方法。
- 应用**正确性证明技术 (Proof of correctness)** 来证明程序符合其规格说明。
- 统计 SQA (Statistical SQA):
- 核心逻辑: 收集所有缺陷信息 -> 找出原因 -> 修复过程。
- 测量 (Measurement): 收集和分类软件错误与缺陷。
- 追溯原因 (Trace causes): 将每个错误追溯到其根本原因(如设计错误、违反标准、与客户沟通不畅)。
- 帕累托原则 (Pareto principle): 80% 的缺陷源于 20% 的可能原因。找出这 20%(即“关键的少数” Vital few),并纠正这些问题。
6. 六西格玛在软件工程中的应用 (Six-Sigma for Software Engineering)¶
- 定义: “六西格玛”源于六倍标准差,意味着极高的质量标准(3.4 个缺陷/百万次出现)。
- 核心步骤 (DMAIC 模型):
- 定义 (Define): 定义客户需求、可交付成果和项目目标。
- 测量 (Measure): 测量现有过程和输出,确定当前质量绩效(收集缺陷指标)。
- 分析 (Analyze): 分析缺陷指标,确定“关键的少数”原因。
- 改进 (Improve): 通过消除缺陷的根本原因来改进过程。
- 控制 (Control): 控制过程,确保未来的工作不会重新引入缺陷原因。
| 西格玛水平 | 缺陷数/百万次 |
|---|---|
| 6 Sigma | 3.4 |
| 5 Sigma | 230 |
| 4 Sigma | 6,210 |
| 3 Sigma | 66,800 |
7. 软件可靠性与安全性¶
- 软件可靠性 (Software Reliability):
- 定义: 在指定的时间周期内,在特定的环境下,软件不导致系统失败的概率。
- 计算公式:
- MTBF (平均故障间隔时间) = MTTF + MTTR
- 可用性 (Availability) = MTTF / (MTTF + MTTR)
- (注:MTTF为平均失效前时间,MTTR为平均修复时间)
- 软件安全性 (Software Safety):
- 一种专注于识别和评估潜在**危害 (Hazards)** 的SQA活动。
- 如果能在早期识别出危害,就可以在设计阶段指定特征来消除或控制这些危害。
8. ISO 9001:2008 标准¶
- 简介: 适用于软件工程的质量保证标准。
- 核心要求: 一个有效的质量保证体系必须具备 20 个要求。
- 涵盖主题:
- 管理职责 (Management responsibility)、质量体系 (Quality system)、合同评审 (Contract review)、设计控制 (Design control)、文件和数据控制 (Document and data control)、产品标识和可追溯性 (Product identification and traceability)、过程控制 (Process control)、检查和测试 (Inspection and testing)、纠正和预防措施 (Corrective and preventive action)、内部质量审计 (Internal quality audits)、培训 (Training)、服务 (Servicing) 以及统计技术 (Statistical techniques)。
💡 复习重点总结 (Key Takeaways for Exam)¶
- SQA 任务 (Tasks): 重点记忆 SQA 小组的职责是**审计 (Audit)** 和 报告 (Report),而不是直接修改代码。他们关注的是过程合规性 (Process compliance)。
- 统计 SQA 与 六西格玛: 理解 DMAIC 流程(定义、测量、分析、改进、控制)。记住六西格玛的目标是 3.4 defects per million。
- 可靠性公式 (Reliability Formula): 考试可能会给出 MTTF 和 MTTR 的数值,要求计算 Availability (可用性)。公式为:
MTTF / (MTTF + MTTR)。 - ISO 9001: 知道它是关于“过程”的标准,强调文档化和持续改进。
- 区分概念: 注意区分 Error (错误,通常指人为失误)、Defect (缺陷,代码中的Bug) 和 Failure (失效,运行时的表现)。
评论区
欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问