1、软件公司存在的问题
目前很多软件公司都存在下面一些问题:
公司的产品质量很难稳定,到了客户那里总是出现很多问题,他们的高手经常去客户那里现场救火。
产品的质量问题总是重复出现。这个版本已经解决,到了下个新版本可能又出现。开发人员总是抱怨没有时间把问题一次解决好,但是却有时间把反复出现的问题解决很多次。
产品上市时间总是一拖再拖,很难按时推出新产品或新版本。产品推出之后也不能适应市场需求。
公司的人员总是加班加点工作,还是有解决不完的问题。
这一切的一切都是什么原因造成的?
那就是软件的质量管理没有做好。
那怎样才能做好质量管理呢?
2、质量管理就像治病
我们先来看一个故事。
中国古代有一个著名的神医,叫扁鹊。传说扁鹊有三兄弟,并且全是郎中。其中老三扁鹊是名医。人们问他:“你们兄弟三人谁的医术最高?”
他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名并成了名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人说他是好郎中。我大哥不外出治病,他深知人们生病的原因,所以能够预防村里人生病,他的医术只有我们村里才知道。其实我的医术不如二哥,二哥的医术不如大哥。”
从这里看出,要想身体好,少生病,有三种办法。
第一是早预防,不让疾病产生,这就是扁鹊大哥的方法。
第二是早发现早治疗,这就是扁鹊二哥的方法。
第三是早抢救,死马当活马医。这是没有办法的办法,万不得已而为之。这就是扁鹊经常做的事。
3、质量管理的三套体系
从上面的故事可以明白,其实质量管理也类似。我们应该建立三套体系:预防体系,有效检查体系、快速抢救体系。
3.1 建立预防体系
在软件开发过程中有效地防止工作成果产生缺陷。主要措施有:
1)专家培训,不断提高大家的技术水平、管理水平;
2)流程化,不断提高规范化水平,把经验和教训固化在流程中。大家如果按照流程来做,软件质量不会差,但是如果不按流程来做,那软件质量不确定,有可能很差,也有可能很好。他依赖于人。流程化的目的就是希望产品质量不要依赖于人,而是要依赖于流程、制度、规范。这样公司的产品质量就比较稳定,即使人员变更也会比较稳定。这就是流程化的目的。
当然流程化不仅仅是把流程整理出来,还要在运行过程中不停优化,保证流程确实是好用的、容易执行的。
要想保证流程容易执行,应尽量让流程工具化,把流程固化在工具中。在使用工具时,大家按照工具的要求来做,就已经在很好的执行流程了。市场上有很多这方面的工具。上网一搜索很快就能找到一些。我们曾经用过bugzilla,漫索软件。
3)复用化。处理相同的事最好尽量复用现有代码,或者把公共功能做成模块,便于大家复用。这样就可以预防问题的发生。
3.2 建立有效检查体系
在软件开发过程中能尽早发现问题,尽早解决问题。这样代价最少。主要措施有:
1)技术评审。请专家对技术方案、思路进行评审,在编码之前找出可能的问题。质量管理大师戴明博士说过:质量是设计出来的。可见编码之前的设计方案是非常重要。设计时就埋下的缺陷隐患在后期是很难解决的。设计不好的软件就像体质不好的人,后期再多的调理也收效甚微。
2)测试。测试是查漏补缺的重要手段。这里有各种测试方法,例如静态测试、动态测试、白盒测试、黑盒测试、单元测试、模块测试、系统测试、回归测试、功能测试、性能测试、易用性测试手工测试、自动测试。但是我觉得最重要的是要使所有的测试方法形成一套有效的测试系统。
如何衡量有效?那就是任何新的改动,如果它导致以前正确的行为变成错误,这套系统应该能报告出来。建议的方法是保证每种情况都有对应的测试用例,每种错误也都有对应的测试用例。
3)过程检查。软件开发过程中有一些大家公认的过程或规范能够避免产生一些问题,那这些过程和规范就应该被检查,保证软件开发过程与规范被大家遵守。这主要是QA的工作。
4)代码评审。评审工作主要看代码是否与当初的设计方案一致。这样我们就能最大限制减少问题的产生。
3.3 建立快速抢救体系
在软件产品发布之后,客户可能会发现问题。因此一定要尽早回应、解决,尽量减少对客户的影响,也有利于维护自己产品的声誉。
这主要是要提供方便、快速的售前售后服务。内容包括从新客户的接入,到新老客户维护和营销的每一个环节的工作,与销售、营销、推广、策划、人事等多部门业务对接,优化各业务环节,减少各环节客户流失和公司成本等。
如果要做好这部分的工作,可以直接引入CRM系统,即客户关系管理系统(Customer Relationship Management)。