来源: 作者: 日期:10-01-24
电子化时代的许多经营活动需要借助信息系统管理,因此软件外包现象越来越普遍。在软件外包过程中,发包方似乎处于主动位置,可以决定是否和如何外包,哪些内容需要外包,并可以自主选择合适的承包方。但是,企业经营活动高度复杂,风险无处不在。软件外包作为软件生产的新方式同样存在各种风险,现实中有不少发包企业在实施外包项目后发现问题丛生,最终导致外包项目流产。存在风险并不可怕,可怕的是缺少风险意识和规避风险的手段。其实,通过仔细分析风险的来源和特征,在软件外包的全过程实行动态和连续跟踪和控制,可以防患于未然,有效规避软件外包风险。
一、项目前期准备阶段
(一)前期调研阶段。本阶段主要从事三方面工作
(1)审视自身的履约能力根据公司的发展目标,判断该项目外包是否符合公司发展的主要方向,公司有否必要为此项目增加新投资、添置新设备、招聘新员工,如果有此必要,公司有没有足够的能力和充裕的时间去实现这些新的投入。
(2)审核承包方的缔约资格,判断其是否有缔约权利能力和履约行为能力。寻找合适的外包合作伙伴,验证和调查公司的实际资质和开发团队的实力,有必要进行实地考察。具体包括承包方办公场所(自有/租赁)以及周围办公环境、办公环境的装修、营业面积大小、管理是否规范、人员精神风貌、开发人员数量、技术水平、男女性别比例等。尤其注意了解开发方是否设置专门的测试员岗位。此外,要注意掌握承包方的开发实例。如有必要,还需要对承包方开展信用调查,包括查看营业执照复印件,企业经营历史,企业涉讼情况,违法记录,业内口碑,主要负责人以及股东的情况。
(3)制定资信考察报告书。
(二)制作项目需求。
在项目立项初期,发包方首先要做好内部的时间进度设计和规划以及一套完整的软件系统规格说明。其中,项目进度的估算尤为重要,要避免项目发生延误,计划中要预留足够的双方沟通和确认的时间。
二、与承包方谈判、磋商阶段(与前一阶段可合二为一)
此阶段的全过程中始终不能忘记对于双方利益共同点和利益冲突线要具备清晰的认识和全面的了解;准确预测双方可能的妥协程度;对于法律法规的相关规定和本合同可能涉及的第三人利益界限有熟练的掌握和冷静的恪守。
1.发包方发出邀约邀请,将项目的时间进度设计和规划以及功能需求提交给承包方,承包方据此提交投标书,包括详细规划方案。
2.发包方收到承包方提交的项目计划后,要详细地跟本企业的计划进行比对和审核,从而了解承包方对整个项目的流程、内容、估计的工作量和资源的安排是否与项目本身的要求吻合。明显的差异需要及时澄清并建立共识。双方要将其记录入书面文档。
3.确定合作意向后,要求承包方出具详细的进度实施方案和系统整体评估方案,并对此方案进行评审和确认,旨在双方都能明确地了解项目的整体任务量和难度,做好人力物力的合理安排,避免不必要的麻烦,此过程的文档应留存备查。
4.承包方的核心参与人要书面提交对发包项目的说明报告,由发包方判断承包方是否理解发包项目的意图,了解外包项目开发人员的思路是否和设计相符。
5.项目开始前,须做足够的分析和风险评估,对可能出现的风险设计避免的方法,预先设计好替代方案,甚至外包团队都应有替代人选。
三、合同签约阶段
外包合同应明确如下内容
1.明确双方项目组沟通成员名单及其联系方式,承包方须提供所有参与人的名单及联系方式、邮件地址等。
2.明确约定开发方必须遵照发包方的需求设计文档进行开发,在开发过程中,如果出现发包方设计不周或是不合理的地方,开发方须提出问题及修改方案,必须经发包方确认后才能进行修改,并且这些修改需要记录入文档。
3、明确约定承包方项目负责人首先需要做出一个详细的、完整的项目计划,并在计划中详细地列清楚每一项工作需要哪方面人力共同执行。
4.明确约定每一个项目进度都需要发包方确认后才能继续进行。如果发包方认为有问题并提出修改意见,承包方须根据发包方意见提出书面解决方案,经过发包方确认后进行修改,如果推后时间再修改,须征得发包方同意。例如承包方在完成系统分析后,需要把分析的结果让发包方理解,确认承包方对整个系统的理解和分析与企业本身对项目的需求和分析达成一致,这样才能让承包方进行其后的模块设计。
5.明确约定项目过程中的进度汇报方式,有必要时时监控源代码,了解项目的进展情况,分阶段提交项目成果,有必要让承包方进行阶段性成果演示。如果承包方不能按时提交项目成果,须提前向发包方提出申请,且须取得发包方同意。
6.承包方每日将开发的源代码及设计说明书上传至CVS服务器上,承包方项目工作人员需每日将工作情况以日报形式上传至该CVS服务器。由发包方于第二天上午进行检查,并向承包方提出书面反馈意见。
7.每一个程序模块完成后,承包方须提交测试方案与测试结果。承包方应把有关程序的源代码列出,并把有关测试的结果打印出来,让发包方核对结果,确认承包方所说的工作已经完成。如果承包方没有列出源代码,发包方有权不予项目验收。
8.建立几个大的项目里程碑。约定在大的里程碑内发生的项目延误由承包方自我消化,大的里程碑点发生的项目延误将由双方商讨处理。
9.明确约定项目验收期限、验收内容(项目不同阶段开发方须提交的详细文档列表、提交日期、负责人及质量要求、验收成果中必须包含测试报告及测试结果)、验收方法以及双方验收小组成员(必要时需要承包方参与验收)。
10.验收报告须双方签字确认才能生效。
11.明确约定项目完成提交时需要提交的完整的交付物,其中源码作为重要,而且源码须符合规范。
12.明确约定试运行时间段以及承包方在试运行期间应尽的责任,如果发生的错误是需求内的,承包方须无条件修正,并重新验收。
13.对于发包方合理的需求调整,在工作量的一定百分比之内,承包方应当同意。如果超过此百分比,双方协商一致解决。未能协商一致的,按照原方案执行。
14.明确约定承包方负责本项目的关键人物不能临时更换。应争取让承包方项目主要负责人要做出承诺,坚持到最后。
15.如果发包方处于优势谈判地位,应约定较低的首付款,可以采取低首付,多次数的支付方式。
16.明确约定违约(预期违约、一般违约、严重违约)的责任承担和赔偿以及不可抗力或情势变更的风险承担方式和原则。
17.明确约定合同自承包方提供经双方确认后的详细需求文档时生效。
18.明确约定合同的变更、权利义务转让以及终止(对方主动终止和发包方主动终止合同)条款。
19.明确约定合同争议处理条款。
四、项目实施阶段
1.项目开发过程中应开展有效的沟通,以便及时解决开发过程中发现的结构或设计方面存在的问题。必要时安排一对一的沟通方式,即承包方的开发人员直接和发包方的具体负责人联系沟通,减少中间的传递环节,减少传递出错的几率。每项重要的沟通须记录入文档并经过双方确认。
2.有效地跟踪掌控开发情况。发包方需掌握承包方每个开发人员的开发状态和进度,及时发现和应对任何突发状况。项目中发现的任何和设计不符的地方或其他问题要及时沟通和解决,避免将问题推到项目结束后。在开发的过程中,验收也同时进行,而不应等待开发完成后才进行验收,即要分段进行阶段性验收。
3.项目第一次延期就应该介入解决。开发过程中要作严格控制,避免承包方散漫和懈怠。如果是发包方的原因导致项目延误,发包方要补足承包方时间并形成书面的确认文件。
4.验收时应严格按验收报告内容进行。按照合同约定时间进行密集型测试和验收,出现验收不合格的情况,要及时进行协商和处理,时间要尽量控制到最小范围。
5.发包方付款事项须与对方配对,在不存在对方履行义务在先的情况下,发包方须按时付款。
6.发包方须根据对方提出的项目进度表,制定发包方项目管理进度表。由项目组组长负责定期对工作计划跟踪并督促执行。完成项目工作日志,对工作进展定期汇总,汇报。
项目组成员须妥善保管来往记录、邮件、变更确认单等。
成功的软件外包是发包方和承包方互相信任、高度协作的结果。发包方软件企业需要合理外包决策,细化和筛选可以外包的内容,确定具体的外包实现方式,选择合适的承包方,规范外包的实施流程,积极地进行外包项目管理,实现全方位、全过程地监控外包过程,才能将软件外包风险降到最低。