一、需求分析与功能清单
这可以说是整篇合同中,最重要的部分,所以放在最前面。功能清单里,也可以 很多当事人,只是把想法告诉了开发团队,期望他人根据他的需求来开发。殊不知,这种描述太过于概括,而且开发周期无法固定,因此很容易产生纠纷。
所解决的问题:

(1)工作对比
(2)任务排期和分割
(3)计算工时和安排预算
这里最重要的还是工作对比,尤其是后期双方发生了争议的时候,审判人员往往是根据你们的功能表来要求双方优先进行比对。
建议:针对功能,先做一个思维导图,由大到小切割功能模块。
|----- 商城系统 |------- 电商模块 ------| | |----- 用户购物车管理系统 社区电商 | | | |----- 登录、授权、分享 |------- 社区模块 ------| |----- 留言、论坛、评论、点赞等功能
二、一定要有技术文档
无论是自有的开发团队,还是外包的团队,一定要要求开发团队在开发的时候,要留下技术文档。目的是什么呢,主要是为了今后自己团队在接手的时候,或者技术人员离岗新人员接手的时候,可以快速的上手,避免被人技术挟持。
技术文档中需要有哪些内容呢:
1)主要技术框架,如java SpringMVC、PHP+javascript+mysql等,数据库选择(如mysql、MonggoDB、Oracle)等、
2)编程规范;
3)服务器配置,包括CPU、内存、带宽、磁盘等;
4)服务器部署:单机房托管、分布式托管、云服务器部署;
5)存储方案:磁盘阵列、云服务器OSS
6)安全方案:混淆技术、加密方案等;
7)软件最终部署方式:BS、CS、安卓app、IOS app、微信/支付宝小程序等
8)使用的第三方SDK、api清单;
9)使用的开源代码或者软件,以及相应的开源协议;
10)其他技术方案
所解决的问题:
(1)开发团队(人员)交接时,技术衔接的问题;
(2)对开发形成一个隐形的监督机制,有利于提升代码可读性
(3)避免被技术挟持
(4)避免团队使用第三方知产不清晰的代码,导致带来的问题。
(5)极大的方便后期运维的工作
有朋友会问,如何保证开发团队乖乖写技术文档呢。这就要说到付款周期的问题了。一般来说,款项没有付清的时候,第三方都会原因按照金主的要求来做,更别说这些写进了合同里。
三、质量控制
不是说委托了第三方开发,甲方就不管了,质量控制应该贯穿整个项目开发过程中。并且对于开发文档的完善,一定要加强督促。
(1)有条件的情况下,安排项目监理;
(2)开发项目组成员确立后,不允许未经甲方同意随意更换;
(3)限制转委托
(4)定期分阶段的验收和付费策略;
(5)安排代码检查;
四、交付与验收
交付与验收一定要有一个规范,以私有仓库交付,还是直接代码包交付。验收单一定要提前制作好,作为合同附件。许多甲方因为怠于验收,或者忽略了验收的环节,导致最终举证不利。验收应注意以下几点:
1) 整体界面是否符合要求,功能模块是否都完整;
2) 跳转是否流畅,文件/数据库读写是否流畅;
3) 安全性是否满足需求
4) 加载速度(尤其是主页)
5)其他
当然,最主要还是参照第一个功能清单,进行比照验收。
五、增项开发
增项开发基本是不可避免的。合同中一定要写好增项开发的费用,以及什么类型的需求属于增项。
六、满足《数据安全法》与《个人信息保护法》
这是2021年非常重要的新增点,这一块没做合规,后期可能会遭遇非常大的合规风险。 尤其是个人信息保护法,对用户信息的分类、存储、使用都有非常细致的规定,这里稍微提几点做参考,更详细的展开得长篇大论了。
(1)用户信息存储的去标识化、脱敏或加密要求;
(2)信息的区分——普通用户信息,敏感用户信息;
(3)用户对自己信息的增查删改入口;
(4)其他
七、知识产权问题
知识产权问题非常重要,除了明确最终产品的知产归属,还包括禁止同业竞争等等。许多开发团队为了省事,会大量使用第三方开源代码或者sdk,开源代码是免费的,但是开源协议也是要遵守的。许多程序员到处复制黏贴,结果带来一大堆问题,这类问题也是不能忽视的。
解决问题:
(1)外包公司拿代码产品出售给第三方,或自用形成同业竞争;
(2)代码、或其他素材等侵权问题;
八、运维与售后
一般来说,外包团队开发后,一定要设置一个质保期和免费运维期,因为bug是难以避免的,重要的是及时的响应。例如如下,各位可以再制作的更加详细一点。
九、违约责任
除了合同履行期间,交付延误等常见违约,许多质量问题,一开始验收的时候可能无法发现,在后续使用的时候可能会逐渐暴露出来,因此应该在合同中进行较为详细的约定。这里的质量问题,应该指的是重大缺陷,如果只是瑕疵性的问题,如未在验收截至前提出,难以以此为由主张违约责任。因此,在违约责任中进行细化就显得非常重要,违约责任应该包括以下几类,以下为举例:
1)产品在验收后一年(或其他期限)内,出现重大功能性缺陷,非应甲方原因,部分重要功能无法正常使用,经乙方多次售后,仍无法改善的;
2)软件出现知识产权纠纷,导致软件实质无法使用,或者向第三方进行赔偿的;
3)软件被发现出现重大安全漏洞的,有可能造成重大安全风险,或已遭受安全损失的;
另外,约定管辖地和违约方承担相应的律师费、公证、差旅费也非常主要,记得一并放在合同里。
作者:虞元坚 上海正策律师事务所 律师 全栈网络工程师/法律大数据应用领域专家。擅长领域:争议解决与诉讼、与软件开发和互联网相关的知识产权、不正当竞争、经济犯罪、科技产业投融资等。欢迎关注法律大数据公众号,和律师朋友们都在使用的随身工具——律师云助理。