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

第1章 高质量软件开发之道

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

1.1 软件质量的基本概念  

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

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

1.2  细说软件质量属性 

       正确性,健壮性和可靠性

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

       性能

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

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

     易用性

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     2,编程是一门艺术吗?

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

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

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

          并对一些错误的观念给出了自己的观点。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值