一、开发合同特点
大家都知道做IT的收入高,但是,作为企业纯做软件开发并不容易,只能尽量去做产品或者平台。不容易的原因是软件开发过程的不可控因素太多,技术、人员、时间、市场等,开发的风险非常大。为了规避风险,采用外包的方式往往是一种选择,能快速将产品做出来。但是外包也有外包的风险,交期和质量非常难以把控。外包开发不同于一般的买卖合同,区别在于:
1)交付标的是智力成果,非特定形状物;
2)标的未完成,存在技术的不确定性;
3)标的质量不容易定量,存在模糊空间;
4)开发工作是交互行为,不是单方行为。
因此,软件外包除一般的收付款纠纷外,普遍就是交付延期和交付质量问题,其中延期普遍到不延期就不正常的地步。软件外包的成功率不高的原因,大部分是把其当作一般购销合同,过程控制不严谨。我们可以把软件外包比喻为同居代孕,需要共同生活一段时间,最后生出一个健康的孩子。要达到这个目的,需要做好以下几方面的工作:
1)谨慎选择合作对象;
2)拟定好合同;
3)加强过程管控;
4)把握好交付环节。
二、主体资格--看对象
代孕不是随便找个人就可以的,长相、人品、学历、健康状况、对方的给付能力都是要考虑的。
作为委托方,首先要确定对方做过类似的项目或者有完成该项目的能力,这点非常重要,否则你不如自己招聘人员开发。需要对对方做过的项目进行调查和评估,不能轻信口头承诺。同时,要确认是个人还是公司,如果是个人,就特别需要防止中途撂挑子的行为,需要确定其工作地点、联系方式和送达方式。我们做过其他如收购之类的项目,合作之初,一方通常会对相对方做尽职调查,软件开发这种情况比较少,但是知根知底还是必要的。
作为开发方,如果对这个项目没有把握,时限又不是很充裕的话,建议不要接,很多项目看起来简单,实际很复杂,想拿个模板往上套,但是客户不一定接受,结果收个首期款,惹来一身骚。如果评估确认可以做,也需要对对方进行反向调查。
三、开发合同拟定--代孕协议
对象看好了,就需要有个协议,明确各自的职责,生男孩给多少,女孩给多少,都需要事先说清楚。一份好的开发合同的原则应该是‘同舟共济’,至少是在同居期间。1)应尽量避免强势条款,心不甘情不愿的,孩子也不会健康2)应设定合理的费用和时间。生个小孩必须十个月,急也急不出来,营养健身体检等费用也不能少3)应明确双方的职责,单方面是生不出小孩的4)应将合同划分为不同的阶段,怀孕、定期孕检、生产、月子每个阶段做什么,要有计划。
一份完整的软件开发合同应包含以下内容:
1)合同名称;
2)合同主体;
3)项目名称;
4)项目实现功能(需求);
5)开发时间及开发进度
6)合同金额;
7)付款方式;
8)交付内容;
9)验收方式;
10)开发过程的权利和义务;
11)培训;
12)质保维护;
13)违约责任;
14)合同变更方式;
15)合同的解除;
16)著作权归属;
17)保密条款;
18)不可抗力;
19)争议解决方式;
20)合同附件;
21)转包或分包允许;
1.合同主体。如果是个人,一定要写上身份证号码,以及能确认送达的地址和电话,并附上身份证复印件。
2.需求条款。需求条款是开发合同中最重要的部分,是对合同目的的描述。需求分为三种方式:1)在主合同中列明(过于简单、不建议)。2)将需求作为合同附件;3)签完合同后调研再出需求确认书。需求越潦草,纠纷概率越高,这一点双方都要重视。有些需求书写着参考某某软件,虽然省事,但是非常不严谨。这种情况,乙方应将某某软件的功能一一列出,让甲方确认。
3.开发时间和进度。有些开发合同只约定了整体开发时间,例如说3个月或6个月。建议在合同中明确每个阶段(需求分析、系统设计、数据库设计、UI设计、编码、测试等)的完成时间、完成内容以及双方需要配合的工作。开发计划可以作为合同附件
4.交付内容。完整的文档应该包括设计文档、数据库文档、外部接口文件、操作手册、源代码、执行程序、测试报告、第三方的软件等,合同中要一一列明。如采用了第三方的软件,应注明是否存在费用支付和知识产权的问题。
5.验收方式。建议是在合同中约定由甲方在几日内提供测试数据,作为双方验收的输入内容。这样验收标准明确,而且,乙方也能以此数据为基准进行开发。
6.知识产权部分。如果没有约定著作权归属,按法律规定,著作权是归属于开发方的。另外,如果没有约定,开发时的侵权责任应由开发方承担,实际运行(操作系统及数据库系统)的侵权责任由运营方承担。双方要清楚可能存在的侵权风险及责任承担方式,这是很多开发合同忽略的。
7.保密协议。这部分需要进行约定,才能在违反协议时追究责任。保密内容主要是项目相关和商业机密。保密协议要约定保密的范围、方式、期限等,可以要求乙方与相关人员签订保密协议。保密协议可以作为合同附件。
8.违约条款。合同有个定金双倍返还的规定,但软件开发合同的首笔付款一般会认定为合同预付款,而不是定金。违约金部分,不是约定越高越好,太高是不会被支持的。特别需要注意的是,应注明由合同纠纷的维权费用由败诉方承担。如果没有上面的约定,赢了官司,律师费取证费等还是得自己出。
9.争议解决条款。双方可以约定通过仲裁或诉讼来解决纠纷。要注意的是如果选择了仲裁条款,仲裁机构名称必须相符,否则就会无效。如果选择法院,可以在合同中约定起诉的法院,如果没有约定,被告所在地、合同签订地、履行地都有管辖权,变数就会比较多。
四、开发过程管控----定期孕检
签了代孕协议,就要开始准备生小孩,各自做自己该做的事。同时,怀上了没、健康状况、有没有流产征兆都需要定期监控,不能光等着接小孩,否则,小孩是不是你的都很难说。对于需求部分,一旦确认就不要轻易变更,这是软件开发的大忌,也是纠纷的一大源头。需求的变更意外着合同的变更,原有的相关条款即随即会受到影响,包括交期、费用等。如果确有变更需求的必要,一定要有书面的文件,得到双方的确认,并说明费用及对交付时间的影响,实际上相当于签订补充合同。
前面说过,软件开发是交互过程,不是单方履约行为。将合同履行分为不同阶段,且甲方要参与开发过程,定期检查开发的进展,对每个里程碑进行确认。每个阶段的确认,可以作为乙方收款和验收的依据。即使合同最后没有完成,如果有阶段性工作的确认,法官一般也会给予认可。
如果出现未预计的技术风险,以及可能的交付延期,乙方应及时通知甲方,并取得甲方的书面同意。双方如果发现合同目的不能实现或延期不在甲方接受范围内,不要死撑,应及时终止合同,避免损失扩大。终止合同一定要采用书面方式,且就后续事项进行调解。
五、交付管控----接生
生完小孩就是交接,是否需要母亲哺乳(服务)双方可以另签协议,首先要保证交付的小孩健康,手脚五官齐全,必要时进行DNA检测。
很多软件交付是稀里糊涂的,没有正式的手续,连自己都说不清楚交付日期和版本。这样要么是糊弄,要么是不严谨。软件开发合同的交付应逐项核对需求书的内容,双方签字确认。交付方式可以是邮件、即时通讯和介质交付,但是每一种都必须有相应的确认,并且可以再次获取。比较正式的交付方式是验收会议,当场对软件进行签字确认。
最终的交付尽量刻录为光盘,作为证据保存。如果涉及源代码的交付,一定要确认是最后完整版本且编译出来的结果与目标文件一致,这里面很多猫腻。交付时,如果系统中使用了第三方软件,应该列表声明并说明其著作权,及是否存在使用费用,例如一个APP用的是第三方通讯,后续就会存在费用的问题,须在交付时说明。另外还需要注意交付的版本中是否存在时间锁。
诉讼中有时会涉及到软件当庭演示的问题,演示将会以最终交付版本为基础,所以交付的最终版本(包括源代码)一定要留存并刻录为光盘,有些程序是写固定IP的,租用的服务器最好不要变来变去。
六、诉讼与证据
如果不孕或流产,就需要双方的体检证明、孕检资料等区分清楚到底是谁的责任。
相对来说,软件开发在整个法院中的诉讼比例很低,而且撤诉比例非常高。主要是大家很清楚故意违约的还是少数,技术开发有一定的风险,管理也有不可控因素。但是,有时诉讼是避无可避的。一旦进入诉讼程序,焦点就只有两个词:事实和法律。法律部分,目前依据的主要是《合同法》,没有关于软件开发的专门法律,但知识产权法庭和一般民事法庭的法官对软件开发的认识不尽相同。
事实部分,就是双方提交的证据。在诉讼中可以作为证据的有合同原件、往来的邮件、聊天记录、交付的各种软件版本、文件、测试记录等。不要轻易去删除业务聊天记录和邮件,而且这些电子证据必须是使用第三方平台才会有效。特别需要说明的是,关于需求变更,如果没有书面证据,就可能被认定为自愿履行,不能作为延期抗辩和增加费用的理由。
七、防患于未然
如果发生开发合同纠纷,建议首先还是要沟通和调解,其次是发律师函,最后才是诉讼,不要轻易起诉。IT公司的时间都很宝贵,法院一个案件半年甚至更长时间才能判下来。到了诉讼阶段,实际上是两败俱伤,没有赢家。作为企业,尽量避免打官司,把风险防范和控制放在第一位。这就需要未雨绸缪,防患于未然。如果能真正做好上面四个环节,相信能提高开发合同的成功率和回款率,并大幅降低开发风险。