——试读《代码质量》

 

这是一个飞速发展的时代,在时间的催促下,人们似乎进入了一个迫切追求数量的误区。而在这种背景下,质量更显得难能可贵。

对于软件来说,评价其成功与否的三个主要因素是时间、质量和成本。其中,时间和成本是可以通过后期的管理来控制的,唯独质量,在一款软件完成后,若想再去提高质量,唯有继续时间与成本上的投入,得不偿失。因此,在软件制作过程中对质量进行把控,显得尤为重要。

 

任何一件产品都有自己的质量属性,软件也不例外。产品是供消费者使用的,如果市场没有形成垄断,那么一定会面临着竞争。在有竞争的前提下,质量往往会成为关键要素。

对于软件来说,软件的质量体现在四个方面,在书中也有分别的举例说明:

其一是使用中的质量,顾名思义,这就是用户最直接的体验,也是用户评价一款软件的最直接的标准。其二是外部质量,就是在软件完成后对其进行全面的测试,在我的理解中,这也是模拟用户可能遇到的问题,并将其一一解决的方式。其三是内部质量,对于软件来说,就是对内部代码进行检查,从而发现可能出现的编码问题。其四,也是最后一点,是过程质量,它的前提是有一个完整而成熟的框架,使得软件的制作过程可以得到很好的控制。以上       四点是软件的质量的表现,也分别是用户、制造者和管理者眼中的质量。

接下来进入核心部分,就是本书重点讨论的内容——代码的非功能特性。

当然,对于一款软件来说,它是由无数代码组成的。用户界面中的一个个按钮都包含了无数的代码,这些代码最重要的特性就是功能性,它属于使用中的质量。这也是最容易理解的一点,软件终究是要投入使用的,功能性是务必存在,且最为重要的。

除功能性之外,软件其他的属性就都属于非功能特性了。它们包括可靠性、可用性、效率、可维护性与可移植性。书中之后的章节中也依次讲解了这些非功能属性。

可靠性属于内部质量特性,制作者可以通过模拟测试,检验软件是否真正满足了可靠性的要求。可靠性不一定会经常用到,但是它就像保险一样,能够在一定的时候,发挥意想不到的作用。对于一款软件来说,它是可以为软件加分的因素。

可用性属于外部质量特性,这也是了解一款软件的基本过程。软件的可用性通常会在推广的初期起到很大的作用,就像是一款游戏,如果很容易学会基本的操作,那么就很容易继续下去。相反,如果开始很难,那么对于很多人来说,可能会早早放弃。

效率属于使用中的质量,它包含时间与空间两个基本要素,有些时候它会直接影响到用户的感受。

可维护性属于内部质量特性,它是最容易被实现的要素。在软件编写的过程中可以做到。

可移植性似乎不好归类,我更倾向于将它归为过程质量特性。而实际上,现在软件移植工作并不完善,最典型的例子就是apple的系统中,很难兼容windows系统下常用的一些专业软件。虽然apple已经在一定程度上得到了发展,但是短时间内还是很难在电脑中与windows抗衡。我相信,如果软件的可移植性得到了提升,今后将会是另一番画面。

由于软件的种种特性之间都是相互制约的,因此如何彼此调和就成为了软件工程师的难题。对于软件质量特性之间的把控,也成为了评价一位软件工程师的依据之一。我认为,调节一款软件的种种特性,最简单的方法是对以上各种质量特性进行判断,选择出最重要的,并在整个编码过程中遵循这个原则,遇到矛盾时以此为依据解决问题。

例如:如果功能性不能满足,那么可靠性、可维护性等就成为空谈;如果可用性很好,那么推广之后,可以慢慢对效率、可移植性等进行优化。因此,把握软件特性之间的种种关系,解决质量特征的冲突,也并不是完全没有可能。

以上就是试读《代码质量》一书之后的一点感受,希望有机会完整读过,我想定会有新的领悟。