乐于分享
好东西不私藏

炜衡实务 | 计算机软件开发合同纠纷实务探讨

炜衡实务 | 计算机软件开发合同纠纷实务探讨

引言

随着互联网时代的到来,计算机软件开发项目快速增长,相关法律纠纷也日益凸显。本文梳理了计算机软件开发合同中的常见争议焦点,针对法律痛点与实务难点提出防范建议,以帮助企业规避风险、高效解决纠纷。

合同类型如何认定 

计算机软件开发合同的标的为计算机软件,软件开发合同的最终目的是开发方通过计算机软件编程的方式实现委托方特定功能需求,合同履行最终交付的通常也是计算机软件源代码及相关文档。

因此,在判断合同性质时应当审查合同的主要权利义务是否涉及计算机软件的开发,合同的标的是否涉及计算机软件代码的交付。如果系争合同的权利义务不仅涉及计算机软件的开发,还涉及其他硬件等权利义务,当事人因计算机软件产生纠纷的,也应按照计算机软件开发合同确定管辖。

案例1:(2021)最高法知民辖终230号

  • 基本案情:广境公司就与能欣公司计算机软件开发合同纠纷管辖权异议案件提起上诉。

  • 法院认为:最高人民法院二审认为,合同性质的认定应根据合同约定的主要是权利义务的内容进行判断

    本案中,能欣公司与广境公司签订的《利添水果产业示范区提升工程——多媒体展示项目合同》在“项目内容”“交货约定”“违约责任”等条款中约定了软件开发服务的内容和违约责任等,符合计算机软件开发合同的特征。广境公司主张本案不是计算机软件开发合同纠纷而是工程承揽合同纠纷与事实不符。

  • 简析:准确认定系争合同是否为计算机软件开发合同是审理此类纠纷的基本前提,这不仅影响案件的管辖,更关系到案件的基本思路。在具体认定时,还应当注意计算机软件开发合同与委托合同、承揽合同以及技术合同等的区别

软件开发功能需求如何确定

计算机软件开发是将委托方的主观需求不断客观化的过程。在签订合同时,双方一般会确定大致的功能需求说明作为合同附件,但在合同履行过程中,原初确定的功能通常会进一步细化,也有可能发生功能的删减、增加等变更。

案例2:(2019)最高法知民终694号

  • 基本案情:原告睿奇公司与被告快发公司侵害计算机软件纠纷案中,原告主张被告在线下门店使用的快剪购票机软件侵害其著作权,被告辩称,双方之间曾签订《技术开发委托合同》,被告委托原告开发“QCHouse线上平台开发项目”,被诉侵权软件也属于合同开发的范围。原告则认为合同约定的软件仅为线上软件,并不包括线下软件。

  • 法院认为:最高人民法院经审理认为,对于被诉侵权软件是否属于合同范围的理解不应机械、静态地分析其是否属于线上还是线下软件,特别是考虑到合同履行过程中,当事人根据业务需求以及软件开发的进程亦有可能对开发范围进行调整。故应该综合考虑涉案合同目的、被诉侵权软件与合同约定软件的功能配套性以及合同履行情况进行判断。

    在涉案合同履行过程中,基于被告的需求,原告开发完成了被诉侵权软件,除非有相反的特别约定,应当认定被诉侵权软件属于合同的范围。根据合同约定,被诉侵权软件的著作权应当归被告所有,故被告并不构成侵权。

  • 简析:区分原有功能范围的细化与功能的变更是确定软件开发功能需求的重点,也是大多数纠纷会涉及的问题。

    例如,合同签订时明确的功能包括A、B、C、D,如果合同履行中双方对功能A经过沟通确定为A1、A2、A3,这通常属于功能的细化,属于计算机软件开发功能需求调研的正常过程。因为原本确定的功能往往比较宏观,随着开发的不断推进以及双方沟通的不断深入,较为宏观的功能也会不断的具体化,这符合软件开发的基本规律,并不会影响软件正常的开发周期。
    但如果合同履行中,委托方提出需要开发E功能,由于原合同并未约定,这属于功能的增加,通常会导致软件开发周期的延长或者软件开发费用的增加。

如何认定交付验收

在计算机软件开发合同纠纷案件中,当事人争议最大的问题就在于软件开发义务的履行是否符合双方合同的约定,是否按照合同约定按时交付、及时验收确认,是否要支付或返还相关开发费用。

3:(2023)京民终57号

  • 基本案情:2019年2月,槟购公司(下称“原告”)与青柠彩虹公司(下称“被告”)签订《服务协议》,约定由被告开发槟购商城及微商系统APP等软件,明确了测试版、正式版的交付时间、验收标准及付款节点,约定交付后十个工作日内原告需验收,未如期提出异议视为验收合格。合同履行中,被告按约提交槟购系统测试版本,原告支付二期款,后被告陆续交付测试版本并上架部分应用市场,双方持续沟通修改软件问题。2019年7月,原告发测试报告指出槟购、素耳APP存在大量致命及严重BUG,被告后续仍按要求修改优化,原告亦有订单运营、需求调整等行为。2019年9月后,原告未再提出验收相关新问题,2020年1月其以被告未交付合格软件为由发函解除合同,要求返还费用并赔偿。被告辩称已完成交付且软件上线使用,反诉要求原告支付剩余尾款。双方就软件是否完成合格交付、是否通过验收产生核心争议。

  • 法院认为:涉案合同中,就“验收”与“上线”的关系并未做约定,而是在工作说明第6-2条中合称为“项目验收系统上线”“项目验收上线”。涉案合同约定了验收的定义是指对工作成果在外观、形式和数量以及内在质量上的验收,还约定了验收不合格的整改流程,并无“验收通过才可以上线,或者上线即意味着验收通过”的表述。本案中,虽然上线应用市场并非验收通过的标志,但根据计算机软件领域的惯例,在应用市场上线发布的软件一般应为该软件的正式版本,具备支持上线运行的主要功能并能够独立运行。槟购系统APP已经在多个应用市场上线,已有用户使用并发生交易,原告在2019年9月至2020年1月之间,未再提出新的问题,且对于APP存在功能未通过验收、未制作的问题,其并未提交证据证明就上述问题在合同履行中已经告知被告。综上,一审法院认定,被告已经提交了槟购系统APP,且通过验收并上线。

  • 简析:计算机软件开发合同纠纷案件审理中,应当让开发方明确其认为满足合同要求的软件最早何时交付以及通过什么方式交付。由于软件交付后,双方通常存在测试问题反馈、修改完善、再交付、再反馈等过程,软件成果也可能需要多次提交测试,我们需要明确符合合同基本要求的软件最早交付的时间。

    需要说明的是,通常情况下除非有相反约定,软件的首次交付并不是指最终源代码,而是目标程序。只有双方对目标程序经测试修改验收无误,委托方付清相应款项后,开发方才最终交付源代码。实践中,大多数纠纷都不涉及交付源代码的问题,而是在此之前双方即已经就合同的履行产生纠纷。

    关于验收交付问题,提醒开发方保留好《验收报告》《确认单》《测试报告》等验收文件,或能证明委托方在约定期限内未提出异议的证据(如委托方未在验收期限内书面反馈问题,可视为验收合格)。若委托方已实际使用软件,保留软件上线运行的截图、最终用户的使用反馈、系统后台运营数据等,证明软件已投入使用且符合合同目的。

如何认定违约

在计算机软件开发合同纠纷案件中,委托方通常会主张开发方未能按照合同约定的时间或具体功能要求完成软件开发任务,开发方则可能提出委托方迟延付款等主张,并根据相关违约行为提出请求解除合同、要求对方承担违约责任等主张。要查明是否存在违约行为,首先,要确定按照合同约定完成的开发成果,确定开发成果后,再查明是否存在违反合同约定的行为。

案例4:一审(2020)浙02知民初397号、二审(2021)最高法知民终869号

  • 基本案情:2018年8月,皇客公司(下称“原告”)与圣代公司(下称“被告”)签订《计算机软件技术开发合同书》,约定由被告为原告开发“皇客网平台”应用软件,开发周期为120天,并对开发项目范围、价款、技术指标、分期付款方式及违约金计算方式等进行了约定。2018年8月-2020年初,双方在合同履行过程中,就涉案项目的研发进度及核心需求功能持续沟通并反馈存在问题,期间皇客网1.5.5安卓版APP和小程序于2019年8月上线试运行。原告向被告及其相关人员累计支付73.1万元,作为涉案项目的部分技术服务费。2020年10月,司法鉴定报告认定被告完成了合同任务的53.42%,但未完成核心模块。原告以被告构成根本违约为由,请求解除合同并主张被告应返还已支付的技术服务费73.1万元并支付违约金34万元。
  • 裁判结果:一审判决被告向原告返还已支付的合同款20万元,并支付违约金34万元,合计54万元。二审维持原判。
  • 法院认为:从双方往来的聊天记录及合同的实际履行情况来看,在约定的研究开发周期结束后,双方仍持续就涉案项目的研发进度及核心需求功能进行沟通,并反馈软件存在问题,聊天记录可佐证被告并未按时交付符合约定的研发成果,即未完成的软件/事项/项目模块属于核心部分。另外,被告未提供证据证明,原告存在变更研发需求导致其延迟交付的行为,同时鉴定意见亦载明,在以量化手段分析认定被告完成合同44个子项情况时,专家评估数值已把需求变更20.93%的因素结合在内,即在案证据难以佐证被告迟延交付系原告变更研发需求所致,因此被告已构成违约。
  • 简析:法院认定被告构成违约,核心在于其履行程度未达合同核心要求——即便司法鉴定显示其完成了53.42%的合同任务,但未完成部分系涉案软件的核心模块,该等核心模块直接决定软件是否符合委托方根本使用需求,未完成核心义务,即便非核心部分有一定履行,仍应认定构成违约。另,即使鉴定意见已将20.93%的需求变更因素纳入量化评估,但由于在案证据难以佐证被告迟延交付系原告变更研发需求所致,法院仍认定被告未完成核心义务。
    笔者办理过类似的软件开发合同纠纷案件,提示开发方要证明按合同约定履行了开发义务,开发过程中要注意保留履行合同义务的证据:一是交付软件的证据:软件安装包、源代码(如约定交付)、系统访问链接、账号密码的交付记录(邮件、微信、快递单等),以及服务器部署记录等;二是阶段性工作成果证据:需求分析报告、概要设计、详细设计文档、阶段性成果提交记录、会议纪要等,证明按计划完成各阶段工作;三是其他沟通记录证据,比如与委托方关于需求变更、开发进度、软件问题等的邮件、微信聊天记录、会议纪要等,证明双方沟通情况,尤其是委托方提出需求变更或问题反馈的记录,以及受托方的回应和处理情况。

合同解除(终止)的法律后果

计算机软件开发的过程,在纠纷发生时已成既定事实,客观上无法恢复原状。因此,计算机软件开发合同解除后的责任承担,通常应当区分解除的具体原因(尤其是合同是否系根本违约解除),以确定对于已经完成的开发内容是否需要折价补偿。

案例5:(2022)最高法知民终655号

  • 基本案情:2020年8月,刘某委托某甲公司开发微信小程序,双方通过“猪八戒网”签订合同,约定总金额12000元,分两期支付,刘某需提供资料且功能需求确定后不得变更,某甲公司应于同年9月28日前完成主框架开发。刘某支付首期款6000元后,某甲公司因自身原因未能按期完成开发,双方于10月初协商变更合同:刘某无需支付剩余尾款,某甲公司继续履行开发义务。2020年10月,某甲公司交付部分程序功能截图,刘某认为与约定需求不符,双方产生争议。经多次沟通未能达成一致,某甲公司停止开发工作。后双方均同意解除涉案合同,且确认合同解除后不涉及物品返还或知识产权争议。

  • 法院认为:涉案合同是双方当事人基于平等的法律地位、在自愿的情况下签订的,其对双方当事人均有法律约束力,双方当事人均应按照合同的约定履行自己义务。本案中,某甲公司没有提交刘某变更开发需求的充分证据,其仅因工作支出超出刘某支付的费用为由,在涉案软件没有通过刘某验收的情况下,不再履行合同义务。鉴于涉案合同已经解除,由于合同解除的原因在于某甲公司迟延履行合同义务,且经多次催告仍未交付符合约定的成果,因此其对于合同的解除具有明显过错,故刘某主张某甲公司返还已支付合同款的诉讼请求有事实与法律依据,即某甲公司违约导致合同解除,刘某依法可以要求其恢复原状,并有权要求赔偿损失。

  • 简析:合同解除一般包含以下三种情况:

    1. 因根本违约而解除:计算机软件开发合同因根本违约而解除通常发生在委托方享有合同解除权的情形,此时委托方一般有权要求开发方返还已经支付的开发费用并按照合同约定承担违约责任。如果合同没有约定违约责任,委托方有证据证明其存在其他损失的,违约方也应予以赔偿。开发方已经完成的开发内容并不需要委托方进行折价补偿,因为合同无法履行的责任主要或者完全在于开发方。

    2. 双方对于合同解除均有过错:综合考虑双方的过错程度、已经完成的开发成果所占的工作量等因素,确定是由开发方返还相应的开发费,还是由委托方继续折价补偿开发方已经完成的工作成果。

    3. 违约方解除合同:虽然合同解除后应当恢复原状,但是不能免除违约方的赔偿责任,违约方仍应就合同解除给非违约方造成的损失承担相应的违约责任。至于违约责任,可以基于双方的过错程度予以折抵。

结语

计算机软件开发合同纠纷的审理在事实查明和法律适用方面均较为复杂,计算机软件开发合同的履行具有需求动态调整、技术专业性强、履约环节复杂等特点,违约认定、验收把关、合同解除等问题是多发争议焦点。从本文的梳理来看,法院裁判兼顾合同约定与实际履行综合考量,同时兼顾公平原则与软件开发行业的固有特性,作出合理裁判。

因此,企业在签订和履行计算机软件开发合同过程中,应细化需求约定、规范需求变更流程、完整留存履约全过程证据,明确验收环节的权责划分等,提前做好合规管控,有效防范各类法律风险。

参考文献:

1、《一文讲清如何审理计算机软件开发合同纠纷》,上海高院,凌宗亮

2、张晓津:计算机软件法律保护理论与实践研究,知识产权出版社,2025年1月

律师介绍

王珊

北京市炜衡(深圳)律师事务所

专职律师

专业领域:民商事纠纷、企业常年法律顾问、刑事辩护、强制执行
王珊律师具有十年风控合规工作经验,持有基金从业资格,深耕民商事纠纷领域,以专业洞察厘清法理边界,秉持以专业守护公正,用法律捍卫权利的理念,致力于为每一位当事人提供专业、尽责的法律服务。

特别声明:以上内容仅代表作者本人观点,不代表北京市炜衡(深圳)律师事务所或其律师出具的任何形式之法律意见或建议。如需转载或引用文章内容,请于公众号后台联系授权,并于转载时注明出处。如有意向就相关议题进一步交流探讨,欢迎与本所联系!

文稿:王  珊

审核:成唐静之

审定:林  湘