本章从构建的角度来审视保障软件质量的技术。
软件质量的特性
- 正确性;
- 可用性;
- 效率;
- 可靠性;
- 完整性;
- 适应性;
- 精确性;
- 健壮性;
- 可维护性;
- 灵活性;
- 可以执行;
- 可重用性;
- 可读性;
- 可测试性;
- 可理解性
改善软件质量的技术
- 软件质量目标;
- 明确定义质量保证工作;
- 测试策略;
- 软件工程指南;
- 非正式技术复查;
- 正式技术复查;
- 外部审查。
开发过程
- 对变更进行控制的过程;
- 结果的量化;
- 制作原型。
不同质量保障技术的相对效能
- 缺陷检测率;
- 找出缺陷的成本;
- 修正缺陷的成本
什么时候进行质量保证工作
在开工之前,这一工作就应当添加到项目计划中,在项目进行中作为技术脉络的一部分,并且应该作为项目的街书店,当整个工作结束的时候检验产品的质量。
软件质量的普遍原理
软件质量的普遍原理就是改善质量以降低开发成本。
核对表:质量保证计划
- [ ] 是否确定出对项目至关重要的特定质量特性了?
- [ ] 是否让其他人意识到项目的质量目标了?
- [ ] 是否能够区分质量的外在特性和内在特性?
- [ ] 是否考虑过某些特性与其他特性相互制约或相互促进的具体方式?
- [ ] 在软件开发的每一个阶段,项目是否要求针对不同错误类型使用不同的错误检测技术?
- [ ] 项目计划中是否有计划有步骤地保证了软件在开发各阶段的质量?
- [ ] 是否使用了某种质量评估方法,并且由此确定质量是改善了还是下降了?
- [ ] 管理层是否能理解为了质量保证在前期小号额外成本,目的就是在项目后期减少成本?
更多资源
Ginac《Customer Oriented Software Quality Assurance》
Lewis《Software Testing and Continuous Quality Improvement》
要点
开发高质量代码最终并没有要求你付出更多,只是你需要对资源进行重新分配,以低廉的成本来防止缺陷出现,从而避免代价高昂的修正工作;
- 并非所有的质量保证目标都可以全部实现。明确哪些目标是你希望达到的,并就这些目标和团队成员进行沟通;
- 没有任何一种错误检测方式能够解决全部问题,测试本身并不是排除错误的最有效方法。成功的质量保证计划应该使用多种不同的技术来检查各种不同类型的错误;
- 在构建期间应当使用一些有效的质量保证技术,但在这之前,一些具有同样强大功能的质量保证技术也是必不可少的。错误发现越早,它与其余代码的纠缠就越少,因此造成的损失也越小。
软件领域的质量保证是面向过程的。软件开发与制造业不一样,在这里并不存在会影响最终产品的重复阶段,因此,最终产品的质量受到开发软件所用的过程的控制。