您的位置:首页 > 编程语言 > C语言/C++

《高质量程序设计指南——C/C++语言》第1章 高质量软件开发之道

2012-12-13 10:32 706 查看
第1章 高质量软件开发之道

本书的第1章之高质量软件开发之道,作者用大量的篇幅介绍了“软件质量”的基本概念,解释了软件质量的十大属性。这十大质量属性又分为功能性和非功能性两类,功能性包括正确性,健壮性和可靠性;非功能性包括性能,易用性,清晰性,安全性,可扩展性,兼容性和可移植性。

1.1 软件质量的基本概念

在这一节里,作者提出了“零缺陷”理念。

“没有错误的程序世间难求”。我们也经常说,“零缺陷”只是一种理想状态。然而,人在做一件事情时,由于存在很多不确定因素,一般不可能100%地达到目标。从严要求只有好处没有坏处,因此有了“零缺陷”理念。如果没有“零缺陷”的质量理念,也许缺陷就会成堆。这就是所谓的“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣。”

1.2 细说软件质量属性

正确性,健壮性和可靠性

这是我们开发人员在开发产品时的基本要求!正确性的重要是不言而喻的,错误的东西不但毫无价值,反而会造成损失。健壮性和可靠性是软件产品可用的保障,时不时崩溃或极不友好的软件用户肯定会不愿意使用。

性能

性能通常是指软件的“时间-空间”效率,而不仅是指软件的运行速度。

特别是我目前从事的行业,因为经常要进行海量数据的处理,性能更是一个普遍关注的问题。解决性能问题,关键任务是找出性能瓶颈,不要在无关痛痒的地方瞎忙乎。就我而言,遇到最多的其实还是是时间效率多余空间效率。因此,通常采用“空间换时间的做法”比较普遍。(可能是由于硬件的成本降低,大内存相对比较容易获得)。

易用性

易用性最重要体现在需求人员(或产品设计师)对软件产品的设计。

清晰性(可读性、可维护性)

Martin Flower的《重构》一书中讲过“任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。”足以可见可读性的重要性!只有可读的代码才可维护。

安全性,可扩展性,兼容性和可移植性,就从目前我所从事的行业来看,兼容性和可扩展性相对更加重要些。与同行业相同强势软件的兼容,版本之间的兼容,等等。

经验表明,如果“高质量”是“修补”出来的,毫无疑问会导致低生产率和高成本。如果能研制出某些好方法,将高质量与高生产率内建于开发过程之中,那么就能自然的降低开发成本,这是软件过程改进的目标。

1.3 人们关注的不仅仅是质量

软件企业力求做到“鱼,熊掌,美酒三者兼得”。

高质量既是软件开发人员的技术追求,又是职业道德的要求。

质量与生产率之间存在相辅相成的关系。但不论如何,高生产率必须以质量合格为前提。

在过程混乱的企业里,一批人马累死累活地做完产品后,马上又因质量问题被弄得焦头烂额。

1.4 高质量软件开发的基本方法

作者从建立软件过程规范,复用,分而治之,优化与折中,技术评审,测试,质量保证和改错等8个方面论述了软件开发的基本流程。

无规矩不成方圆,软件开发过程是一项长期复杂的活动,需要建立一套适合实际情况的规范和流程,并形成制度,从制度上对这一过程以保证。

“规范化”是区别“正规军”和“游击队”的根本标志。

“请不要再发明相同的车轮子了。”是对复用的渴望。复用有利于提高质量,提高生产率,并减低成本。

优化工作不是可有可无的事情,而是必须要做的事情。

过程质量与产品质量存在某种因果关系,通常“好的过程”产生“好的产品”,而“差的过程”产生“差的产品”。当然,单独的“质量保证”其实并不能保证质量。技术评审与测试才关注产品质量,技术评审和测试能弥补质量保证的不足,三者是相辅相成的质量管理方法。

1.5 关于软件开发的一些常识和思考

在这一节里作者从他自己的角度回答了一下问题:

1,有最好的编程语言吗?

2,编程是一门艺术吗?

3,编程时应该多使用技巧吗?

4,换更快的计算机还是换更快的算法?

5,错误是否应该分等级?

并对一些错误的观念给出了自己的观点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: