中国历史上曾经有过“土布”和“洋布”之争,流水线和机器化生产带来的产品“洋布”质量好、价格低,对手工作坊生产的、无法保证质量稳定性的“土布”带来了极大的冲击,并且直接导致了当时的手工纺纱和手工织布的劳动者破产?众所周知,在制造业,机器的工艺要比人可靠得多。

  而另外一个方面,在人的创造性因素占据很高地位的软件产业,要保证软件质量,也必须能够将软件的开发规范化、标准化,然后才能高质量的规模化。小规模的软件或许可以依赖一个或者数个人员和开发小组的创造性,可以保证很好的质量。但是,当软件系统的复杂性急剧增长、项目环境趋于复杂、软件需求的变更日益频繁和流程人员不断变化的时候,软件企业面临着高度的挑战。

  要在这种情况下保证软件的质量并且促进企业的发展,中国的软件企业必须摆脱“土布”制造者们曾经踏过的误区?不是千方百计地抵制“洋布”,而是应该学习其先进的生产理念和质量控制的方法论,引进流程化的管理,从管理和技术上成长。

  开发是工程 不是艺术

  “中国的软件业不是缺少爱因斯坦,而是有太多的爱因斯坦。” 中创软件工程股份有限公司董事长兼总裁景新海表示。很多人将软件开发当成艺术创作,不按照软件工程的规范、随心所欲地进行软件开发等,这是中国大多数软件开发人员的通病。

  然而,软件开发毕竟不是艺术,而应该是一项缜密的工程。

  作为一个软件开发的公司,如果没有一致的过程管理办法,对于公司而言可能是一场灾难。没有一致的过程管理办法,意味着企业没有开发管理标准。开发人员将只能按照自己的设想进行软件开发,这不是一项工程行为,而使每个员工的艺术行为。

  尽管软件开发中,有些局部需要充分发挥想象力,但是软件开发的全过程整体而言,如果希望组织大量开发人员进行规模化开发,必须把它作为工程来进行。因此,不应该过于注重创造能力而忽略了开发流程的约束力。开发软件终的目标在于客户负责,要使得所开发出来的产品能终合用户需要,而不是开发人员创意的无限制自由发挥。

  因此,必须引入软件开发的过程管理规范来提升软件企业的过程质量。而其过程质量可以通过软件过程成熟度来决定,例如CMM/CMMI的级别,这是很多印度软件公司能够获取外包项目的重要原因,也是中国的软件企业争先恐后试图通过CMM/CMMI评估的关键理由。

  但是,真正能够保证软件质量的并不是评估证书本身,而是软件企业能够达到成熟等级的方法、工具及软件开发平台。因此,如同汽车生产需要引入生产线一样,必须采用合适的方法、工具和平台,真正的提高企业的软件生产过程的成熟度。

  质量在全过程 不仅是测试

  “软件开发的过程犹如盖房子,如果地基没有做好,那么房子盖完之后的第一件事情是拆房子,而不是测试房子的性能。” IBM大中华区软件集团Rational软件总经理陈致平表示。要保证软件开发的质量,必须通过一定的管理模型,例如CMM/CMMI、六西格玛、ISO9000或者RUP,进行全过程的管理,而测试只是后一个层次。

  在软件开发的生命周期中,不仅是测试人员必须承担软件质量的责任,每一个环节都必须严守开发纪律、遵守管理流程。软件分析人员、架构在软件开发的初期,如果因为设计和架构问题出现失误,那么越接近后期,开发所需要投入的人力资源和财力都会出现损失,测试也需要花费更大的力量。关键的,不能保证质量的软件产品将会导致客户的满意度下降,对企业的发展带来严重的影响。

  不在直接收益 而是长远利益

  软件质量的提升不能直接为公司的开发带来效益,但是可以通过多个方面体现出来。甚至为控制软件质量所需要进行的人力培训成本和工具采购的成本,在短期内导致公司的净利润降低,但是从长远角度来看,将会给公司带来极大的效益。

  首先,用户的满意度将会得到提高。用户购买软件产品,是因为他们有实在的业务需求。倘若为其开发的产品能够高质量地合其所用,那么肯定可以解决软件实施项目回款难题。由于减少了后续的维护和支持需要,那么对于软件企业而言,增加了所得到的利润。

  “在他们引入Rational进行开发之后,我们感觉系统更加好用了。”海事局计划基建处副处长余剑翔先生如此评价中创公司为其开发的水上安全监督管理信息系统。

  其次,引入诸如RUP之类的流程管理,将使得企业的开发团队弹性大大提高。在开发流程改进之后,开发的过程将变得透明,因此可以根据任务的多寡增加或者减少开发资源,从而进一步控制成本和工作进度。

  第三,从长远来看,采用流程改进的方法论、引进的流程规范工具,将会改掉软件企业的开发人员的有关开发的坏习惯,提升开发人员的素质。

  如果由于短期内成本的考虑,仅仅引入流程改进的方法论而不采用流程控制的工具,将使得企业徒具过程控制的虚名而无法真正将其落到实处,企业因而也无法收获长远利益。