余晓汉,最高人民法院知识产权法庭二级高级法官,法学博士;雷艳珍,最高人民法院知识产权法庭三级高级法官,法学博士;詹靖康,国家知识产权局专利局审查业务管理部审查指南处处长,中国政法大学民商经济法学院博士研究生。文章发表于《法律适用》2024年第11期“法官说法”栏目,第116-130页。因文章篇幅较长,为方便电子阅读,已略去原文注释。根据最高人民法院知识产权法庭审理计算机软件开发合同纠纷二审案件所反映的问题,今后该类纠纷的审理重点在合同解释、合同履行、合同解除三个层面。合同解释需要重视各种解释方法的运用,构建合理的论证层次,条理清晰地确定争议条款的含义;处理合同履行问题要熟练运用法定的履行规则,贯彻契约精神,充分尊重当事人关于合同履行顺序的合法约定,通过“同时履行判决”一次性解决合同纠纷;合同解除问题主要在于处理合同解除后的责任,需清晰体现“终止履行—恢复原状(含折价补偿)—赔偿损失”的“三步法”,其中返还价款或者折价补偿与赔偿损失可以相互冲抵,但在判决时应先尽可能作出清晰认定,然后冲抵,不宜动辄直接一揽子判令一方向另一方给付一定的金钱。关键词
自2019年1月1日成立,最高人民法院知识产权法庭集中管辖了大量涉及计算机软件开发合同的案件,案件来源涵盖了大部分对技术类知识产权案件具有管辖权的中级人民法院和高级人民法院。从地域上看,一审案件的分布状况与该地经济发展水平基本上呈正相关。其中,北京、上海、广州三地的知识产权法院案件数量较多,江苏次之,山东、湖北紧随其后;具有涉外因素的案件比例较小;大部分案件的诉讼标的额在100万以下;纠纷主要涉及合同的解释、合同的履行、合同的解除等。法院通过审理这些案件,进一步明确了裁判思路,审判质效得到明显提升。鉴于此,自2022年5月1日起,最高人民法院知识产权法庭不再受理由知识产权法院和有知识产权纠纷案件管辖权的中级人民法院审理的一审计算机软件开发合同纠纷的二审案件,当事人不服知识产权法院和有知识产权纠纷案件管辖权的中级人民法院作出的计算机软件开发合同纠纷案件的一审裁判,应向有关高级人民法院上诉。在此情况下,有必要对二审集中管辖期间计算机软件开发合同审理中反映的普遍问题进行总结。我们根据集中审理以来的情况,围绕该类纠纷中合同的解释、合同的履行、合同的解除等方面的法律问题,根据民法典及《最高人民法院关于适用〈中华人民共和国民法典〉合同编通则若干问题的解释》(法释〔2023〕13号,以下简称《民法典合同编通则解释》),结合计算机软件开发合同及技术合同的典型案例对目前审理中的突出问题,择其要者进行阐释。
“合同是当事人约定的法律”。由于当事人的意思表达能力局限和各种利益驱动、文字的模糊性等原因,合同目的和内容难免产生疑义,确有解释必要。合同上需要解释的问题包括合同类型、合同是否成立、合同条款的含义等。在计算机软件开发合同的解释中,应当遵循《民法典》第142条关于意思表示解释规则(方法)的规定(原《合同法》第125条),按照条款词句的文义、上下文(相关条款)、行为的性质和目的、习惯及诚信原则,从不同层面进行解释。目前,相当一部分合同纠纷以及基于合同产生的知识产权权属纠纷的关键问题在于合同条款的解释,一旦将这些合同条款的含义准确解释出来,争议就会迎刃而解。在白某某诉安某公司技术合同纠纷案中,二审阶段双方的争议主要源于对有关绩效考核标准和股权激励方案内容的合同条款的理解差异。对此,二审判决根据原《合同法》第125条(《民法典》第142条)对涉案合同条款进行了解释,阐释了股权激励约定的三层意思:第一,总体上看,安某公司在一定条件下应当给予白某某股权激励,而不应一概否定该项合同义务。第二,在具体依据方面,涉案合同没有进一步约定在何种考核结果下安某公司应当给予或者如何给予相应股权激励。根据涉案合同本身约定,安某公司对此有较大的自主决定空间,同时按照商业实践中对等给付的普遍做法,至少可以明确,如果白某某在安某公司年度绩效考核中不达标或者不合格,安某公司可以不给予其股权激励。第三,如果白某某在安某公司年度绩效考核中达标或者合格,在具体数额方面,安某公司有较大的自主考量空间,其应在完成股票首次公开发行(IPO)后制定具体股权激励方案最终履行该项合同义务。当事人订立合同均为达到一定目的,合同的各项条款及用语均是达到该目的的手段。合同目的的识别是计算机软件开发合同纠纷中的一个基本问题。合同目的一般是合同的典型交易目的,即所欲实现的法律效果,这种典型交易目的在每一类合同中是相同的,不因当事人订立某一具体合同的动机的不同而改变。所谓当事人订立合同的动机,亦即当事人的主观目的。动机乃法律行为之缘由,此一缘由实则指给付目的,与债务目的在于清偿实现债权不同。通说认为,由于动机作为缔约方的主观意图往往并未外化,无法证明,动辄依据缔约方的动机来解释合同目的有失公平。仅当合同动机经由合同用语、条款体现于合同文本之中时,目的与动机同一,但影响缔约行为效力者仍为目的而非动机。因此,须严格把握将动机作为合同目的的条件,主张将其动机解释为合同目的的一方必须承担举证责任,证明其动机为何,该动机影响合同的订立和含义,且为对方知晓并接受,或者作为合同的成立及基础。在计算机软件开发合同中,委托方的合同目的是取得符合其需求的软件;至于委托方取得开发的软件后所意图实现的盈利效果或者其他效果,是合同的动机,如果该动机没有通过合同用语、条款体现在合同文本中,不宜作为合同目的,当事人不能以其盈利目的落空为由主张合同目的不能实现。在大某公司诉天某公司计算机软件开发合同纠纷案中,大某公司委托天某公司开发小程序,后双方因“阶段性库存功能”是否属于软件开发需求的内容发生争议。二审判决指出,大某公司订立该计算机软件开发合同的目的是取得约定的软件,而为促进租赁业务主观上要求软件运行后能够实现的经济效果或者其他效果是其合同动机。大某公司试图通过开发的软件优化库存管理的上述动机没有在合同中通过某种约定明确体现出来,且天某公司并不接受其在合同订立后增加开发软件的库存功能,大某公司主张的该项订约动机并不能解释为其订立涉案合同的合同目的。由此,大某公司以涉案软件缺少库存功能为由主张其无法实现合同目的,缺乏事实和法律依据,不应予以支持。此外,应注意区分合同目的、合同动机的认定规则与缔约方针对有关合同内容没有约定或者约定不明时的合同漏洞填补规则。计算机软件开发合同缔约方通常会约定软件的主要功能,难以就所有技术细节进行约定。在对争议的具体技术问题是否属于合同约定开发范围之内进行解释时,应特别注意参照行业习惯,不能仅以合同未作明确约定而将争议问题排除于合同约定范围之外。如果争议的具体技术功能属于此类软件通常应具备的功能,或者所属领域人员普遍认为合同对此类问题已无需特别约定的,原则上应当认定属于合同约定的范围之内。此即在当事人对有关合同内容没有约定或者约定不明确时,参考习惯或行业惯例补充合同漏洞的规则,为《民法典》第510条、第511条所规定。任何合同均需解释,所谓“合同条款文义明确,无需解释”,本身就是一种解释结果。解释合同在司法实践中应当像解释法律一样受到重视,合同解释同样是一种技术和一种艺术。今后的有关司法实践,需要更加重视合同解释工作。一是要增强解释合同的意识,避免在裁判说理中大量重复照搬合同条款而不针对争点进行具体解释;二是强化对合同解释规则(方法)的全面掌握和熟练运用,切实将《民法典》第142条及有关司法解释规定的解释规则实施到位;三是善于结合个案确立合理的合同解释结构,讲究合同解释分析说理的层次与条理,增强合同解释的说理和效果。
合同履行应当遵循全面履行、适当履行和诚信履行原则,在如何具体履行的细节中当事人经常纠缠于履行顺序规则即同时履行规则和异时履行规则(先履行抗辩与不安抗辩规则)。在履行过程中,源代码的交付也是计算机软件开发合同中双方争议的重要问题。
(一)关于人民法院能否作出“同时履行判决”的问题
同时履行抗辩权是一种防御性权利,在制度设置上,防御不是目的,而在于打破僵局,促使债务履行,故通说认为法院可以作出同时履行判决即附条件判决。《德国民法典》第322条专门作出该类规定,日本、韩国、我国台湾地区也有“交换给付判决”的规定或者实践。
在派某公司诉科某公司技术开发合同纠纷案中,二审判决明确了如下裁判主旨:在双务合同纠纷案件中,双方互负对待给付义务。一方请求对方履行义务,但因对方违约或其他正当理由未实际履行己方的对待给付义务,人民法院不宜仅基于请求方未履行对待给付义务而直接驳回其诉讼请求,可以根据具体案情判决双方互为对待给付义务,以实现双方订立合同的目的,一次性解决纠纷。该案判决给出的裁判规则也为《民法典合同编通则解释》第31条所吸收,并区分抗辩与反诉的不同法律效果分别进行规定。
(二)关于先履行抗辩的一个实例
计算机软件开发合同中当事人双方明确约定,开发方先出具发票,委托方再支付价款,否则委托方拒绝付款且不视为违约。在开发方未出具发票的情况下,委托方可否行使先履行抗辩权拒绝支付价款?
对这一问题,曾经存在一定的争议。《民法典合同编通则解释》第31条第1款澄清了该问题,即“当事人互负债务,一方以对方没有履行非主要债务为由拒绝履行自己的主要债务的,人民法院不予支持。但是,对方不履行非主要债务致使不能实现合同目的或者当事人另有约定的除外。”可见,司法解释倾向尊重合同约定。总体上,在履行规则方面,首先还是尊重当事人意思自治,应当允许合同当事人根据自身需求和交易实际将一般人看来为轻微违约的某一事项约定上升为一种主观上的“严重违约”或者“根本违约”,否则契约自由将失去其应有的作用空间,将严重阻碍当事人利用合同创设各种交易形式。
同时,我们进一步提出两点意见:第一,“先票后款”约定原则上应当遵照,但也不能过于绝对化,允许有例外,即当事人违反诚信原则滥用抗辩权,该例外需要在具体案件中具体判断。第二,也可以考虑作出“附条件判决”,即判决在一方当事人出具发票后另一方当事人支付款项。
(三)关于源代码的交付问题
计算机软件开发合同中,委托方和开发方通常会就软件源代码作出约定。是否交付源代码、以何种方式交付源代码、源代码的权属以及使用方式等事项,均关乎合同的目的,直接影响双方当事人在合同项下的权利义务内容。一般情况下,计算机软件开发合同当事人的主合同义务为交付所开发的软件和支付软件开发费用,但是,这并不意味着软件源代码的交付必然为合同附随义务,仍要根据合同约定来确定当事人之间具体的权利义务内容。如果计算机软件委托开发合同中约定了开发方向委托方交付源代码、委托方取得源代码的著作权,则根据该约定,源代码的交付义务属于主合同义务,委托方取得源代码著作权属于合同目的的重要组成部分。如果开发方未交付源代码或者委托方无法取得委托开发的软件源代码著作权,则委托方订立计算机软件开发合同所追求的履行利益实际上受到剥夺,换言之,订立合同的目的无法实现,则极有可能导致合同的解除和违约责任的承担。
在委托方和开发方约定了由委托方取得源代码著作权的合同中,按照合同约定,开发方不仅应当交付源代码,而且应就其交付的源代码负有保证第三人不享有任何权利的义务,即此时开发方负有权利瑕疵担保责任。若开发方在履行合同过程中无法对所开发的软件尽到权利瑕疵担保责任,则委托方取得软件著作权的合同目的不能实现,委托方有权依据《民法典》第563条第1款第4项规定解除合同。
合同解除,是指合同有效成立后,因一方或双方当事人的意思表示,使合同关系终了,未履行的部分不必继续履行,已履行的部分依具体情形进行清算的制度,是合同特有的终止原因。《民法典》第557条区分了合同终止和合同解除,第2款限定于合同解除的情形,同时在解除的效果上区分有溯及力和没有溯及力的解除,其中没有溯及力的解除相当于狭义的“终止”。由此,合同终止是合同解除的上位概念。合同解除以有效成立并继续存在的合同为前提,如果合同权利义务已经终止,则不存在解除合同的问题。下面以计算机软件开发合同中两种较常见的解除方式为例进行分析。协商解除的本质是当事人双方消灭有效合同的意思表示一致,即双方当事人就消灭既有的合同法律关系达成了新的合意,与解除权无关。由于计算机软件开发合同的履行往往需要双方的相互配合,该类合同纠纷中,协商解除的比例比较高。据统计,至少有近10%的纠纷案件当事人双方在诉讼中均主张解除合同。此时,即便合同履行情况没有达到根本违约的程度,但基于对当事人意思自治的尊重,法院也可以判令合同解除。特别需要注意的是,此时需要考察双方当事人是否对合同解除的后果达成一致意见,分情况作出处理。第一,如果双方都同意解除合同,在协商解除的意思表示不以对解除后果形成一致意见为前提时,即使双方未就协商解除后的法律后果作出约定,只要双方解除合同的意思是明确形成一致的,一般也可以认为构成协商解除。第二,如果当事人协商解除的意思表示以对解除后果形成一致意见为前提,若当事人仅达成解除合同的合意,但对于解除合同的后果未能达成一致意见的,也不能产生合意解除合同的法律效果。在合意解除的情况下,是否恢复原状、赔偿损失等问题,均须双方当事人协商确定。如果合同双方仅协商解除而未约定解除后果,也没有约定当事人协商解除的意思表示是否以对解除后果形成一致意见为前提,《民法典合同编通则解释》第52条规定,当事人一方主张行使法律规定或者合同约定的解除权,经审理认为不符合解除权行使条件但是对方同意解除,或者双方当事人均不符合解除权行使的条件但是均主张解除合同,人民法院可以认定合同解除,并依据《民法典》第566条、第567条和有关违约责任的规定处理。当出现上述情形,当事人未对诸如违约赔偿等问题作出安排的,对于合意解除合同后的损害赔偿、违约责任承担问题,原则上应当在一案中一并处理,法院可以向当事人释明,以充分保障当事人的诉讼权利。如果当事人坚持不提出请求,可以在裁判文书中指出通过另行起诉的方式予以解决。之后当事人向法院起诉要求损害赔偿的,法院应当允许,不能以默示的方式排除当事人对损害赔偿的请求权。实践中,存在一方当事人以对方当事人根本违约为由起诉解除合同,案件审理过程中查明不存在根本违约事实,但双方当事人均同意解除合同的情形。在这种情形下,起诉解除合同的一方并不享有法定解除权,法院可以依法向双方释明此时涉案合同因双方合意而解除,合意解除合同后违约赔偿等问题的安排如上所述,以充分保障当事人的诉讼权利。在此需要指出,附解除条件的合同(《民法典》第158条最后一句)、协商解除合同(《民法典》第562条第1款)、约定解除权的合同(《民法典》第562条第2款),需要在理论上明确其法律属性的区别,并在实践中根据合同当事人的具体约定准确识别,不应混淆,否则会在法律分析的起点上犯错。其中的关键区别在于:约定一方解约的条件成就,解除权人可以解除(也可以选择不解除),通知对方时解除(解除权的行使);附解除条件成就,合同失效,即自动消灭但无溯及力,不需意思表示。文义上的区别是条件成就后,是合同(自动)解除,还是一方有权解除。计算机软件开发合同当事人之间的信赖是合同成立的重要基础,如果合同成立后由于主客观原因变化,委托人对受托人的信赖基础已经丧失或者认为已无继续履行合同的必要时,软件开发工作的进程和结果往往受影响,在解除合同对秩序影响不大的情况下,法律鼓励资源从效率低的领域向效率高的领域流动,允许不再需要合同履行结果的一方放弃或者终止尚未履行或正在履行中的服务,委托方可以解除合同,但须赔偿给对方造成的损失。如此处理,既避免了合同双方无谓地付出更多的时间、精力或金钱,又避免了社会资源的浪费,符合民法典合同编对自由与效率的价值追求。在不存在法定解除权和约定解除权的情况下,是否支持一方解除合同的诉讼请求,特别应考虑是否因双方丧失信赖而出现了合同僵局或债务不适合强制履行的情形。解除权是单方解除合同的权利,属形成权。在民法典颁布之前,关于违约方能否解除合同存有较大争议。对此,《民法典》第580条在原《合同法》第110条规定基础上新增第2款予以明确。在计算机软件开发合同中,出现合同僵局,违约方可以根据《民法典》第580条第2款的规定起诉请求解除合同。履行非金钱债务的当事人一方常常为开发方,委托方则往往履行的是支付对价的金钱债务,但这并不意味着所有的开发方都仅负非金钱债务、所有的委托方都仅负金钱债务,双方当事人的权利义务须按合同约定而定,不可一概论之。在开发方不履行其非金钱债务或者履行非金钱债务不符合约定时,因继续履行最能实现合同订立目的,委托方可以请求继续履行;反之,在委托方不履行自身所负的非金钱债务或者履行非金钱债务不符合约定时,基于合同严守的原则,开发方亦可要求委托方继续履行。出现《民法典》第580条第1款所列三种情形之一,且达到第2款所称“致使不能实现合同目的的”,双方当事人中的任何一方都可以请求人民法院或者仲裁机构终止合同,违约方亦在可申请解除合同的请求者之列。《民法典》第580条第1款规定了在符合“法律上或者事实上不能履行”“债务的标的不适于强制履行或者履行费用过高”“债权人在合理期限内未请求履行”之一的情况下,违约方继续履行非金钱债务所需的财力、物力超过合同双方基于合同所能获得的利益,合同已不具备继续履行的条件。参照《全国法院民商事审判工作会议纪要》(法〔2019〕254号)第48条,违约方起诉解除合同需要同时具备三个条件:第一,违约方起诉请求解除合同主观上必须是非恶意的;第二,违约方继续履行合同显失公平;第三,守约方拒绝解除合同违反了诚信原则。《中华人民共和国民法典合同编解读》一书在肯定继续履行不能的基础上,指出适用该款的前提有三:首先是对方当事人不能请求违约方继续履行,其次是致使不能实现合同目的,最后是当事人提出请求。对“致使合同目的不能实现”的强调,意味着如果不能请求继续履行的仅为非主要债务,则不履行一般不会导致合同目的不能实现,此时守约方既不享有法定解除权,也不能依据该款申请解除合同,违约方本来就不享有解除权,同样也不能依据该款申请解除合同。换言之,在出现履行不能严重到致使合同目的不能实现时,合同的违约方才可能得以据此申请法院或者仲裁机构解除合同。《民法典》第580条的适用结果体现为人民法院收到当事人申请后的考量因素和违约方的违约责任承担。第一,考察是否存在合同不能继续履行且致使合同目的不能实现的情形,以及不能继续履行的原因何在。例如,债务人是否已经进行了部分履行、债务人是否恶意违约、债权人是否能够以成本较低的方式获得替代履行、债务人是否对他人有赔偿请求权、债权人拒绝解除合同是否为获得不相当的利益而违反诚信原则、合同不终止是否会导致双方的权利义务或者利益关系明显失衡等因素。第二,适用该款不影响违约方承担除继续履行外的其他违约责任。《民法典》第580条第2款的规定并未影响对方当事人根据法律规定和约定所享有的法定解除权和约定解除权,对方当事人依然可以行使解除权解除合同。如果对方当事人依法行使了解除权,则债务人之后依据该款规定请求法院确认终止合同的,法院可以依据《民法典》第565条确认合同解除以及解除的时间。在麦某公司诉鼎某公司计算机软件开发合同纠纷案中,麦某公司主张鼎某公司的违约行为致使合同目的无法实现,麦某公司享有解除权。经审理,鼎某公司不存在导致合同解除的违约行为,但二审法院认为如果不允许麦某公司请求解除合同,对合同双方都不利,因此考虑如下因素,对麦某公司解除合同的诉讼请求予以支持:一是涉案合同在双方发生分歧后,合同履行没有取得任何进展,实际已经出现合同僵局;二是双方对合同陷入僵局均存在一定过错,麦某公司不存在恶意违约;三是鼎某公司没有拒绝解除合同,而是提出如果麦某公司执意解除合同,应赔偿其遭受的损失;四是如果要求麦某公司继续履行合同,需要其履行的配合等义务在事实上不适于强制履行,麦某公司长期不履行义务可能对双方均造成严重不利后果。
原《合同法》第97条规定:“合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失。”《民法典》第566条延续了上述规定。上述法律规定相当清楚,但通过调研和实践体察,计算机软件开发合同纠纷的司法实践并非那么清晰。对此,我们自2021年3月起在相关司法实践中,总结提出具有可操作性的处理合同解除后责任问题的“三步法”(终止履行—恢复原状—赔偿损失)和区分两种不同性质的合同(一时性合同与继续性合同)的思路。例如,在康某公司诉燕某公司计算机软件开发合同与技术服务合同纠纷案中,二审判决指出,计算机软件开发合同属于一时性合同,一定期限内持续提供技术服务的技术服务合同属于继续性合同,该两类合同在合同确定性要求、可转让性、解除权产生的原因、违约处理、合同解除后果等方面有所不同。在合同解除后的溯及力方面,一时性合同的解除以溯及既往为原则(自始归于消灭),尽可能恢复原状;继续性合同的解除原则上仅面向将来发生效力,解除前业已发生的合同关系不受影响。对于继续性合同解除前已经履行的部分内容,原则上仍应根据合同约定和合同履行的法律规定处理有关权利义务。除继续性合同解除原则上没有溯及力外,合同解除后,双方当事人除终止履行外,主要应当依法处理两个层面的问题:一是对已经履行部分进行恢复原状或者采取其他补救措施,其中恢复原状主要是指对于能够恢复原状的已履行部分在物理形态上恢复到订约前的状态,采取其他补救措施主要是指对不能恢复原状的已履行部分进行折价补偿(即在价值形态上恢复到订约前的状态);二是双方如果采取恢复原状或者其他补救措施后,还因对方违约或者合同解除而遭受损失的,应当依法确定损失赔偿责任。合同解除后首先要终止合同的继续履行,即合同解除后,对于尚未履行部分,终止履行。实践中,对于终止履行作为合同解除法律效果的理解并不清晰,一些当事人在提出解除合同的诉讼请求之余,还要求对方当事人继续支付剩余开发费用;或者在对于原审法院判决解除合同无异议的情况下,上诉请求对方当事人支付未付合同款项。上述做法显然与法律规定相悖。当事人之所以提出未付价款给付的继续履行请求,往往是因为当事人认为在合同履行中,对方支付的对价没有达到其已经履行部分的价值,因而这种继续履行的请求通常表现为继续支付一部分合同价款。对于开发方认为合同履行中委托方欠付的开发费,不应通过继续履行合同而应当通过折价补偿、赔偿损失等方式提出请求。双务合同中,当事人互负对待给付义务,合同解除后的债权债务如何处理?对此,通说认为,合同解除后与自始没有合同相同,未履行的部分不再履行,针对已履行的部分,当事人可以根据履行情况和合同性质,要求恢复原状或者采取其他补救措施,并有权要求赔偿损失。根据直接效果说,恢复原状请求权在性质上为返还原物请求权。恢复原状指对于能够恢复原状的已履行部分在物理形态上恢复到合同订立之前的状态,不仅包括返还原物,还包括返还财产所产生的孳息、支付一方在财产占有期间为维护该财产所花费的必要费用和因返还财产所支出的必要费用。“采取其他补救措施”也即请求修理、更换、重作、减价等,是指在原物返还不能(原物不存在或者没有必要返还)的场合,作价返还,在性质上为不当得利请求权。换言之,对不能恢复原状的已履行部分进行折价补偿,使之在价值上恢复到合同订立之前的状态,包括“所提供劳务的恢复原状”“受领的标的物为金钱时的恢复原状”“受领的有体物消失时的恢复原状”等。在两者的关系上,“采取其他补救措施”相当于“价值形态的恢复原状”,它与“恢复原状”即“实物形态的恢复原状”具有相同的目标,“采取其他补救措施”是“恢复原状”的代替,二者只能择一行使,不能同时行使。“根据履行情况”是指根据履行部分对合同债权的影响。解除合同后,如果债务人已经履行的部分对债权人根本无意义,可以请求恢复原状;如果根据合同履行状况无法或者不容易恢复原状,或者债权人的利益不是必须通过恢复原状才能得到保护的,不必恢复原状,可以采取其他补救措施。“根据合同性质”指根据合同标的的属性区分一时性合同和继续性合同。计算机软件开发合同的合同标的为给付符合约定的计算机软件,在性质上属于一时性合同。在分阶段履行的计算机软件开发合同中,若分阶段履行涉及软件功能需求的完善以及上线方式(如网页、微信小程序、手机应用程序)的增加,因其在抽象上仍为同一给付,该总给付自始确定,并不因履行分阶段或上线方式不唯一而转变为继续性合同。在计算机软件开发合同解除后,如何根据履行情况采取恢复原状或补救措施,应当结合案件情况综合考虑。实践中,由于软件开发合同多数需要根据委托方的个性化要求定制开发成果,不具有普遍适用性,而在物理形态上恢复到订约前的状态要求双方互相返还已经交付的内容,此时需要考虑对于已经交付的开发成果是否存在返还必要的问题。根据实际情况,在计算机软件开发合同中恢复原状的适用大致分为以下情况:1.委托方已经支付部分开发费,开发方尚未交付开发成果。此时,恢复原状主要体现为返还已支付价款。由于合同解除时开发方并未交付开发成果,即使开发方保有开发成果没有任何价值,也不再适用继续履行的方式由开发方继续交付,而是在终止履行之后,适用恢复原状由开发方返还开发费。由于恢复原状的适用并不考虑双方在履行中的过错,因此在此种情况下,委托方已经支付的开发费在不考虑过错的前提下全部予以返还。至于开发方在履行过程中投入的成本,则属于其因履行合同遭受的损失,应由双方按照其各自的过错比例分担。在确定损失承担后,可以对开发方的价款返还债务与委托方的损失承担债务相互冲抵,最终确定一方的给付义务。2.开发方已经完成交付或部分交付。此时,对于已交付部分是否适用恢复原状,由委托方返还开发成果,主要考虑由哪一方保有开发成果更合适。如果开发成果由开发方保有更合适而对委托方没有价值,如开发成果完全不具备委托方要求的功能、开发方可以将开发成果用于其他项目等,则一般应适用恢复原状。由于作为开发成果的软件具有无形性,恢复原状的具体方式可以是返还,也可以由委托方删除部署在其服务器上的软件,交出后台管理的账号和密码等。如果开发成果对委托方有价值,如委托方对开发成果进行修改、完善后使用,则一般对于已经交付的部分不再适用物理形态的恢复原状,而只能进行价值形态的恢复原状,即进行折价补偿。尽管计算机软件开发合同的开发成果一般是根据委托方的需求定制,初看起来该类合同似乎不宜适用恢复原状,但该类合同的实际履行情况比较复杂,是否适用恢复原状还需要根据现实情况来判断,如果一概认定该类合同不适用恢复原状未免过于武断。根据《民法典》第566条第1款的规定,合同解除后,当事人可以请求恢复原状或者采取其他补救措施,并有权请求赔偿损失。该处“赔偿损失”在性质上仍为违约损害赔偿,以履行利益(如果合同履行后的可得利益)为主。违约损害赔偿的基本原则是完全赔偿(《民法典》第584条),赔偿范围包括直接损失(积极损失)和间接损失(可得利益损失)。直接损失不难计算,相对复杂的是可得利益损失的确定。可得利益损失,系合同履行后的纯利润,根据交易性质、合同目的等因素,基本包括生产利润损失、经营利润损失和转售利润损失等三种主要类型。认定可得利益损失的规则包括:可预见规则(《民法典》第584条)、减损规则(《民法典》第591条)、过错相抵规则(《民法典》第592条)、损益相抵规则。同时,因果关系规则作为损害赔偿的一般规则自然应当适用。据此,可得利益损失的计算公式可以表述为:可得利益损失赔偿额=可得利益损失总额–不可预见的损失–扩大的损失–受害方自己过错造成的损失–受害方因违约获得的利益–必要的成本。原合同法在合同解除的法律效果上承认合同解除与损害赔偿并存,合同解除不影响当事人要求赔偿损失的权利。民法典延续了这一立法传统,《民法典》第566条第2款规定,合同因违约解除的,解除权人可以请求违约方承担违约责任,但是当事人另有约定的除外。根据该款规定,可以主张赔偿损失的“当事人”既包括解除权人,也包括相对人,在双方均存在违约行为的情况下,合同的每一方当事人均可以向对方主张赔偿因违约行为所产生的损失。在恢复原状后,如果双方仍然有损失的,可以请求赔偿损失,赔偿损失的适用以存在过错为前提。合同因违约解除后的损失赔偿范围可以由合同当事人双方约定,也可以根据法律规定。《民法典》第584条规定:“当事人一方不履行合同义务或者履行合同义务不符合约定,造成对方损失的,损失赔偿额应当相当于因违约所造成的损失,包括合同履行后可以获得的利益;但是,不得超过违约一方订立合同时预见到或者应当预见到的因违约可能造成的损失。”在当事人之间没有另行约定和法律没有特殊规定的情况下,根据民法典的规定,应当按照完全赔偿原则赔偿全部损失,包括直接损失和间接损失。直接损失即财产上的直接减少,也称实际损失或积极损失,包括信赖利益(如费用的支出、丧失其他交易机会的损失以及因对方违约导致自己对第三人承担违约赔偿的损失等)和固有利益的损失。间接损失指失去的可以预期取得的利益,也称之为可得利益损失或消极损失,根据交易的性质、合同目的等因素,可得利益主要包括利润等。在违约赔偿中,由于证明可得利益的困难性,债权人可以选择债务人赔偿信赖利益。当存在其他违约行为导致除合同解除外,还要承担其他违约责任时,如在因交付标的物不符合合同目的导致合同解除的案件中,交付方还存在迟延交付行为,应逐一审查适用违约责任的条件是否成就,而不能直接追究违约责任。“终止履行—恢复原状—赔偿损失”这三个步骤可以称为处理合同解除责任的“三步法”。由于对上述三个步骤理解不清晰,当事人可能将应当以损失赔偿的形式提出的诉讼请求,通过继续履行或恢复原状等方式提出。此时,法院应当对当事人进行必要的释明,引导其通过正确的方式提出请求。如果经过释明后,当事人仍没有提出赔偿损失的请求,则法院不能超出当事人的诉讼请求进行判决,一般可以允许当事人就恢复原状后仍然存在的损失另行提起诉讼。“恢复原状—赔偿损失”这两个步骤在合同解除后法律后果的适用上不能混为一谈,而要分别适用,忽略其中任何一个步骤都可能导致双方承担的法律后果与其过错不相适应。关于“三步法”的运用,特别是第二步和第三步之间的分步骤适用是否必要,是否可能导致委托方和开发方之间的利益失衡,能否直接依据公平原则认定合同解除后的法律效果,特别是双方之间冲抵已支付价款和赔偿损失的金钱给付,回答这些问题是正确认识合同解除法律效果的重要方面。首先,对于合同解除后的法律效果,法律已有明确规定。从《民法典》第566条第1款(原《合同法》第97条)的规定来看,第一步和第二步的适用实际是将合同双方的权利义务恢复到合同订立之前的状态,不考虑合同双方过错造成的损失,第三步是在恢复或采取其他补救措施的基础上根据双方在合同履行中的过错对各方遭受的损失进行赔偿。正确适用上述条文可以充分保障各方的利益,在这一问题上软件开发合同与其他合同并无不同。其次,对于第二步中恢复原状或采取其他补救措施的适用,恢复原状是指对已履行部分在物理形态上恢复到订约前的状态,采取其他补救措施主要是指对已履行部分进行折价补偿,即在价值形态上恢复到订约前的状态。软件开发合同的标的物软件是无形物,往往还是定制软件,在大多数情况下合同解除的情形中开发者往往只完成了部分开发,因此在第二步恢复原状或采取其他补救措施的适用上具有一定特殊性,即部分完成的开发成果在已经交付的情况下是否需要在物理形态上恢复原状、返还给开发方的问题。在具体适用中是采用恢复原状还是其他补救措施,可以综合考虑以下因素:1.开发任务的完成度;2.双方在合同履行中的过错;3.由谁保有更有利于发挥开发成果经济价值。如果开发方已完成大部分开发任务,在履行中并无明显过错,则原则上对于已经交付部分不再适用物理形态的恢复原状,而要考虑已完成部分占整体开发任务的比例,后续维护等义务的免除等,参考全部合同价款合理确定其对应的价值,由委托方对开发方进行价值形态的补偿。反之,如果适用恢复原状,将已经部分完成的开发成果返还开发方,那么开发方在开发活动中付出的成本可以计入其损失,其具体数额的确定参考分阶段履行中约定的对应价款,根据开发成果的完成程度,并考虑双方在履行中的过错进行分担。为避免出现不区分法律适用步骤的责任认定和在判决合同解除情况下还判令当事人继续履行合同约定义务(如支付剩余合同价款)等不合法律规定的问题,以下特就“三步法”的具体运用示例如下:假设某计算机软件技术开发合同中,委托人A与研究开发人B约定全部项目研发费用100万元,B实际已经研发约定项目80%,之后A以B开发迟缓等为由提出解除合同,解除时A已经向B支付研发价款50万元。法院经查A提出解除尚不符合法定和约定的合同解除条件,但合同实际难以继续履行,双方在诉讼中均同意解除合同,故应判决认定合同解除;对于合同解除,双方均有过错,A、B应分别承担70%、30%的责任。在解除合同后,大致存在三种情形:软件部分交付但需返还、软件部分交付且不宜返还、软件没有任何交付。假设在软件部分交付情况下,A因合同解除,在不返还已交付软件情况下额外遭受损失20万元,在返还已经交付软件情况下额外遭受损失40万元;B因合同解除在不返还已交付软件情况下额外遭受损失20万元,在返还已经交付软件情况下额外遭受损失80万元;在软件没有任何交付情况下,合同解除,A的损失40万元,B的损失80万元。情形一(软件部分交付但需返还):B已经向A交付实际研发的80%的软件(项目),但合同解除后因B已不再继续研发导致A实际难以正常使用(含难以另行委托他人完成后续研发)已经交付项目。处理步骤依次为:第一步,停止履行,A不再支付未支付价款;B不再继续研发。第二步,恢复原状或者折价补偿,A向B返还已经交付的80%的软件;B向A返还A已经支付的50万元价款。第三步,A的损失40万元,B承担30%的责任即12万元;B的损失80万元,A承担70%的责任即56万元。最终结果(双方所有金钱给付对冲):A向B返还B已经交付的80%约定研发软件;B向A返还价款6万元(50万元+12万元-56万元)。情形二(软件部分交付且不宜返还):B已经向A交付实际研发的80%的软件(项目),但合同解除后A可以另行委托他人完成后续研发而正常使用已经交付项目。处理步骤依次为:第一步,停止履行,A不再支付未支付价款;B不再继续研发。第二步,恢复原状或者折价补偿,A不返还已经交付的80%的软件,但应当折价补偿80万元;B向A返还A已经支付的50万元价款。需要注意的是,此时对冲后是A需补偿B 30万元,而不是“A应当继续支付B合同价款30万元”。第三步,A的损失20万元,B承担30%的责任即6万元;B的损失20万元,A承担70%的责任即14万元。最终结果(双方所有金钱给付对冲):A不向B返还B已经交付的80%约定研发软件;A向B补偿和赔偿38万元(80万元+14万元-50万元-6万元)。情形三(软件没有任何交付):A已经支付合同价款50万元;A的损失40万元,B的损失80万元。处理步骤依次为:第一步,停止履行,A不再支付未支付价款,B不再继续研发;第二步,恢复原状或者折价补偿,B向A返还A已经支付的50万元价款;第三步,A的损失40万元,B承担30%的责任即12万元,B的损失80万元,A承担70%的责任即56万元。最终结果(双方所有金钱给付对冲):B向A给付6万元(50万元+12万元-56万元)。