“当你能够测度你所说的并将其用数字表达出来,你就对它有了一些了解;但当你不能测度,不能用数字表达它时,你对它的了解就很贫乏.你在思想上还远没有进入科学的阶段” ——Load Kelvin
软件质量判定遇到的问题
判断和衡量代码质量一直是开发过程中令人苦恼的问题,在同样完成功能的情况下,如何判别一种写法比另一种写法好呢?在代码重构的过程中,如何确定代码质量是在不断的改进当中呢?引入一种设计模式以后,代码真的变的比以前好了吗?
大部分时候我们凭感觉和经验做这些事情,我们使用很多模糊的词语来描述我们的判断,比如这样做以后,代码的可维护性更好,可扩展性提高等等。在越来越注重代码设计的今天,很多人开始使用更感性化,更形而上学的词语来形容软件质量,我们会听到评价软件结构
很优雅,带来美的享受,甚至一些设计原则被提升到了哲学高度,:)。
不得不承认这些词语的描述确实很符合我们看到一段高质量代码的心境,但是这些新词语的出现并没有帮助我们解决软件质量判定中遇到的问题,因为这些感性的判定,由于每个人的经验不同,经历不同,所得出的结论也不尽相同。
软件度量能解决的问题
众所周知,度量对任意一个工程产品研制都是很重要的,度量让人们更加 了解产品,可以评价产品,衡量产品质量从而进行改进。对于软件产品也一样,只有定性的评估是不够的,只有通过定量的评估才可以根本的解决评估软件产品质量这样的问题。然而,软件产品的度量却非常困难,对它的测量可能永远无法做到和物理产品一样的完美,但是,软件测量仍然具有重要的意义。
要度量软件质量,首先需要定义软件质量要素,比如,软件的功能性(functionality)、可用性(usability)、可靠性(reliability)、性能(performance)和支持度(supportability)都衡量软件质量的要素。不过,要真正定量的从技术上度量这些要素,就是非常困难的了。
软件度量经历了几十年的发展,在软件的各个方面和领域都开发出了各种度量套件。有针对分析模型的度量,体系结构设计的度量,构件级设计的度量,界面设计的度量,以及源代码级的度量等等,要了解这些度量套件如何进行质量测量可以参考相关的资料。不过,这些度