1.软件质量的内涵
首先再来看PMBOK对质量的定义是内在的系列特征满足要求的程度。这里我们的关注点是这个要求是谁的要求,如果仅仅理解为最终的使用软件的用户的要求,那就片面的理解了软件的质量。因此这里的要求应该理解为满足内部用户和外部用户的要求。
◆外部用户要求
正确,高效,健壮,易用和可靠
◆内部维护人员要求
可维护(代码易读,易读,易Debug,注释清晰,容易扩展)
◆内部测试人员要求
可测试,易用,易理解
◆企业产品化要求
可扩展,可移植,可配置,灵活,重用性高,模块和组件化
因此质量不是无中生有,是有具体的需求驱动,质量也是为了满足某种需求。但一开始可能我们并不能意识到这种需求,如一开始并不注意软件可维护性,到了后期随着需求不断变更修改和人员交替,软件维护拖垮掉项目一半人员时候才反省软件可维护性的重要性,才来关注这个质量需求并制订相应的质量目标。
只有当所有人由于没有执行某些规则而导致惨痛代价后,人们才可能真正理解规则的价值。
因此《代码大全》将软件质量特征分为内部质量特征和外部质量特征:
外部质量特征包括:
◆正确性
整个系统受说明、设计和实现的错误影响程度。
◆可用性
用户学会和使用系统的难易程度。
◆效率
对系统资源的最小利用,包括存储和执行时间。
◆可靠性
在一定条件下执行特定功能的能力。
◆完整性
防止非法或不适当地访问。完整性思想包括:限制非法用户访问,同时确保证数据恰当访问;并行数据表进行并行修改;数据段仅含有有效数据等等。
◆适应性
系统在应用或其它环境下不作修改就能使用的能力。
◆精确性
系统不受错误影响的程度,尤其是数据输出方面。精确性和正确性是不同的。精确性是对系统完成其工作性能良好的衡量,而不是它设计得是否正确。
◆坚固性
系统对无效输入或压力环境中能继续执行其功能的能力。
内部质量特征包括:
◆可维护性
修改一个软件系统,提高其性能或修正其错误的能力。
◆灵活性
修改系统使其能适应于不同的用途或环境的能力,而不必对系统进行特定的设计。
◆可移植性
能修改所设计的某一系统使其能在其它环境下运行的能力。
◆可重用性
能将系统的一部分用于其它系统的难易程度。
◆可读性
能读懂或理解系统源代码的能力,尤其是在细节说明这一级上。
◆可测试性
对整个系统进行单元或系统测试以证实其满足所有需求性能的测试难易程度。
◆可理解性
能从整个系统水平或细节说明这一级上理解整个系统的难易程度。可理解性要比可读性从更一般的水平上讨论系统的紧密性。
对于一个实际的软件项目而言,想把上面的所有质量特征都做好是一件很难的事情,尤其是在项目有明确的进度压力下面。质量,资源和时间是项目管理的三要素,三者相互影响和制约,提高质量是有成本和代价的,提高质量可能带来更多资源的投入或进度的延后。因此项目经理的关注点就是如何根据项目的实际特点来平衡好这三要素,制订切实可行的质量目标。