【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】
(本文转载自北京市京师律师事务所)
本文作者:邓达江
目录
一、计算机软件开发合同的解除条件
(一)计算机软件开发合同的通常解除方式:约定解除或法定解除
(二)计算机软件开发合同不宜适用的解除方式:任意解除
二、计算机软件开发合同解除后的民事责任承担
(一)合同解除后的民事责任承担之一:已经履行部分进行恢复原状或者采取其他补救措施(返还款项、返还软件或价值补偿)
(二)合同解除后的民事责任承担之二:违约责任与损失赔偿责任
计算机软件开发合同纠纷通常涉及两大争议焦点:
第一,计算机软件开发合同能否及如何解除?特别是软件项目委托方能否直接行使承揽合同一章中的定做人任意解除权来解除合同?
第二,若合同能解除,则合同解除后相关的民事责任如何承担(最为关键的问题)?其又通常涉及如下两个层面的问题:一是对已经履行部分(如已交付的部分开发成果、已支付的部分开发款项)如何进行恢复原状或者采取其他补救措施?二是若当事人因对方违约或者合同解除而遭受损失的,如何依法确定违约责任或损失赔偿责任?
在司法实践中,计算机软件开发项目的委托方与开发方对前述问题存在巨大分歧并展开了激烈争论。有鉴于此,笔者拟根据自身办案经验并结合最高人民法院的相关典型案例,对前述诸问题作简要剖析,以期能为司法实践提供一些有价值的参考。
01
计算机软件开发合同的解除条件
(一)计算机软件开发合同的通常解除方式:约定解除或法定解除
在计算机软件开发合同纠纷中,只要满足约定解除条件(即发生了当事人约定的一方解除合同的事由)或者法定解除条件(如开发方迟延履行开发义务,经催告后在合理期间仍未履行;开发方交付的软件系统无论如何也无法通过验收,根本不可能满足委托方的需求;委托方拒不配合提出技术要求,拒不明确需求事项;委托方拒不支付开发阶段的开发款项等),当事人便可以根据《民法典》第565条行使解除权,解除合同。至于怎样才算得上满足了约定解除条件或者法定解除条件,则需在个案中根据合同约定、具体案情和法律规定予以精准判定。
(二)计算机软件开发合同不宜使用的解除方式:任意解除
在计算机软件开发合同的解除问题上,需重点探讨的问题是:软件项目委托方能否直接行使承揽合同一章中的定做人任意解除权来解除合同?在(2020)浙02知民初403号案中,浙江省宁波市中级人民法院认为“涉案合同约定,易某捷公司接受追某道公司委托,为追某道公司开发涉案软件,易某捷公司根据追某道公司提出的需求进行系统设计、开发、部署,故本案的计算机软件开发合同实质上为承揽合同,因双方当事人并未在涉案合同中约定合同的解除条件限制,且涉案合同未履行完毕,故追某道公司可以行使任意解除权”。然而,最高人民法院在该案的二审判决((2021)最高法知民终2353号)中认为“计算机软件开发合同纠纷属于技术类合同纠纷,原审判决认为计算机软件开发合同纠纷实质是承揽合同纠纷,直接适用承揽合同一章中有关定做人的任意解除权等法律进行裁判有所不当,本院予以纠正。”
笔者认为,对于计算机软件开发合同而言,既要考虑委托方基于市场的考虑对涉案软件的时限性需求,也要考虑到保护开发方的合理利益。
考虑到计算机软件开发合同通常具有履行周期较长、分阶段付款、软件功能需求随开发进程动态调整、需要委托方与开发方全程密切配合和共同推进等典型特征,特别是委托方一般处于主导地位、强势地位(如:只有委托方提供完备的技术资料以及开发所必备的背景资料、技术需求及数据、标准、参数等,并做好必要的协助、配合工作,开发方才能更好地满足委托方要求,更好地实现合同目的等),而开发方一般处于配合地位、弱势地位且常常受制于委托方(如:软件开发本身需根据委托方提出的功能需求、技术要求等进行;委托方的需求事项越具体、越明确,开发方的开发工作就越具有针对性且开发工作会越顺畅;开发方需要为项目启动与实施投入人力、物力等经营成本),进而若贸然将委托方等同于承揽合同中的定做人并赋予其任意解除权,则将会让开发方轻易成为被委托方随意宰割之“羔羊”,对开发方不公平。故为实现委托方与开发方的利益平衡,计算机软件开发合同原则上宜通过约定解除或法定解除的方式予以解除,不宜通过任意解除的方式予以解除。
02
计算机软件开发合同
解除后的民事责任承担
计算机软件开发合同中开发方应当履行的主合同义务是开发能够满足委托方需求的软件,尤其考虑到软件开发实践中委托方委托开发方所开发的软件往往是个性化的定制软件,故如前所述,委托方的需求事项越具体、越明确,开发方的开发工作就越具有时效性和针对性。
更重要的是,明确软件需求的作用在于,将委托方对拟开发的目标软件的基本需求与设想预先固定下来,从而让开发方在原型图设计、软件界面架构布局、软件功能模块配置和运行逻辑关系安排上能够做到更加有的放矢,进而利于在后续验收过程中对开发方交付成果的完成程度和完成质量有明确的评价标准。若软件功能需求缺失或者需求不明确、不具体,则由此带来的风险是容易导致软件开发工作缺乏明确的目标方向,进而可能因为后续返工而造成开发进度不必要的延宕。
围绕软件功能需求确定这一问题,计算机软件开发合同在实践有两种常见情形:第一种常见情形是双方在订立软件开发合同时已经就功能需求达成合意,而后在开发履行过程中由于市场情势变化、技术条件限制、开发成本控制等因素,合同双方当事人重新调整需求;第二种常见情形是双方在订立软件开发合同时并未达成明确的功能需求合意,而是在进入具体开发阶段才通过交流逐步达成功能需求的共识。软件功能需求的最终确定都应当是由委托方和开发方本着诚信原则,共同协力完成(详见(2022)最高法知民终518号民事判决书)。
按照最高人民法院的观点,合同解除后,双方当事人除终止履行外,还应当依法处理如下两个层面的问题:
第一个层面的问题是对已经履行部分进行恢复原状或采取其他补救措施。其中,恢复原状主要是指对于能够恢复原状的已履行部分在物理形态上恢复到缔约前的状态,采取其他补救措施主要是指对不能恢复原状的已履行部分进行折价补偿,即在价值形态上恢复到订约前的状态。
第二个层面的问题是如果折价补偿的基础事实不存在,开发方没有向委托方交付或者虽为部分交付但对委托方而言无法利用或不具备利用价值,则不宜进行折价补偿。亦即如果双方不能或无法采取恢复原状、采取其他补救措施的,倘若因合同解除而遭受损失,则应当依法确定违约责任、损失赔偿责任等。
(一)合同解除后的民事责任承担之一:已经履行部分进行恢复原状或者采取其他补救措施(返还款项、返还软件或价值补偿)
计算机软件开发合同解除后应否恢复原状需综合考虑此类合同的自身特点(履行周期较长、分阶段付款、软件功能需求随开发进程动态调整、需要委托方与开发方密切配合和共同推进、具有技术性、复杂性、多阶段等特点)、实际履行情况、当事人有无明显过错及过错大小、开发方实际投入的工作量及开发成果等因素,秉持诚信原则和公平原则加以判断。若不能恢复原状,则应对已履行部分进行折价补偿。具体到计算机软件开发合同,如果开发方向委托方进行了部分交付且交付的部分对委托方有使用价值而不宜返还,则可由委托方对开发方进行折价补偿。
就应否恢复原状而言,在(2021)最高法知民终2353号案中,最高人民法院认为“首先,首笔开发款项通常并不对应具体的开发阶段和开发成果,涉案合同约定追某道公司在合同签订后的第5日支付首笔开发款3万元,既可以理解为涉案软件开发项目的启动资金,也可以理解为是委托方为开发方组建研发团队、投入相关软硬件资源所提供的物质条件。其次,涉案软件虽未全部完成开发,但易某捷公司在合同签订后已经进行了一定的开发工作,并无故意拖延开发或单方终止开发等情形,在开发遇到问题后也多次与追某道进行协商沟通,如果判令全部返还,与易某捷公司的违约行为性质及情节并不相符,与计算机软件开发合同的特点亦不相符。”
在(2022)最高法知民终69号案中,最高人民法院认为“涉案合同性质为计算机软件开发合同。软件开发本身需根据委托方提出的功能需求、技术要求等进行,开发过程为动态化和个性化进程,成果交付具有阶段性与整体性并存的特点。在合同履行过程中,分期付款以及分阶段交付开发成果符合软件开发领域的行业特点与客观规律。在广东某软件有限公司持续、积极为涉案项目投入人力等成本且相应阶段性成果已经交付常熟某有限公司测试的情况下,如果认定广东某软件有限公司全额返还常熟某有限公司已付合同款将有违公平原则。因此,原审法院根据涉案合同的性质、主要约定及实际履行情况,认定常熟某有限公司已支付的《合同书》《差旅费用协议》《增购协议》等协议项下合同款项总计1152078.10元作为已完成阶段性义务的对价,并无明显不当。”
在(2023)最高法知民终928号案中,最高人民法院进一步认为“第一,清晰、准确、详细、完整地约定软件功能需求,是软件开发工作的基础和依据,但本案五份涉案合同均只约定了开发标的类型,未明确开发的具体要求及具体的验收标准,这对软件开发工作及交付验收必将造成困难和障碍,且成都某科技公司在软件开发过程中多次变更或增加功能需求,导致工作量增加或反复,其对软件开发停滞、合同解除负有主要责任。第二,四川某软件公司已完成的工作量与其实际收取的开发费用相当。第三,涉案合同为计算机软件开发合同,软件开发本身的特性决定了开发过程中往往会根据委托方的需求调整开发任务,开发成果的交付也往往会具有动态化和阶段性的特点。本案中,在四川某软件公司持续、积极为涉案项目投入人力等成本且已交付相应阶段性成果的情况下,要求四川某软件公司返还成都某科技公司已付开发款有违公平原则。原审法院根据涉案合同的性质及实际履行情况,认定成都某科技公司已支付的五份涉案合同项下合同款项总计192450元作为四川某软件公司已完成阶段性任务的对价,并无不当。”
就采取其他补救措施而言,在(2022)最高法知民终2308号案中,最高人民法院认为“随某客科技公司已履行的部分交付内容,系定制并经过验收使用,属于物理形态上不能恢复到订约前状态的情形,可根据随某客科技公司已付出的开发成本等因素,合理确定其价值。”在(2021)最高法知民终2397号案中,最高人民法院进一步认为“开发方的履行行为是分阶段履行行为且具有不可恢复的属性,所涉定制开发软件也不具有返还的经济合理性。某豆公司已经履行部分开发义务并向万某和公司交付了阶段性的研发成果。因涉案软件系某豆公司为万某和公司个性化定制开发,已经履行的研发成果主要对万某和公司具有特定使用价值,而对于某豆公司而言未必可以顺利转用而充分发挥其使用价值,如果返还已经部分开发和交付的软件,会在整体上不利于充分发挥其使用价值,故涉案已开发和交付的软件在事实上已不宜返还,应折价补偿。”
值得关注的是:在计算机软件开发合同中,双方当事人一般会约定详细的付款方式,通常会将总的合同款项拆分为数笔开发款项,且每一笔开发款项有不同的付款条件。特别是除首笔乃至第2笔开发款项外,剩余的其他开发款项通常对应具体的开发阶段和开发成果,只有开发方完成了相应开发阶段的开发成果并交付委托方,测试或验收通过或委托方实际使用后,委托方才会向开发方支付该开发阶段对应的开发款项。
此处需重点注意两点:
一是若首笔开发款项乃至第2笔开发款项并不对应具体的开发阶段和开发成果,且其占整个合同总金额的比例较低时,则其大概率会被法院认定为软件开发项目的启动资金,或者是委托方为开发方组建研发团队、投入相关软硬件资源所提供的物质条件。只要开发方已经进行了一定的开发工作,并无故意拖延开发或单方终止开发等情形且积极与委托方展开了沟通,法院一般不会判决开发方返还首笔开发款项乃至第2笔开发款项(反之,法院会判决开发方返还款项)。最高人民法院在前述(2021)最高法知民终2353号案中便秉持这一裁判思路。
二是在某些个案中,虽然每一笔开发款项有不同的付款条件,且首笔乃至第2笔款项并不对应具体的开发阶段和开发成果,开发方也进行了一定的开发工作,但法院也会判决开发方返还开发款项。如在(2024)渝01民初34号案中,双方签订的计算机软件开发合同约定“合同签订后,驻场人员到位后,向中标人员支付合同金额1515万元的20%货款作为项目启动资金(首笔款项,303万元);中标人驻场开展调研工作提交完善的工作方案,向其支付合同金额25%的货款(第2笔款项,378.75万元)”(第3、4、5笔开发款项则对应具体的开发阶段和开发成果)。开发方已完成约60%的开发工作,显然早就满足第1、2笔款项的付款条件。而重庆市第一中级人民法院判决开发方向委托方返还第1、2笔款项中的576.15万元(扣减了105.6万元),并未支持开发方提出的“第1笔和第2笔款项并不对应具体的开发阶段和开发成果,该付款条件早已满足且其为开发项目的启动资金,不应返还”之主张。对此,最高人民法院在(2022)最高法知民终1055号案中明确指出“对计算机软件开发合同而言,委托方签订合同目的在于得到符合约定功能并能正常运行的计算机软件,故不应单纯将其工作量与各阶段付款数额一一对应而忽略软件的整体完成情况。”亦即,应根据软件开发的整体完成情况来确定开发方已完成阶段性任务的对价,不能机械拘泥于合同约定。
(二)合同解除后的民事责任承担之二:违约责任与损失赔偿责任
计算机软件开发合同解除后,除终止履行、对已经履行的部分恢复原状或者采取补救措施外,双方当事人如果还因对方违约或者合同解除而遭受损失的,应当依法确定违约责任、损失赔偿责任。在司法实践中,法院一般综合考虑合同实际履行情况、当事人有无明显过错及过错大小、软件的价值、开发进度、存在问题及交付情况等因素,秉持诚信原则和公平原则,于个案中灵活判定违约责任、损失赔偿责任。
更具体地讲,在司法实践中,虽然一方当事人通常向另一方当事人一并主张违约责任、损失赔偿责任,但法院一般不会同时支持,主要理由是违约责任以违约损失为基础,主要秉持填平原则。在约定了违约金且违约金能填平损失的情况下(违约金过分高于损失时还会被调整),当事人不能再重复主张损失赔偿责任。法院一般会根据守约方的实际损失,并兼顾交易类型、合同主体、合同特点、合同履行情况、当事人过错大小、履约背景等因素,秉持诚实信用原则和公平原则,综合判定违约金数额并斟酌确定是否支持相关方的损失赔偿主张。
至于如何判定违约责任以及损失赔偿责任,可参考最高人民法院的如下典型案例:
在(2021)最高法知民终952号案中,最高人民法院认为“综合考虑涉案软件的价值、开发进度、存在问题及交付情况等因素,本院酌定怡迪公司应补偿中洲公司损失20万元。同时,综合考虑中洲公司的履行延迟和履行瑕疵的情况、双方对于合同未能继续履行的过错程度、怡迪公司所支出的费用及受到损失的情况,本院酌定中洲公司向怡迪公司支付违约金10万元。”
在(2022)最高法知民终518号案中,最高人民法院认为“第一,开发方已经进行了部分开发且双方在履行过程中均存在一定的过错,则可根据双方过错程度,由委托方赔偿开发方基于在先开发的投入而产生的成本损失。第二,违约金可以作为守约方追究违约方违约赔偿责任的一种简便计算方式,但违约金数额的约定必须合理,是否合理的判断标准则应以守约方因违约方的违约行为所受到的损失作为参照。第三,关于守约方可以主张的违约损害赔偿的范围,根据合同法第131条,损失赔偿额应当相当于因违约所造成的损失,包括合同履行后可以获得的利益,但不得超过违反合同一方订立合同时预见到或者应当预见到的因违反合同可能造成的损失。一审法院综合考虑合同性质、合同标的、杭州某公司违约情形、需求确定过程中双方均有过错等因素,将杭州某公司应当承担的违约金数额调整为5万元并无明显不当。”
在(2021)最高法知民终2223号案中,最高人民法院认为“某甲公司并未能提供证据证明违约金过高或者超过法定保护上限,原审法院鉴于某甲公司确已投入人力、物力进行开发,且最终未能完成小程序开发交付也有双方相互协调配合等原因,最终酌情确定某甲公司按照小程序项目开发费用的30%承担违约责任,并无不当。”
在(2022)最高法知民终1458号案中,最高人民法院认为“本院综合考量《合作协议》的实际履行情况、涉案平台系统的完成程度、阿某公司和新某公司就《合作协议》终止履行的过错程度等因素以及过失相抵原则,认定阿某公司和新某公司各自承担责任的比例相当,即对于涉案平台系统不能通过验收、《合作协议》终止履行的后果双方应当各自承担50%的责任。据此,双方均不再向对方承担支付违约金及赔偿损失的责任。一审法院判令新某公司向阿某公司支付违约金535480元不当,本院予以纠正。”
在(2022)最高法知民终664号案中,最高人民法院认为“违约金和债务利息均具有民事补偿性质,目的都是补偿因违约行为给守约方造成的损失,应当以违约金请求权为基础,综合考虑两者的关系。在本案中,违约金请求权和利息请求权所指向的利益具有同一性,违约金已涵盖了迟延履行期间的债务利息,某甲公司不应重复获得补偿,对某甲公司应支付合同尾款利息的主张,本院不予支持。”
作者介绍
邓达江律师
西南政法大学民商法学博士,重庆科技大学企业法治研究中心主任,重庆市律师协会两江新区律工委民事专业委员会副主任,北京市京师(重庆)律师事务所专业委员会执行主任、高级合伙人。
主要执业领域为担保(尤为擅长处理企业存货动态质押纠纷案件)、合同和公司法律业务。专注于建设工程、公司治理、融资担保、房地产、企业合规、动产担保及其他合同纠纷等重大疑难高端民商事争议解决。
研究方向为担保法、合同法、公司法。在《社会科学研究》《中国流通经济》《私法研究》《河北法学》《人民法院报》等CSSCI及扩展版期刊发文数篇。合作出版《最高人民法院担保法司法解释精释精解》等著作2部。博士学位论文《动产动态质押论——以物流金融为中心》(2019年12月),首次系统阐释和建构了动产动态质押的理论体系与制度框架,核心观点与2021年1月1日施行的《民法典担保制度司法解释》第55条等规定完全契合。主持、主研重庆市博士研究生科研创新计划项目、国家社科基金西部项目、中国法学会重点项目等国家级、省部级及其他项目近10项。