最近某项目组爆出了一个小问题,本应该在开发过程就解决的Bug,结果上了生产还把客户生产服务器给搞宕机了,这个小问题导致的影响让某高层高呼“灾难啊!”
糟糕的质量有哪些灾难的影响呢?
l Financial loss from lost business.
l Financial loss from customer reparations.
l Financial loss from lost customers.
l Financial loss from lawsuits.
l Lower brand equity for the organization.
· 业务流失导致的经济损失
· 赔偿导致的经济损失
· 客户流失导致的经济损失
· 法律诉讼导致的经济损失
· 品牌价值的损失
在软件生产过程中,个人觉得最重要的质量控制还是在开发过程中把控软件的质量,在开发过程中我们都做哪些工作来保障我们的软件质量呢?
1. PDCA在软件开发过程中应用:
团队借用Agile的开发模式(为什么用“借用”一次呢?因为敏捷还在实践摸索中。),引入PDCA的质量管理模式:Plan-Do-Check-Action
P:举行计划会议;
D:每日早会、软件开发;
每日早会例牌的问题:昨天完成什么?感觉有哪些不顺畅的地方?今天干什么?
C:各种评审会议:
在开发过程中对关键的环节进行评审,如工作量估算评审、需求评审、设计评审…;
A:回顾会议:
回顾会在一个周期开发结束后举行,主要总结本开发周期内工作成果,工作中Good、could be better 、improve的各方面;
在回顾会议后,根据回顾不足的地方争取在下一个周期中进行持续改进,之前做的好的地方继续发扬。
2. 开发过程中的一些质量控制:
a.结对编程;
关于结对编程,由于各方面的原因在实施过程中只有小部分的关键开发中用结对的方式进行编程开发,如:接口、公用组件的开发等一些关键的业务或者公用的程序来进行结对,确保程序开发质量问题降到最低。
b.单元测试;
关于单元测试主要引入JUnit并建立相应的规范来确保单元测试的质量,同时也有用到其他工具,Selenium (UI测试)以及FitNesse,不过这两个工具目前没有很好的应用起来。
c.持续集成:
目前采用的是Jekins平台结合maven、Ant等工具,定期打包发布,运行单元测试case,并出单元侧测试报告、代码覆盖率等一些质量报告,并针对这些测试结果进行分析,并修正相应的代码及test case;
3.一些质量活动与质量改进
a.一些规范:
根据项目的特性制定一些规范,如JAVA JS规范、Junit单元测试规范,当然还有客户要求的代码安全规范、敏感信息处理等一些规范。
b.Code Review
安排专人推进 Code Review 工作,定期举行Code Review,Code Review 在项目组内被定义成群体活动,不仅仅是交叉检查,而是集群众(开发者们)的力量一起对项目组的所有开发的代码进行Review(这或许是团队小好处)。
4.其他
a.交流培训
交流是团队中最重要的活动之一,同时为交流付出了巨大的时间代价,一直在优化交流的方式方法,如会议举行时间、会议的安排组织方式、会议的模式都一直在优化,培训方面目前团队内部的培训尚未开展到位,主要做团队的定期总结,例如写blog;
b.人才培养
根据不同人员的性格特性安排以及个人发展需要进行安排工作以及引导,尽量做到各施所长,发挥最大的能量。
以上是团队中一些软件质量管理的简单总结,在此也喊一下老X的口号:“我们对质量问题0容忍!”
========后记========
质量管理体系是一个庞大的体系,对于软件质量管理各方面的文章书籍有很多,最实际的质量是将公司、项目组制定的规范落地,做好工作的没一个步骤,空谈误国(“灾难啊!”就是一个很好的例子),实干兴邦。如有需要的可以去看看CMMI、PMBOK这些成熟的体系。