浅析软件外包企业的过程改进
文/广州赛宝认证中心 易莎莎
背景分析
软件业是从系统软件和服务发源的,后来发展出独立软件产品业务。而随着全球经济一体化的发展,软件行业作为一种特殊的服务业得到了迅速的发展。全球一体化程度越深入,这个行业有了越来越多的“全球化”概念,比如全球一体化的客户、全球一体化的供应商、全球一体化的采购商、全球一体化的服务提供商……诚如管理学大师彼得•德鲁克曾经的预言:“任何企业中仅做后台支持而不创造营业额的工作都应该外包出去,任何不提供向高级发展机会的活动与业务也应该采取外包形式。企业的最终目的不外乎是最优化地利用已有的生产、管理与财务资源。”软件外包是软件全球化环境下,软件生产在全球进行资源有效配置的必然产物。
中国随着进入世界市场的深入度发展、软件业尤其是软件外包的发展也有目共睹;政府给予政策的支持和鼓励,中国的软件企业更期望走向世界、参与世界这个大市场的竞争。近年来在我们的近邻——印度经验影响下,许多软件企业加入到过程改进实施的行列,为越来越高的软件能力成熟度(CMMI模型)的级别努力。
引入这个全球公认的行业标准——SEI的软件能力成熟度模型(CMMI模型)来实施,是软件企业期望吸收更多先进的行业经验,提高软件开发能力,提高软件管理水平,并通过CMMI的评估和定级来获得一个进入全球市场的“门槛”,特别是专门从事软件外包的企业无一不将软件能力成熟度模型(CMMI模型)看成最佳选择,毕竟这个模型汇集了如IBM、波音公司等大型企业的先进实践经验,引入软件能力成熟度模型(CMMI模型)从某种意义上看就是得到软件行业的同行们的最佳实践。
来自IDC的数据显示,2003年中国IT外包服务市场比上年增长了34.2%,首次超越3亿美元的数字关口达到3.18亿美元,虽然目前外包市场占整个IT服务市场的份额还不到10%,但是未来五年将保持着强劲的增长态势,年均增长可望达到44.2%以上,超出IT服务业平均增长率近一倍以上。著名的Gartner研究公司就大胆预测,在2007年到2010年期间,中国将成为世界上最大的外包市场。
然而我们必须看看软件能力成熟度模型(CMMI模型)的实践要求和中国从事外包服务的企业实践对比,是有一些差距或者实施难度的,下文就从软件外包企业的过程改进特点来进行简单分析。
软件外包企业过程改进的特点
国内的软件外包企业的企业规模从几十人到上千人的企业都存在,发展时间从两三年内到十多年的都有,客户群既有近邻的日本、韩国、俄罗斯,也有美国和一些欧洲国家(如丹麦、英国),但现阶段,大部分的承接外包项目是编码、测试及部分的设计,较少涉及到需求阶段。如果IT行业存在一个食物链,我们从事的外包项目处于食物链下游,通常属于应用程序开发这一类型,是这个市场进入门槛最低、重复性劳动最多、利润空间最低的一部分。这也是是发包方——美国、日本、欧洲各国出于知识产权、核心技术保护等考虑,像微软总裁比尔•盖茨2005年6月29日在东京的日本商业协会发表演讲就曾表示:“美国和日本的IT公司不应该把核心业务外包出去”。
因此我们国内专业从事软件外包服务的企业,在引入软件能力成熟度模型(CMMI模型)来实施的时候非常容易遇到以下问题,换言之我们在做过程改进的劣势如下:
1、过程经历的“先天不足”
项目组没有经历完整软件生命周期的经验,尤其是面对软件产品的真正客户的需求获取、分析阶段和产品交付验收阶段。而软件能力成熟度模型(CMMI模型)中的项目策划、集成项目管理这两个过程域就明确要求项目要选择项目的生命周期模型,组织过程定义过程域还要求实施的企业从组织层面来定义组织内部的生命周期模型,从成熟度3的要求看还需要进行过程裁剪。那如果某些外包项目仅仅是一个编码工作,怎样识别自己的生命周期模型呢,还能做怎样的过程裁剪?
2、质量保证的权利不完整
项目组不能整体把握工作产品的质量指标,阶段产物的最终质量验证是发包方来评定的,在进行验证、确认、过程和产品的质量保证等过程域的实施是难以完整有效判断的;甚至有些长期从事软件外包的项目组形成了依赖客户的习惯,从而放弃评价的权利——对日外包企业的项目组尤其明显,让客户方给予质量保证。
3、项目管理的自主度、可控度不全面
外包项目的项目经理们仅能为接到的任务来进行项目策划、跟踪、控制,从项目管控的深入度和全面性看是打了折扣的,也就是说没有承担起自主的全面的项目管理;尤其是发现项目组的一些问题时要明确判断是内部问题还是发包方问题,项目经理们并不好把握,更难去进行深层的原因分析。
4、无法接触最终客户
项目组由于没有原始需求,不接触产品的最终客户,即使是能接触到用外语描述的需求文档,由于对国外行业不熟悉、甚至语言能力影响到我们对需求的理解,让我们的程序编写人员、测试人员难免在业务转换和处理中“行差踏错”。
目前尽管很多日方企业重视对外包项目组进行业务培训、写出了粒度很高的设计文档,但软件产品是为客户提供服务的工具,缺失客户信息和面对面的沟通,一旦技术上遇到难题、实现上有困难,我们的项目组只能放弃某些功能、甚至降低质量要求。
可以对比我们从事国内项目的软件同行们,软件外包企业优势也同样明显,简单来说可以包括:
1、 及时接触了发包方的先进管理经验
不少企业的项目组接受日本、欧美企业进行的管理技术培训;尤其是目前不少日本企业与中国的外包企业合作后,联合成立中国研发中心、工程师培训基地等,派人给中国企业人员进行如PMP培训,管理工具培训等;这让我们从事外包的项目组、尤其项目管理人员的管理理念、管理知识是比较系统的,加之在项目组的实践,理论与实践结合后的深入理解使得项目管理人员能迅速成长。这样的从业人员正是软件企业中的“财富”。
2、 足够的数据积累
数据度量项目丰富,涉及到工作量、进度、缺陷、问题、风险、成本、生产效率等,并能进行一定的项目数据分析。
例如下图所示为某一个对日外包项目在一个月内的评审问题分布:
上图还仅仅是项目组的若干数据分布表中的一个;推广到所有项目都有这样的历史积累,是非常容易达到定量项目管理层面。
3、 服务意识良好,用户至上
从事外包的企业无疑更明确用户是“衣食父母”,因此对于用户需求的响应及时性和有效性、确保用户满意度等方面一定是放在第一位,并且落实到每个成员的实践活动中。而且我们的项目组成员的诚信意识是非常强的。
4、 全员质量意识
质量控制、管理等工作不再是为了某些认证或检查,也不是应付客户要求,而真正落在了全体成员的全面实践中。
5、 重视沟通管理
由于发包方所在国的某些行业与我国的业务差异性、文化的差异、语言差异,我们的外包企业并没有回避,反而更加重视沟通管理;通常都非常明确的建立沟通对应人、沟通响应时间规则,小到邮件发送中的接受人、抄送人,大到重大变更管理;都尽量做到了过程管理、透明管理。
软件外包企业过程改进的实施建议
基于上述的优劣势分析,笔者在此就软件外包企业的过程改进给出几点实施建议:
第一、 拿来主义
就像鲁迅先生倡导的真正的拿来主义要求一样,外包企业要将发包方的管理经验、管理模式、先进技术、服务意识等学回来并转换成内部的体系或过程;更远一步的发展,则是充分利用我们政府鼓励和支持企业自主创新的政策和支持措施,创造自己的产品品牌。
这里不得不回顾到印度经验——很多印度的软件企业逐步从应用程序开发、商业流程外包等,跨入咨询服务领域。
第二、 辨别过程改进的主角
过程改进一定是我们自己内部的需要,不是为了拿到一个“门槛”的认可,不是为了客户的需要,从内部找到真正改进的动力,识别我们已有过程、需改进过程,开发出具有软件外包行业特点的过程体系、生命周期模型、裁剪模型等。
第三、 评估模型上另蹊别径
当前主流的评估模型都选择了CMMI for Development V1.2(即开发模型)的阶段式评估,但某些专业化程度很高、或者承接项目仅限于编码或测试某个单一阶段的企业,是否可以考虑CMMI for Development V1.2的连续式评估,只是选择当前专注的某些过程域来深入实施或评估呢?
此外CMMI还有CMMI for Services(即服务模型)和CMMI for Acquisition(即采购模型),某些从事服务外包的企业其实考虑等待CMMI for Services(即服务模型)的发布后来推行和评估,具体可以参考SEI的模型介绍,本文就不做描述。
综上所述,目前的软件外包企业在从事过程改进时是极具特点的,从企业的业务发展和过程改进的深入度来说,我们确实需要关注自己的优劣势所在、分析和总结过多的实施措施,形成外包行业的特点。
参考文献
• 软件业的生存之道 Michael A. Cusumano (ISBN:7121010895),2006
• CMMI精萃-实用集成化过程改进导论,Dennis M. Ahern/Aaron CL(ISBN:704016059),2005
• SEI CMMI for Development, Version1.2 (CMU/SEI-2006-TR-008)
http://www.sei.cmu.edu/publications/documents/06.reports/06tr008.html
• CMMI for Acquisition, Version1.2 CMU/SEI-2007-TR-017 ()
http://www.sei.cmu.edu/publications/documents/07.reports/07tr017.html
• Roger S. Pressman《软件工程-实践者的研究方法(第5版)》(2002年版,为本书的20周年庆版)
• 崔启亮《正视软件本地化的差距》(《计算机世界报》),2003年11月
• 闫辉《向““食物链”上游进军的中国软件公司》(《程序员》),2005年3月