代码大全学习-23-软件质量概述(The software-Quality Landscape)

软件质量可以分为两类,外部的和内部的。外部的软件质量是对用户来说的,包括正确,易用,高效,可靠,完整,适应各种环境,准确,健壮。内部的软件质量是用户不关心,只有程序员才关心的,包括可维护性,灵活性,可移植性,可重用性,可读性,可测试性,可理解性。当然,程序员不仅关心内部的质量,同时也关心外部的质量,而这内外的区分有时候也不是那么明显,因为内部质量可能会影响到外部质量。要注意的是列出来的这些指标有些是有冲突的,比如有时候为了追求高效,可靠性可能就会差一些。

有了这些指标,下一步就是如何实现它们。首先,要设定质量控制的目标。因为有些指标是冲突的,设定目标才能统一。第二,要把控制质量当做一项重要的任务来做,要从一开始就制定策略。可以有指南,有正式的非正式的审阅等。还有控制需求变更,检查策略执行的结果,做一些原型等也是常用的方法。

发现缺陷的方法有很多,design review,code review,原型,检查code,单元测试,集成测试,系统测试,beta测试等等。没有哪一种方法能发现多于75%的缺陷。尤其是我们常用的单元测试,集成测试,基本上只能发现30~35%的缺陷。所以为了发现更多的缺陷,我们必须要联合使用多种方法。还要注意的是每种方法可能会偏重于发现某一类型的缺陷,比如读代码更多的发现接口缺陷,功能测试更多的发现控制流程的缺陷。

一个缺陷被发现的越早,修复它的代价就越低,所以我们要尽早的发现缺陷。也因此对软件质量的保证要从项目开始就考虑进去。

最好的提高效率的方法就是尽量减少我们重写代码的时间,这个重写可能是因为需求变动,重新设计,或者debugging。这些不能光靠程序员,还需要有管理,有流程来控制。方法没有一定,可以不断摸索出适合自己团队的方法。后面的章节还会详细讲这一篇提到的一些内容。

同样附上Checklist:

Checklist: A Quality-Assurance Plan

  • Have you identified specific quality characteristics that are important to your project?
  • Have you made others aware of the project’s quality objectives?
  • Have you differentiated between external and internal quality characteristics?
  • Have you thought about the ways in which some characteristics may compete with or complement others?
  • Does your project call for the use of several different error-detection techniques suited to finding several different kinds of errors?
  • Does your project include a plan to take steps to assure software quality during each stage of software development?
  • Is the quality measured in some way so that you can tell whether it’s improving or degrading?
  • Does management understand that quality assurance incurs additional costs up front in order to save costs later?

你可能感兴趣的:(代码大全(Code,Complete),软件质量,冲突,流程,策略,重写)