外包中的甲方乙方

时间:2022-08-23 11:59:11

外包中的甲方乙方

大家都看过冯小刚拍的《甲方乙方》,电影讲述的是作为圆梦公司的乙方为了满足甲方的梦想,挖空心思去实现甲方梦想的荒诞喜剧故事。而在软件行业中,作为软件外包业务的甲乙方的“故事”和策略又有哪些呢?如何去保证最后的双赢结果呢?

发包方如果要发包,通常需要做哪些考虑;发包方期望承包方具备哪些方面的能力呢?想要了解这些方面的内容,我们还应该对外包本身的一些知识进行充分的了解,下边我们就来一起分析一下。

软件外包基本概念

什么是外包?抛开外包的定义不谈,我们来看一下外包的目的,其实外包的主要目的就是为了解决暂时人力资源不足,或者为了降低开发成本的一种软件开发的手段。外包的甲乙双方包括发包方和承包方,国内的企业做的比较多是承包方。我们都曾经听到过“软件蓝领”的概念,从这一点来看,国外企业之所以将软件外包给我们,主要看中的就是中国劳动力成本比较低,通过外包的形式可以节约国外企业的开发成本。

发包方对承包商的要求

首先,我们来看一下发包方发包时的考虑。一般而言,发包商关心的主要是承包方人员的水平、进度控制能力、质量保证能力等,简而言之,就是承包方如期交付合格的产品的能力。

为了考核承包方人员的技术水平,发包方会比较注重承包方以往的成功案例,在相关行业的经验丰富程度,还有就是项目组成员的实际水平。所以一般在选择承包商时,都是选择那些经验丰富、有成功案例的承包方。同时为了了解承包方项目组成员的实际水平,有些发包方还会对承包方项目组成员进行面试。因此对于承包方来讲,要成功地承接项目,除了准备商业资质以外,以前的成功案例、丰富的行业经验、较高能力的开发人员都是必不可少的。

那么发包方对承包方的一般要求,以及发包方期望承包方具备的能力有哪些呢?我们还是应该从发包方的关注点出发。除了上边谈到的人员技术水平外,发包方比较关心承包商对产品质量和进度的控制能力,希望承包商能够按时、按质开发出产品。而对于承包商而言,要想做到这一点,除了承包商自己的质量进度控制能力以外,对发包方也应该有一定的要求。共同的目标需要双方共同完成,如果承包方一方努力,而另一方并没有做好支持、配合工作,也是不能实现目标的。

以编码外包为例。发包商首先需要提供比较详细的、模块化的设计文档,以便让承包方拿到设计文档就可以编写出符合条件的代码来。如果设计文档不清晰,描述语言存在二义性,再加上沟通如果不充分的话,承包方开发出来的代码极有可能并不是发包方所需要的。

因此为了减少这方面的风险,发包方前期的需求设计必须要到位。这一点国外的外包企业做得就很好,他们的设计文档写的非常详细,函数的名称、参数和要实现的功能都写得一清二楚,承包方需要做的就是根据设计文档的要求,添加满足条件的代码,根本不需要关心函数或者模块之间的接口问题,也不需要知道整个项目最终开发出来的到底是个什么样的产品。所以国内的企业如果想将代码外包出去,提高自己的需求和设计水平是非常必要的。

综上所述,承包方在拿到一个项目以后,不要急于去分配任务、编写代码,先要确定发包方提供的资料是否齐全,设计文档是否清晰,是否存在不确定性,描述语言是否存在二义性等等,在开始进行开发之前,将不确定因素消除。

解决了设计文档的问题之后,承包方必须做好开发产品的质量和进度控制,开发出来的代码质量必须满足发包方的要求,而且需要根据合同的约定进行进度控制。这就要求承包方必须提高项目管理水平和质量控制水平。我们都有这样的体会,有经验的程序员开发出来的代码bug比较少,扩展性、效率都很高,而经验比较少的程序员开发出来的代码,问题就相对比较多,这就需要承包方对代码质量进行控制。控制代码质量的方法一般采用代码走查和单元测试。代码走查每天都应该进行,不要等代码开发完成后再进行走查,那时候发现问题为时已晚。要控制进度,除了需要承包方项目经理有比较高的管理能力外,还需要采用周报、项目进度状态报告等形式进行跟踪和控制,以及注意里程碑等关键点的监控。

为了按时按质地完成项目开发任务,承包方还应该控制好需求的变更。这需要发包方配合来完成。我们都知道,需求的变更会引起设计的变更,设计的变更会引起代码的变更,而代码的变更有可能就是整个系统推倒重来,因此需求变更是影响外包开发进度的非常重要的因素,控制好需求变更也就是必须要考虑的问题了。作为承包商,可以在合同里约定需求变更的次数,或者在每次需求变更时,将需求变更产品的工作量的影响写出来,并对变更后的开发进度重新进行调整,还需要双方进行签字确认。

不可或缺的沟通

为了保证开发质量和进度,承包方积极主动的沟通也是非常重要的。沟通是被很多人忽视的,还有很多人甚至觉得沟通并不重要,“我只要做好自己的事情就可以了”。而实际上,如果沟通不充分的话,是做不好自己的份内工作的。

沟通的目的是及时发现问题,及时解决问题,从而最大限度地减少或者消除问题带来的风险。沟通包括两个方面,一个是双方之间的沟通,一个是承包方内部的沟通。

首先看一下双方的沟通,尽管在开发初期承包方已经对设计文档进行了一次筛查,但还是会存在一些问题,当这些问题发生的时候承包方开发人员一定要与发包方设计人员进行充分地沟通,充分理解设计人员的真正意图。再好的文档也是不可能完全替代沟通的,沟通不充分的后果就是代码返工、进度拖延,因此沟通在整个开发过程中发挥着举足轻重的作用。发包方必要时应该派设计人员长期驻留在承包方那里,随时与承包方开发人员进行充分地沟通,只有这样才能及时地发现问题,及时的将这些问题解决掉,从而减少问题带来的影响。避免代码返工、进度拖延,设计文档的沟通应该有即时性的特点,不能等到例会或者其它约定的时间再进行沟通。

除了对设计文档的充分沟通外,双方还应该对质量和进度进行充分的沟通。除了周报等文档化的形式,更多的是需要面对面的沟通,双方需要确定例会的时间和频率等等,不管采用何种沟通方式和沟通频率,最终要达到的目标就是甲乙双方都应该对项目的实际状态了如指掌。只有进行充分的沟通,才能够及时发现问题,从而及时地解决问题,减少问题的负面影响,因此项目组内部的沟通也是非常重要的。

质量先行的口碑效应

在印度外包公司中,非常重视开发流程。甚至提出流程重于项目。好的流程积淀,带来了质量规范上的精益求精。听说国内某著名通讯公司的流程规范就是起源于其在印度的研究所。外包团队配备专职QA,QA独立于研发和测试部门,专门检查研发团队和测试团队的流程是不是按照既定流程走,如果QA觉得流程没有切实遵照会直接上报高层,项目就会暂且停止而整改。外包团队的PM,只负责制定开发计划、监控开发进度、负责协调各外包干系人的关系,很少涉及具体技术,更多的时间要填写各种表格。

印度外包企业宣称所有可输出物都有文档。而详细设计文档要求只需要这个文档就可以进行编码。一般软件开发工程师写文档时间占了60%,编码时间极少。这也是印度软件外包企业不会因为人员变动而产生软件开发质量和进度上不稳定的问题,人员犹如总线BUS上的插件,随时可以即插即用。外包团队中有各种详细的项目组内和项目组之间的review 同行评审活动。

笔者曾经接触过一个印度外包软件公司的项目计划,WBS(工作分解结构)非常详细,可以精确估算到小时级别。这也是好多印度外包企业做到CMM/CMMI 4已定量级的明证,有大量的历史项目数据积累并运用到了项目估算中。

很多印度外包软件公司通过比较领先独到的软件开发模式,质量先行的口碑效应,在2~3年前就已做到上述提到的事项。因此虽然印度内需寥寥,但软件外包订单这为印度软件业带来了喷薄发展的良机。

知己知彼,百战不殆,只有充分了解对方,才能够做好充分的准备,有的放矢,要想做好外包,承包方除了做好自己份内的事情,还应该注意需要发包方配合来完成的工作,只有外包甲乙双方的共同努力才能够达到共同的目标。

上一篇:绩效基准对比是强心剂 下一篇:协同开发能否走出创新路?