软件外包全流程解析
 

2009-02-24 作者:王德双 戴金龙 崔启亮 来源:网络

 

软件外包的宏观流程

众所周知,经济全球化的浪潮已经席卷全球:我们生活的这个星球正在变得越来越小,远隔千山万水,操着不同语言的人们可以在几分钟内以各种方式互相认识并展开合作;与此同时,通信技术和互联网技术的发展使得全球变成了一个实实在在的不夜城,你在北京享受美梦的时候,纽约的同事可能正在为某个难题绞尽脑汁。

软件产业作为上世纪中期才兴起的新兴行业,其天生的特点和优势,使其迅速融入这股全球化大潮,并成为其中的佼佼者和弄潮儿。其中,软件外包行业更是异军突起:随着全球各大软件公司越来越高的成本压力和全球资源合理配置的迫切需要,软件外包这种全球合作模式已渐渐成为当代社会非常重要的一种商业模式,是企业价值链中的重要一环,并被认为是软件产业落后的国家和地区快速缩小差距的一条有效捷径。

软件外包一般都会涉及发包方和接包方(少数还会涉及监理方,这里从略)。发包方是把部分业务和服务外包出去的一方,而接包方是负责帮助发包方完成外包业务和提供专业服务的一方。为了使发包方和接包方真正能够从软件外包中各取所需,达到双赢的目的(一般,发包方想降低成本或避开专业领域难点;接包方则想赚取服务利润,发挥专业优势、打造服务品牌),外包管理的出现就成了顺理成章的事情。外包管理是指发包方依据既定的规范和流程,评估选择合适的接包方,采用合适的发包方式,签订合同、监控开发过程和验收最终成果。当然,接包方必需熟悉发包方的外包管理流程和规范,才能提高自身竞争力,达到更好客户满意度,顺利完成外包任务。总之,软件外包的双方需要对软件外包管理规范和流程达成了共识,才可能有效地管理整个外包过程,从而使双方共同获益。

1.自制/采购的决策

发包方根据公司战略和市场/产品需求,必然首先对软件产品或部件的取舍进行决策,一旦决定上马该项目或者该产品,将会面临进行自制还是采购的决策(Make or Buy)。在这个阶段,无论是出于成本考虑还是资源考虑,都可能有将软件产品进行外包的需求,再加上软件外包服务提供商的BD推动,从而形成明确地外包需求。一般地,发包方会有专门负责外包业务的高层管理者(VP)或者专门委员会(可称之为外包管理小组)来讨论和决定外包事务,这个阶段我们称之为外包决策流程(Outsourcing Decision Process)。

一旦决定将部分或者整个项目外包,甚至整个产品线或者部分业务流程外包,那么流程上会迅速进入选择接包方阶段。选择接包方阶段主要包括如下几个子活动:

1.1 竞标邀请

外包管理小组准备《外包项目竞标邀请书》,然后与候选接包方建立联系,分发《外包项目竞标邀请书》以及相关材料。感兴趣的候选接包方与发包方有关人员及时交流,进一步了解外包项目,在指定期限之内撰写《应标书》,并将《应标书》及相关材料(用于证明自身能力)提供给发包方外包管理小组。《应标书》的主要内容有:技术解决方案;开发计划;维护计划;报价等。

1.2 评估候选接包方

为了有效地评估候选接包方的综合能力,外包管理小组应使用《评估检查表》对候选接包方进行初步筛选,剔除明显不合格的接包方。只对通过了初步筛选的候选接包方进行综合评估。

《评估检查表》的主要评估接包方的技术能力、过程能力、人力资源能力、企业规模、国际化能力,具体指标有:

  • 技术方案是否令人满意?
  • 开发进度是否可以接受?
  • 性能价格比如何?
  • 能否提供较好的持续服务(维护)?
  • 是否具有开发相似产品的经验?
  • 接包方以前开发的产品是否有良好的质量?
  • 接包方的开发能力与过程管理能力如何?
  • 接包方的资源(人力、财力、物资等)是否充足并且稳定?
  • 接包方的信誉如何,外界对其评价如何?
  • 接包方是否已经取得业界认可的证书?如ISO质量认证、CMMI认证等。
  • 接包方是否可以有效进行知识产权保护?
  • 接包方是否有完善的数据备份和规避风险的方法?
  • 接包方的地理位置是否合适?

外包管理小组要和候选接包方进行多方面的交流,如面谈、电话会议、正式会议、考察参观、Polit项目试验等。依据《评估检查表》评估候选接包方的综合能力。评估结论生成《软件外包承包商综合能力评估报告》。

1.3 确定接包方

外包管理小组给出候选接包方的综合竞争力排名,并逐一分析与候选接包方建立外包合同的风险,挑选出最合适的接包方。将结论记录在《接包方能力评估报告》之中。

1.4 确定外包层次

一旦完成接包方综合能力评估和排名后,根据结果进行外包层次确定,目前公认四种常见的外包层次分别为:Onsite型外包、OO型外包,ODC型外包,BPO型外包。目前最常见也是最典型的方式为项目型外包,也是我们这次讨论的主要模式。Onsite型外包的进度、质量、监督控制都由发包方具体控制,而ODC模式和BPO模式是外包中相对高端的部分,流程复杂,这三部分我们在这里暂不讨论。

2 签订外包合同

确定采用哪种外包模式后,外包管理小组和接包方会就合同的类型及合同的主要条款进行协商谈判,以便达成共识。发包方提供SOW给接包方,描述工作任务和要求,而接包方应提供方案和建议(Proposal),将原来协商好的报价,承诺等条文内容文档化,经过几轮的反复后双方签署,成为外包服务合同,或者签订专门的《外包服务合同》。

3 外包服务实施过程

双方签订合同之后,就发包方而言,外包管理小组的外包管理活动远没有结束,而是应当主动监控外包服务过程并根据产品需求提供变更请求(如果有的话),从而避免高风险事件的发生。

外包管理小组应定期检查接包方的进展情况,并记录到《外包开发过程监控报告》。监督和检查的重点是:实际进度是否与计划相符?接包方的投入是否充分?工作成果的质量是否合格? 一般从接包方定期提供的日报,周报,月报,里程碑报告等文档中获取相关的信息。外包管理小组应当督促接包方纠正工作偏差。如果需要变更合同、产品需求或开发计划,则按照事先约定好的变更控制流程处理变更请求。

对外包服务接包方而言,合同在签订之前就应该开始为项目的到来做好准备,接包方按照自己的流程,当谈判进展到某种程度后开始团队组建,资源准备等项目准备工作。一旦合同签订,应迅速进入项目的实施阶段。

项目的内部流程可以遵守一般的项目流程,但是外包服务的项目流程跟一般的项目流程又有较大的差别和自身特色。在下一个部分中会重点介绍一下外包项目跟一般项目的不通之处。

4 成果验收

4.1 验收准备

接包方将待验收的工作成果准备好,并将必要的材料提前交给外包管理小组。外包管理小组慎重地组织验收人员。双方确定验收的时间、地点、参加人员等。

4.2 成果审查

验收人员审查接包方应当交付的成果,如代码、文档,等等,确保这些成果是完整的并且是正确的。验收人员将审查结果记录在《外包合同验收报告》之中。

4.3 验收测试

验收人员对待交付的产品进行全面的测试,确保产品符合需求。验收人员将测试结果记录在《外包合同验收报告》之中。

4.4 问题处理

如果验收人员在审查与测试时发现工作成果存在缺陷,则外包管理小组应当视问题的严重性与接包方协商,给出合适的处理措施并记录在《外包合同验收报告》之中。

如果工作成果存在严重的缺陷,则退回给接包方。接包方应当给出纠正缺陷的措施,双方协商第二次验收的时间。给发包方带来损失的,应当依据合同对接包方做出相应的处罚。

如果工作成果存在一些轻微的缺陷,则接包方应当给出纠正缺陷的措施,双方协商是否需要第二次验收。

4.5 成果交付

当所有的工作成果都通过验收后,接包方将其交付给外包管理小组。双方的责任人签字认可。外包管理员通知本机构的财务人员,将合同余款支付给接包方。

外包项目和传统项目的异同点

1 项目干系人更加复杂

作为一般公司的产品而言,投资商或者说发起人以及最终用户是主要的项目干系人,而在外包项目中,发包方成为最核心的干系人,原来的客户变成了接包方客户的客户,从而根本上增加了项目干系人的复杂性,各干系人的期望更加复杂,自然项目让主要干系人满意的难度会自然增大。

2 全球协作,沟通难度增大

软件外包项目往往最常见的发包方和接包方分别位于世界的不同角落,是真正意义上的全球协作,沟通的渠道繁杂而且障碍较多,比如时差,文化差异,法律政治因素,语言障碍等等,使得项目干系人之间的沟通变得复杂而且困难。而且往往是多个地区进行同步开发和测试,协调的难度可想而知。

3 对团队成员要求更高

软件外包项目对项目参与人员提出了更高要求,首先是需要团队成员熟悉外包概念和流程,明白自己所处的位置跟一般项目有所不同;其次对参与的团队成员本身的素质和技能有了更高的要求,最显而易见的是外语能力的要求,对客户所在国家和区域的文化要有了解,需要对客户习惯的一些沟通方式和思维习惯了如指掌,才可以保证沟通的顺畅和有效性。

4 客户对项目监控力度增大

发包方深知项目外包以后,对质量和进度的控制比原有的风险大大加大,所以在项目的各个方面也加大了监督和控制,使项目按照既定的质量和进度进展下去,一些比较重要的和规模较大的项目甚至派专人进行监督。

5 变更流程更复杂

变更在项目进展过程中是不可避免的,或大或小,或多或少。但是与非外包项目相比,变更流程更加复杂,变更成本自然上升,从而导致总成本上升。

6 较本地项目,成本上升

众所周知,发包方将软件项目外包的动力之一就是降低成本,从而提高盈利能力。但是必不可少的会增加了外包管理成本,如果控制不当可能并不能节省多少成本,当然这种可能性微乎其微;从接包方来看,较本地软件项目,也会有额外的成本增加,比如差旅费用,培训费用,对一些短期项目而言,设备投入也是很可观的费用开支。

控制大中型外包项目的进度与质量

1.完善流程,持续过程改进

流程建设在全球协作分工的大环境下显得越来越重要。无论是传统的工业界,还是软件,物流等新兴行业,完善的流程体系都被认为是必不可少的提高生产率和质量的有力保障。在软件外包行业也一样,清晰完善的流程都是必不可少的制度化保障措施之一。对于发包方而言,完整的流程定义有助于更好地监控外包项目的执行过程,识别出最佳合作伙伴;对于接包方而言,流程是否完善得体,已经成为考察外包服务提供商是否具备相应资格和能力的重要标准和参数之一。出了要完善流程,过程的持续改进也是极其重要的。惟其如此,才能使流程越来越贴近项目现实环境,越来越能指导实际的工程实践。

2.应用相关质量控制体系

众所周知,欧美国家应用最为广泛的软件质量体系是CMMI;此外,还有诸如ISO、6δ之类的质量标准体系。目前CMMI等级往往成为欧美国家考察接包方资质的一项重要指标。为了能参与欧美项目,与先进软件企业共谋发展,在亚洲,如在印度,CMMI质量体系认证工作成绩斐然,有大批的软件行业,尤其是软件外包行业都已经取得CMMI质量体系的评估和认证,而我国国内的意识和参评企业仍然不多,不过可喜的是越来越多的软件企业已经开始认识到质量体系建设的重要性:一致的质量体系,能为合作双方提供共同的语言和统一的交流平台,有利参与全球合作,谋求更大发展。不少企业在认识基础上还迈出了可贵的实践步伐,收获喜人。

3.推行项目化管理

项目管理知识是近几十年来在欧美兴起的全新的知识领域,其中最著名的是美国项目管理协会推出的PMBOK知识体系和欧洲项目管理协会推出的国际化项目管理体系。两者皆推出了享誉全球的项目管理认证,即著名的PMP和IPMP。项目管理是如此风靡全球,以至于激进的项目管理专家甚至认为,事无大小,皆可以项目的方式去运作,即“事事皆项目”。在软件外包领域,项目管理的概念更是早已经深入人心:软件行业的特点非常适合于以项目的形式去运作;项目管理理论对软件外包各个流程和具体的实施都提供了良好的指导思想。同时,跟质量控制体系一样,项目管理理论和体系同样为该行业的从业人员的和企业提供了一种共同语言,使得沟通更加专业和顺畅。

4.加强风险监控

风险在软件外包行业的存在是显而易见的,无论是发包方还是接包方,在获得高收益的同时,都不得不去接受高风险的挑战。对发包方而言,接包方的各方面能力的不足是最直接的风险,同时接包方的任何风险,都有可能是发包方的间接风险。发包方在风险监控方面不惜投入巨大财力物力和人力,以减轻和规避可能存在的风险和问题对软件项目造成的影响。而在接包方,风险同样无处不在,人力、技术、工期、变更,成本、竞争等等随时都会对项目的按时保质保量完工形成挑战,这正是各方项目管理人员的关注所在。

5.积极有效沟通和交流

外包项目实施过程中,发包方和接包方应该按照项目实施前约定的交流方式进行有效交流和沟通,包括但不限于项目电话会议、电子邮件、即时聊天等。通过交流,彼此了解当前项目的进度,遇到的问题和可能的解决方式。为了更有效交流,通常采用“单点联系”的方式,即发包方和接包方指定惟一的项目联系人,确保整体进度和信息共享,降低多点联系带来的额外成本和信息混乱。

流程运转的过程中需要注意的问题

1.文化差异

文化差异在全球合作中的作用是非常明显的,而且不止是在软件外包领域,即使在传统的国际合作领域也同样重要。任何发包方和接包方在进行任何跨文明和跨地区协作时,都必须首先考虑地域差异和文化差异,这是国际合作能否取得成功的先期条件。我们不妨就时下比较流行的一个词“郁闷”来看国际间的文化差异,在我们国内,郁闷一词反应的情绪无非是不舒畅,不顺心的意思,如果你对别人讲你比较郁闷,可能没有人当回事儿;但是如果你在欧美环境下,向别人抱怨说你比较“郁闷”,那对方可能会很紧张,会建议你去看心理医生,由此可见,文化差异之大,是我们在软件行也不得不考虑的问题。在软件外包行业,在某些时候进行适当的换位思考是非常有帮助的思维方式,可能会带来意想不到的效果。

2.语言障碍

鉴于多年来的国内高等教育的弊端,国内从业人员的外语能力,尤其是听说能力在整体上已经远远不能满足行业对人员基本素质的要求,这可能会成为中国软件外包行业最常见的诟病之一。当然,并不是说只有我们才有这样的不足,这是任何涉及到语言差异的地区和民族在进行对外交流是必须克服的障碍。在软件外包行业尤为明显,软件外包合作中,通常是各地同时协同工作,各处的人操着不通的语言去解决相对复杂的技术问题,其重要性不言而喻。接包方在人员招募和团队组建时必需把外语能力和计算机能力提到同等重要的水平,两者都是软件外包行业对从业人员的最基本要求。

3.新风险引入

软件外包对发包方而言,将软件项目外包减轻成本压力和规避某些风险的同时,必然会引进新的风险,这是个无可回避的现实,一旦决定将部分业务外包,对项目风险的监控变成了工作的重中之重。

4.机密问题

由于西方国家在法律体系方面相对比较完善,知识产权在一些发达国家得到良好的保护,知识产权给企业带来的丰厚回报,最明显的例子莫过于高通,手持CDMA的大批专利,为公司应得的丰厚利润。所以,发包公司对知识产权的重视程度都非常高,保护也相当重视,担心机密技术资料外泄而不敢把一些核心机密的业务外包。这也是我们在承接国外客户的软件外包项目需要注意的重要内容。从接包方而言,必需做好客户机密信息的有效保护,才能应得客户的信任和长。

5.法律风险/政治因素

法律风险和政治因素是任何全球协作公司必需要考虑的问题之一。欧美法系和大陆法系的差异相对比较明显,任何设计合同契约等法律文件时,其间的法律差异必需被充分考虑和得到尊重。政治方面,大家比较熟悉的应该是发包方企业的工会和劳工组织对外包造成的工作机会转移,导致发包方本地劳动力的就业受到影响。有些发包方国家的政府甚至还通过某些法案来对工作外包施加影响。另外,接包方所在国家的社会和政治的稳定性也是值得考虑的方面。

6.隐含成本问题必需考虑在内

对发包方而言,将工作外包的主要动力可能最常见的就是削减成本,但是我们不得不考虑到外包在降低成本的同时,在某些方面引入了新的成本,甚至有些新引入成本是隐含的,或者是不可精确估计的。比如外包管理成本就是直接的新引入成本,而由于裁员和远程控制带来的隐性损失和机会成本等。

7.客户满意度是生存之本

客户在项目中的地位是没有人怀疑的,外包项目也一样。衡量项目成功与否的重要标准之一是客户满意。如何提高客户满意度必定是项目管理人员的核心工作。发包方为了规避风险,往往会把鸡蛋放到几个篮子里,总是在几个外包服务提供商之间去平衡。如何跟客户维持良好的合作关系,建立长期稳固的合作是接包方的生存之本,做大做强做长久的基础。

8.时差和节假日问题

时差问题是经济全球化必需面临的挑战之一,如何让全球协作的软件开发团队很好的配合,双方甚至多方都能够相对愉快的共事必需加以考虑和安排。另外,各个国家的法定节假日不同,在安排外包项目进度时需要考虑接包方的节假日。

9.注重流程建设和应用

总体上,国内在软件工程和质量体系方面的流程建设上的落后状况是不容置疑的,当然不排除有些企业已经建立了相对完善的流程和质量体系,但绝大多数的数量庞大的小型外包公司在流程建设方面亟需建设和完善。流程建设和质量保证体系已经成为规模化软件外包服务提供商的当务之急和必备硬件条件。软件外包行业从接包方来看,是典型的规模经济商务模式,但是对规模经济的管理必需有着完善的流程和质量控制体系,并得到很好的贯彻实施。

10.人才困局和人才培养

软件外包行业的人才之痛频频见诸于媒体,人才困乏已经成为我国软件外包行业的瓶颈。很多软件外包服务提供商的招聘经理为之头疼。其实我们并不缺少人才储备,而是缺少具备良好基础又有专业技能的合格工程师,目前市场上最为紧缺的是合适的资历丰富的高级工程师和具备国际项目管理能力的项目经理。

如何破解软件外包企业的人才困局呢?我们认为可以从以下几个方面着手:

  • 首先是企业自身培养适合的人才,但是必需考虑去尽量避免成为别的外包公司的人才培养基地,必需与员工的职业生涯相结合,并提供良好的员工发展空间;
  • 教育系统应大力推广实用型专业软件工程和软件外包方面的人才的培养,不是纯粹空洞的理论教学,而是符合企业需求的实用型软件人才;
  • 社会职业培训机构的作用必需强化和改进。目前很多培训机构的运作商业化目的更重,培训出来的工程师并不受欢迎,甚至被软件外包企业列入黑名单的也不是没有。不过可喜的是,越来越多的人在开始关注软件外包行业的人才短缺,并开始着手去推动外包行业人才培训的健康发展。

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织