揭示7个提高软件质量的务实做法

作/转载者:黄永兵 译 51CTO.com  

  软件缺陷之所以被称为“臭虫”是有原因的,它们通常会在软件中存在很长一段时间,它们总是在最不合时宜的时候出现在代码中,目前还没有有效的方法来彻底消除它们,这些都和臭虫有着极为相似的表现,因此软件缺陷也经常使用一个臭虫图标来表示。

  如今残酷的商业环境造成软件开发成本急剧下降,开发时间不断被缩短,在人员不够的情况下还希望提高开发速度,而“质量第一”的标语只不过是挂在墙上的一道风景而已。在这种极端的开发环境下,软件开发团队如何保证质量呢?按照教科书上的做法肯定不现实,本文拟就根据我多年的开发实践,总结出7个比较务实的做法,以期在有限的资源下确保软件质量得到较大保证。这里引用Forrester给高质量的软件下的定义:软件符合业务需求,提供满意的用户体验,以及软件缺陷很少。

  Forrester的分析师Visitacion和Gualtieri说:“尽管许多企业应用程序开发团队在工具,流程和人员上投入了很多,但软件质量仍然不高”,我认为这就是一种未采取务实方法的表现,要想提高软件质量,必须在整个开发生命周期实施质量保证计划,既与开发经理和开发人员有关,也与测试和质量保证人员有关,下面就一起来看看都有哪些务实的做法吧。
  1、定义恰当的质量目标
  软件最终是要交付给用户使用的,因此应从用户的角度来定义软件质量目标,软件应满足用户的业务需求,实现令人满意的用户体验。这样做的好处:既不将质量目标定得太高,任由你付出百般努力也无法实现,也不将目标定的过低,那样你无法给用户交差,根据时间,资源和预算客观情况定义合适的软件质量标准最好,既不让开发团队感觉痛苦,又能让用户满意。
相关角色:商业利益相关者,整个开发团队。
  2、让每个人都知道质量的重要性
  尽量在软件开发生命周期的前段时间减少软件缺陷,避免在后期来消灭缺陷,那样耗费的时间和精力更多。好处:让每个人都知道质量的重要性后,他们就会从心理上更注重代码质量,就会更用心写出高质量的软件。
相关角色:整个开发团队。
  3、调整团队和个人的目标,纳入质量考核体系
  根据业务需求调整团队和个人的工作目标,并纳入质量考核体系,实施严格的奖惩措施,刺激开发人员的工作效率和工作质量。好处:根据团队成员的执行表现给予适当奖励,让他们知道改善软件质量是一种奋斗目标,逐渐发展成为一种习惯。
相关角色:管理人员。
  4、获取正确的需求
  确保从需求获取开始,项目就朝正确的方向迈进,需求偏离或需求错误是让开发人员最头痛的事,大量的返工和修改会熄灭本已燃起的激情,而正确的需求会给开发人员带来愉快的心情。好处:减少返工和重新测试周期,减少总体工作量。
相关角色:管理人员,业务分析师,用户体验设计师和架构师。
  5、将测试重点放在最关键和风险很高的点
  在时间有限的情况下,不可能将方方面面的缺陷通过测试全部暴露出来,这时只有抓住重点,做到有的放矢,将核心功能点重点测试,避免重大缺陷成为漏网之鱼。好处:杜绝关键缺陷,即便有其它缺陷未被发现,也不至于影响到软件的整体质量。
相关角色:管理人员 ,质量保证人员。
  6、提高设计质量
  开发人员会根据架构师的设计文档进行编码的,如果设计描述得含混不清,那开发人员可能会根据自己的理解编写代码,或许就会造成南辕北辙的结果。好处:参照简明清晰的设计编写出来的代码也会更简单,更干净,也更容易测试和返工,代码中包含的错误也会更少,也更容易诊断和修复缺陷。
相关角色:架构师,开发人员。
  7、合理使用自动化测试工具
  传统的手工测试很难覆盖软件的全部功能点,某些后台功能只能借助工具来测试,此外,手工测试的效率低,反复单调的测试更是对测试人员心理素质的极大考验,容易造成对测试工作的懈怠,降低测试质量。好处:通过自动化测试工具的合理使用,可以缩短测试周期,提高测试的可重复性。
相关角色:质量保证人员,开发人员。
  小结
  提高软件质量是一项团队运动,每个人都需要参与其中,软件质量必须贯穿整个软件开发生命周期,减少返工次数,提高用户满意度,减少未经检验的非功能性需求的风险,如安全性和性能,管理人员必须对质量进行考评,并通过各种手段进行激励团队提高质量。