浅谈保证软件工程质量的一些心得体会

Itwolf原创博客,转载请标明出处,谢谢编程

前言:后端

质量这个词究竟有多重要,没有切身体会真的很难说的出来,从毕业到进入华为工做立刻就要满1.5年了,如今这个词理解更加深入了些。这么说吧,质量在华为的研发领域几乎能够说是重过其余一切,开发进度来不及能够延期,方案搞不定能够变动,裁决不作,惟有质量不可妥协。为何质量这么重要?简单说几点:架构

(1)              质量是一个企业的代名词,质量都作很差,客户确定会有很差的体验,并质疑你的能力。框架

(2)              对于大型的软件工程活动,若是前期版本处处挖坑,那么后期版本将会越作越痛苦,并且定位和解决问题所消耗的时间和金钱将会更多(这点感触颇深)。函数

(3)              从软件开发的角度来看,越早引入问题,带来的人力消耗和经济损失就越大,具体多大呢?听说有专门的团队研究过是成指数形式增加的(具体数字我不记得了,可是从切身体会来说我是深信不疑的),举个例子,若是开发阶段,引入一个和其余地方关联性比较强问题,一直没被发现,而后几个版本以后发现,那么可能不少代码都是基于这个错误的逻辑继续开发的,到时候修改起来,极可能会牵一发而动全身。再好比,需求分析没作好,或软件架构设计不合理,开发完以后才发现,那代价就会更大。工具

(4)              。。。。。。测试

正文:spa

既然质量这么重要,那么管理团队和开发代码,才能保证软件工程的质量呢?下面结合我工做中的一点体会,还有最近读的一本书《代码大全2》的一些感悟罗列我认为比较重要的几点,也欢迎你们补充。架构设计

一、  质量意识的培养设计

之因此把这点放在第一位,真的是人为这点是最重要也是最难作到的,可能你本身有质量意识,可是要让整个团队甚至整个公司都有质量意识仍是很是难的,首先要创建你们共有的质量价值观,从企业文化中将质量意识植入人心,否则以中国人的“聪明”老是上有政策,下有对策。因此我认为意识和价值观的创建是一切的基础,有了共同的价值才能更好的执行规则。

二、  有清晰的质量目标和向导

   有了意识,还须要有目标,要用清晰可见的目标来推进你们为质量负责,量化好什么样的代码是质量好的,好比每千行代码少于多少个bug,bug要根据影响划分出不一样级别。质量必定要做为一个评价研发人员工做或绩效的重要因素。

三、 重要的地方请重要的人把关

  假设你如今有一个10个普通级别的人的开发团队,我建议换成一个1个大牛级别+5个普通级别的团队,哪怕花5倍的工资请一个大牛,而后要他作核心的框架、系统设计、重点问题公关和保证其余人开发的质量把控。有些地方若是作的很差修改代价可能会比较小,好比某个程序写的很差,或某个独立的功能有问题,可是有的地方代价会很大,好比架构设计不合理,或系统设计有问题。并且如前言所说,软件开发越是靠前的步骤出问题,带来的代价就会越大,并且会大的明显。

四、  编程规范

这点刚工做的时候体会不深,随着工做的深刻,体会愈来愈明显,大型软件的编写不是一我的的事,定位、修改问题,也不是只改本身的部分,咱们甚至定位的大部分问题都是老版本和别人的问题,这个时候,若是你们没有一个统一格式的编程规范,就会很难读懂别人的逻辑,只能处处骂娘了。并且好的编程规范确实能让咱们的程序可读性更好,更少的犯错误。

五、  管理好复杂度

人类在同时面临更多更复杂的东西的时候,每每就会显得更加吃力,也更容易犯错误。一开始部门老大给咱们设定函数圈复杂度标准的时候,我也是有些不解,特别是修改别人圈复杂度很高的函数,有时候甚至是一种负担,但后来愈加体会到,合理的复杂度确实能要咱们少犯些错误,并且定位问题和走读代码也会更加清晰。代码大全的做者甚至认为软件的首要技术使命就是管理复杂度。

六、  测试甚至调试以前就要保证代码质量

不要过度的依赖测试,测试固然很重要,但这是保证咱们质量的最后一道关口,代码大全的做者也认为测试不是改进质量的方法,要从代码源头进行把控,好的代码应该不须要调试或不多须要调试的。固然不须要代码的代码几乎是不存在的,可是意识上必定是要这样的。就比如找到初中那会儿作数学卷子的状态,交卷以前就要确保本身能得满分,这样成绩出来即便不是满分,成绩也应该不会差。

确保调试前就有高质量代码的一些手段:

(1)     使用静态检查工具,清除一切警告。

(2)     代码检视,这点是必定要作的。首先自检是必需要有的,而后互检也能够开展,对应风险需求,除此以外还能够会议集体检视。

七、  严格控制修改引入

对于大型软件项目来讲,修改问题引入新问题是一件很是可怕的事,这样除了让你的团队有改不完的问题以外,还很容易把新引入的问题遗留到更后端,形成更大损失,因此修改问题必定要谨慎评估影响,有其余人把控检视,测试也要发散测试,总之修改引入是一件很是严重的事。

八、  改正bug定位根因,且触类旁通

首先不能在没定位出根因的状况下去规避,由于这样不只可能解决不了问题,还可能会带来更大的隐患。不能只改bug自己,要培养发起排查改进的习惯。

九、  测试都没有发现的问题必定要回溯

测试是质量的最后一道保障,若是测试都把问题遗漏了,必定要回溯,寻找遗漏缘由,排查改进。

十、 构建自动化测试环境

这点不比多说,若是天天都有自动化在跑测试用例,起码一些基本的问题不会日后遗留,前面已经屡次提到,越早发现问题,解决问题的代价就会越小。

十一、 改进改进

再好的规则和团队都有不足,因此更好的办法就是与时俱进,实时改进,发现不足就及时总结改进,能够跌倒一次,但毫不在同一个地方跌倒两次。

十二、更多方法欢迎你们补充

 

 个人博客即将搬运同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/developer/support-plan

相关文章
相关标签/搜索