跳转至

📔 Part V : Code Improvements 学习笔记

Chapter 20 软件质量概述

1. 软件质量的特性

软件同时拥有外在和内在的质量特性。 - 外在特性:指的是该产品的用户所能够感受到的部分。 - 正确性 - 可用性 - 效率 - 可靠性 - 完整性 - 适应性 - 精确性 - 健壮性

  • 内部特性
    • 可维护性
    • 灵活性
    • 可移植性
    • 可重用性
    • 可读性
    • 可测试性
    • 可理解性

质量的外在特性是用户关心的唯一软件特性。

对于程序员来说,除了要关注软件质量的外在特性之外。还需要关注它的内在特性(也就是代码)。

2. 改善软件质量的技术

软件质量保证是一个需要预先计划的、系统性的活动,其目标是为了确保系统具备人们期望的特性。

软件质量中的某些因素:

  • 软件质量目标
  • 明确定义质量保证工作
  • 测试策略

    • 执行测试可以分为产品的可靠性进行详细的评估。
  • 软件工程指南

  • 非正式技术复查
  • 正式技术复查
  • 外部审查

2.1 开发过程

  • 对变更进行控制的过程

    • 有效管理变更是实现高质量的一个关键。
  • 结果的量化

  • 制作原型
    • 制作原型是指开发出系统中关键功能的实际模型。

2.2 设置目标

明确设置质量目标是开发高质量软件的一个简单而清晰的步骤,但它常常被忽视。

明确了目标,则可以减少诸多问题,从而达到高质量的目标。

3. 不同质量保障技术的相对效能

  • 缺陷检测率
  • 找出缺陷的成本
  • 修正缺陷的成本

4. 什么时候进行质量保证工作

缺陷可能在任何阶段渗透到软件中。

  • 在早期阶段
    • 强调质量保证工作,并且贯彻到项目的余下部分中。
  • 在开工阶段
    • 应该添加到项目计划中,在项目进行中作为技术脉络的一部分,并应该作为项目的结束点,当整个工作结束的时候检验产品的质量。

5. 软件质量的普遍原理

软件质量的普遍原理:改善质量以降低开发成本。

要达到原理,则需要提高生产效率和改善质量。

6. 核对表:质量保证计划

  • 是否确定出对项目至关重要的特定质量特性了?
  • 是否让其他人意识到项目的质量目标了?
  • 是否能够区分质量的外在特性和内在特性?
  • 是否考虑过某些特性与其他特性相互制约或相互促进的具体方式?
  • 在软件开发的每一个阶段,项目是否要求针对不同错误类型使用不同的错误检测技术?
  • 项目计划中是否有计划有步骤地保证了软件在开发各阶段的质量?
  • 是否使用了某种质量评估方法,并且由此确定质量是改善了还是下降了?
  • 管理层是否能理解为了质量保证在前期消耗额外成本,目的就是在项目后期减少成本?

7. 更多资源

  • 《面向用户的软件质量保证》Ginac, Frank P
  • 《软件测试和连续质量改进》Lewis, William E

Chapter 21 协同构造

1. 协同开发实践概要

“协同构建” 包括结对编程、正式检查、非正式技术复查、文档阅读,以及让开发人员共同承担创建代码及其他工作产品责任的技术。

  • 协同构造是其他质量保证技术的补充
  • 协同构造有利于传授公司文化以及编程专业知识
  • 集体所有权适用于所有形式的协同构造
  • 在构造前后都应保持协作

2. 结对编程

2.1 成功运用结对编程的关键

2.2 结对编程的好处

2.3 核对表:有效的结对编程

3. 正式检查

3.1 期望详查能够带来什么结果

3.2 详查中的人员角色

3.3 详查的一般步骤

3.4 核对表:有效的详查

4. 其他类型的协同开发实践

Chapter 22 开发者调试

1. 开发者测试在软件质量中的角色

2. 推荐的开发者测试方法

3. 测试技巧锦囊

4. 典型错误

5. 测试支持工具

6. 改善测试过程

7. 保留测试记录

Chapter 23 调试

1. 调试概述

2. 寻找缺陷

3. 修正缺陷

4. 调试中的心理因素

5. 调试工具 --- 明显的和不那么明显的

Chapter 24 重构

1. 软件进化的类型

2. 重构简介

3. 特定的重构

4. 安全的重构

5. 重构的策略

Chapter 25 代码调优策略

1. 性能概述

2. 代码调整简介

3. 蜜糖和哥斯拉

4. 性能测量

5. 反复调整

6. 代码调整方法总结

Chapter 26 代码调优方法

1. 逻辑

2. 循环

3. 数据变换

4. 表达式

5. 子程序

6. 用低级语言重写代码

7. 变得越多,事情反而更没变