第1章 高质量软件开发之道
本书的第1章之高质量软件开发之道,作者用大量的篇幅介绍了“软件质量”的基本概念,解释了软件质量的十大属性。这十大质量属性又分为功能性和非功能性两类,功能性包括正确性,健壮性和可靠性;非功能性包括性能,易用性,清晰性,安全性,可扩展性,兼容性和可移植性。
1.1 软件质量的基本概念
在这一节里,作者提出了“零缺陷”理念。
“没有错误的程序世间难求”。我们也经常说,“零缺陷”只是一种理想状态。然而,人在做一件事情时,由于存在很多不确定因素,一般不可能100%地达到目标。从严要求只有好处没有坏处,因此有了“零缺陷”理念。如果没有“零缺陷”的质量理念,也许缺陷就会成堆。这就是所谓的“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣。”
1.2 细说软件质量属性
正确性,健壮性和可靠性
这是我们开发人员在开发产品时的基本要求!正确性的重要是不言而喻的,错误的东西不但毫无价值,反而会造成损失。健壮性和可靠性是软件产品可用的保障,时不时崩溃或极不友好的软件用户肯定会不愿意使用。
性能
性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。
特别是我目前从事的行业,因为经常要进行海量数据的处理,性能更是一个普遍关注的问题。解决性能问题,关键任务是找出性能瓶颈,不要在无关痛痒的地方瞎忙乎。就我而言,遇到最多的其实还是是时间效率多余空间效率。因此,通常采用“空间换时间的做法”比较普遍。(可能是由于硬件的成本降低,大内存相对比较容易获得)。
易用性
易用性最重要体现在需求人员(或产品设计师)对软件产品的设计。
清晰性(可读性、可维护性)
Martin Flower的《重构》一书中讲过“任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。”足以可见可读性的重要性!只有可读的代码才可维护。
安全性,可扩展性,兼容性和可移植性,就从目前我所从事的行业来看,兼容性和可扩展性相对更加重要些。与同行业相同强势软件的兼容,版本之间的兼容,等等。
经验表明,如果“高质量”是“修补”出来的,毫无疑问会导致低生产率和高成本。如果能研制出某些好方法,将高质量与高生产率内建于开发过程之中,那么就能自然的降低开发成本,这是软件过程改进的目标。
1.3 人们关注的不仅仅是质量
软件企业力求做到“鱼,熊掌,美酒三者兼得”。
高质量既是软件开发人员的技术追求,又是职业道德的要求。
质量与生产率之间存在相辅相成的关系。但不论如何,高生产率必须以质量合格为前提。
在过程混乱的企业里,一批人马累死累活地做完产品后,马上又因质量问题被弄得焦头烂额。
1.4 高质量软件开发的基本方法
作者从建立软件过程规范,复用,分而治之,优化与折中,技术评审,测试,质量保证和改错等8个方面论述了软件开发的基本流程。
无规矩不成方圆,软件开发过程是一项长期复杂的活动,需要建立一套适合实际情况的规范和流程,并形成制度,从制度上对这一过程以保证。
“规范化”是区别“正规军”和“游击队”的根本标志。
“请不要再发明相同的车轮子了。”是对复用的渴望。复用有利于提高质量,提高生产率,并减低成本。
优化工作不是可有可无的事情,而是必须要做的事情。
过程质量与产品质量存在某种因果关系,通常“好的过程”产生“好的产品”,而“差的过程”产生“差的产品”。当然,单独的“质量保证”其实并不能保证质量。技术评审与测试才关注产品质量,技术评审和测试能弥补质量保证的不足,三者是相辅相成的质量管理方法。
1.5 关于软件开发的一些常识和思考
在这一节里作者从他自己的角度回答了一下问题:
1,有最好的编程语言吗?
2,编程是一门艺术吗?
3,编程时应该多使用技巧吗?
4,换更快的计算机还是换更快的算法?
5,错误是否应该分等级?
并对一些错误的观念给出了自己的观点。