王 翠
《民法典》第853条规定“委托开发合同的研究开发人应当按照约定制定和实施研究开发计划,合理使用研究开发经费,按期完成研究开发工作,交付研究开发成果,提供有关的技术资料和必要的技术指导,帮助委托人掌握研究开发成果。”
即委托开发合同研究开发人的主要义务包括三点:1.为确保研究开发成果符合委托人的要求,应按照约定制定和实施研究开发计划;2.按照合同约定、根据开发实际需要、合理有效地使用研究开发经费,不得擅自挪作他用;3.按期完成研究开发工作,以合适的方式交付研究开发成果、并帮助委托人掌握技术成果,提供有关的技术资料和必要的技术指导。
因委托开发合同不同于一般委托合同,在违约行为的认定上有着自身的特殊性和专业性,其合同履行通常需要经历需求确认、深化设计、软件系统开发、软件系统测试、软件系统部署、软件系统试运行、最终功能符合合同要求的验收确认、源代码交付等阶段。
结合《民法典》第577条“当事人一方不履行合同义务或者履行合同义务不符合约定的,应当承担继续履行、采取补救措施或者赔偿损失等违约责任”与第854条“委托开发合同的当事人违反约定造成研究开发工作停滞、延误或者失败的,应当承担违约责任”的规定,委托开发合同项下受托人违约的主要形态主要包括迟延履行,部分履行、合同目的无法实现等。
二、是否存迟延履行
延迟履行作为在委托开发合同纠纷中最常见的违约形态之一,因合同履行过程中经常会发生阻碍合同正常履行的事件或行为、各方因对细节需求的不同理解而需进一步沟通协调、或通过增补的方式对原合同中的需求进行变更等种种情形,因此对于受托方来说,在原合同约定的履行期限内履行合同义务存在一定的考验,并且极有可能会造成延迟履行。此时,受托人合同义务的延迟履行是否构成违约,分以下情形:
1.合同履行过程中一方发生阻碍合同正常履行的事件、导致另一方不能在原合同约定的期限内履行义务的,不能视为违约。
在(2021)最高法知民终1191号中,最高法认为:育悦公司以原合同主张盈天地公司延迟履行,构成违约。北京知识产权法院认定:涉案合同虽然约定盈天地公司应在育悦公司确认收退费管理系统需求规格说明书后4个自然月内交付系统,但通过双方的邮件往来沟通记录可知,在合同的履行过程中,因育悦科技NC接口一直不能使用,导致项目周期继续被延长,双方已根据合同的实际履行情况,对原定项目时间表、里程碑以及系统交付时间进行了调整,并通过会议纪要的方式予以确认,盈天地公司并一直按照重新调整的时间表进行项目开发和推进,北京知识产权法院对育悦公司在反诉中主张盈天地公司未按照原合同约定履行合同的主张不予支持,育悦公司提起上诉,最高人民法院在二审中维持了一审法院的观点。
2.软件内容和功能进行调整和改进属合同履行中的正常形态,不宜仅因受托人超过合同约定的履行期限交付软件即简单认定其构成迟延履行。
在(2019)最高法知民终433号中,最高法认为:盛世星辉公司应履行的主合同义务之一,是按照约定的交付日期和《项目功能说明书》的约定,向中易游公司交付名称为“手机游戏长连接强联网服务端程序(含源码)”和“手机游戏管理工具(含源码)”的合格软件。结合双方的庭审陈述和举证情况,可以认定涉案合同订立后没有制定《项目功能说明书》。
《项目功能说明书》缺失所引发的后果,就是涉案合同自始便存在软件开发工作缺乏具体、清晰指向的风险。在涉案合同缺乏关于《项目功能说明书》制定和提交义务方约定的情况下,前述风险本应有赖于双方遵循诚实信用原则,共同协力消除,特别是在涉案合同项目系采取由委托方负责软件前端开发、受托方负责软件后端开发的分工模式下更当如此。
然而,由于涉案合同双方在履行过程中未能及时协商制定《项目功能说明书》,因此不可避免地增加了双方在对接磨合、相互探明意图过程中无谓耗费的时间成本,进而客观上加大了受托方不能如期交付软件的风险和难度。继而,中易游公司和盛世星辉公司均确认合同履行过程中没有制定软件开发计划。
虽然,盛世星辉公司作为软件开发方,应当履行主动发起与委托方中易游公司讨论制定软件开发计划的义务。但是,中易游公司作为涉案软件的委托开发方,其既然负有依照开发计划在每一个阶段检测和验收盛世星辉公司开发的阶段性产品的义务,则其同样应当积极督促盛世星辉公司及时协商制定软件开发计划。
然而,由于涉案合同双方在履行的初始阶段未能及时共同制定软件开发计划,不可避免地造成后续软件开发过程出现前后端对接上的无序状态,人为增加了双方在协调工作进度上的时间成本,进而加大了受托方不能按期交付软件的风险和难度。结合双方开发人员的QQ聊天记录内容,现有证据无法证明软件开发过程中出现反复修改甚至推倒重来的原因系盛世星辉公司完成的工作不合要求所致。
相反,盛世星辉公司被要求修改或推倒重来,或是因为负责软件前端开发的中易游公司开发人员变动,新进人员未清楚了解前任人员与盛世星辉公司开发人员的沟通过程;或是因为中易游公司在履行过程中自行更改软件开发思路,新增需求事项。而涉案软件开发过程中缺乏《项目功能说明书》和软件开发计划的指引和约束,进一步加剧了前后端开发人员对接混乱的状态。
以上情形,客观上都造成涉案软件开发进度的延宕,故开发进度被延宕的原因不应简单归责于盛世星辉公司。
3.通过增补的方式对原合同中的需求进行变更,因工作量增加导致另一方不能在原合同约定的期限内履行义务的,不能视为违约。
在(2019)最高法知民终396号中,最高人民法院认为:仕达新语公司认为无猜公司未经确认擅自提前开发造成需求变更或增加,并直接导致多次修改以及成果延迟交付,是无猜公司违反合同约定,对于合同的解除存在过错。
从双方沟通记录来看,在整个设计开发的过程中,仕达新语公司多次变更其设计思路及功能需求。虽然委托方有权利在计算机软件开发的过程中对其需求进行适度更改,但这种更改应该在一定限度之内,否则将导致软件开发目标不明确、开发方工作量骤增、验收标准难以确定等问题。
根据本案的情况,仕达新语公司的需求变更显然已超出适度的范围。在此情况下,无猜公司仍然积极配合解决新需求,应当认为无猜公司具有积极履行合同义务的态度。其次,根据双方往来沟通记录,无猜公司已完成了涉案合同约定的第6-7周的模块设计等工作并向仕达新语公司进行了交付,仕达新语公司亦认可无猜公司已提交了70%的工作成果。
最后,虽然双方未就变更的需求等签订补充协议,但部分需求的变更或新增必然会导致工作量的增加或反复,从而导致工期的延长。因此,无猜公司未提交符合验收标准的工作成果,主要责任在于仕达新语公司,仕达新语公司应当承担违约责任。无猜公司因工作量的增加而不能在原合同约定的期限内履行义务,不能视为违约。
4.开发方的履行客观上超出了合同约定的期限,但委托方并未明确提出异议,而是继续与开发方就软件开发的内容进行沟通,并对软件开展测试反馈,此种情况委托人并不构成迟延履行,但如最终交付的软件仍然未满足委托方要求的,此时开发方构成迟延履行。
在(2020)最高法知民终592号上诉人融卫公司与被上诉人捷途公司等计算机软件开发合同纠纷案中,最高人民法院认为,捷途公司于2018年4月29日提交软件验收,该日期显然已经超过了《APP制作合同书》关于交付时间的约定,但是融卫公司和捷途公司在交付日期届满后仍然继续就修改、优化软件交换意见并付诸实施,由此可知,双方当事人就延长交付验收时间达成了合意,捷途公司在2018年4月29日交付软件没有违反约定。
三、是否系部分履行
计算机软件开发合同包含的各系统的功能和内容是否具有可分割性、未履行部分占合同义务的比重大小、未履行部分的特殊重要性、已履行部分与未履行部分是否有相互依存关系、未履行部分是否可能继续履行、违约后果能否补救等因素,是法院在认定部分履行的违约形态的重要依据。
1.未履行部分具有独立性,不影响已经履行部分内容的稳定运行,通常会肯定已履行部分的独立完整性,并根据实际情况决定是否对未履行部分的合约内容予以法定解除。
(2021)最高法知民终1191号中,最高法认为:盈天地公司主张涉案项目的开发工作已经完成,并经育悦公司确认上线试运行,故依照合同约定,育悦公司应当向盈天地公司支付合同剩余款项。而育悦公司主张盈天地未完成自有平台及加盟连锁平台架构部分的开发,且其开放试运行的收退费管理系统存在大量问题无法达到验收标准。
北京知识产权法院认定:在案证据中确无能够体现盈天地公司已经完成了附则一《工作说明书》所记载的如多组织架构设计、多组织平台化API的管理、多组织数据库设计等自有品牌及加盟连锁平台架构部分的开发任务并向育悦公司交付的相关内容,故在盈天地公司并未提交充分证据的情况下,认定盈天地公司未完成自有品牌及加盟连锁平台架构部分的开发,构成违约。
但依照涉案合同的相关约定并结合双方在缔结合同前的磋商过程中所形成的证据可知,自有品牌及加盟连锁平台架构部分与系统的其他部分之间实则并无相互依存关系,由系统的试运行反馈亦可知,自有品牌及加盟连锁平台架构部分的缺失亦未影响系统的稳定运行。故北京知识产权法院认定:育悦公司仅有权解除涉案合同中关于自有品牌及加盟连锁平台架构部分的约定。
2.合同整体不可分割,已履行部分系统的正常运行依赖未履行部分内容,即使未履行部分所占比重较小,仍然可能影响合同目的实现,从而构成根本违约。
合同标的软件具有不可分割性,尽管一方已经完成了大部分工作,如进行了需求调研、架构建设、编写了绝大部分程序,但系统整体上并未开发完成,如果无法交付一个完整的系统结果,那么系统最终无法顺利运行,则这些履行的部分对于系统需求方没有任何价值,合同目的的实现也无从认定。
在(2014)三中民终字第00186号中,北京市第三中级人民法院认为:尽管在案证据表明华昊科技公司已经完成了涉案网站制作工作的70%,但根据合同约定,华昊科技公司应当于2012年10月24日前完成涉案网站的制作,而直到2013年2月2日华昊科技公司尚未履行完毕,且华昊科技公司曾明确表示愿意放弃后期未支付的制作费。法院综合考虑合同性质、履约情况、一方履约能力等因素,最终认定华昊科技公司未能提交最终完成成果的行为致使北青旅公司无法实现合同目的,构成根本违约。
四、合同目的是否无法实现
就合同目的是否无法实现层面而言,判断其的根本原因在于合同是否因一方根本违约而解除。就委托方而言,其合同目的在于按时获得能够满足合同约定功能的软件系统;对受托人而言,其主要目的在于按时获得软件开发的费用。因此,判断合同目的能否实现需要重点把握以下问题:
1.合同解除需以合同目的无法实现为依据,合同动机并不构成解除合同的正当理由。
(2021)最高法知民终727号中,最高法认为:合同目的一般是合同的典型交易目的,即当事人订立合同所欲实现的法律效果,这种典型交易目的在每一类合同中基本上是相同的,一般不因当事人订立某一具体合同动机的不同而改变。当事人订立合同的动机,一般是经济上或者精神上促使当事人订立合同的念头。
除典型交易目的所体现的动机外,当事人订立合同的其他动机并不当然等同于其合同目的;如果当事人订立合同的其他动机没有通过某种合同约定明确体现在合同中,一般并不能构成其合同目的。
大猫公司作为涉案计算机软件开发合同的委托方,其合同目的是取得约定的软件,而大猫公司为促进租赁业务主观上要求软件运行后能够实现的经济效果或者其他效果是其合同动机。大猫公司试图通过开发的软件优化库存管理的上述动机没有在合同中通过某种约定明确体现出来,且天马飞燕公司并不接受其在合同订立后增加开发软件的库存功能,大猫公司主张的该项订约动机并不能构成其订立涉案合同的合同目的。
由此,大猫公司以涉案软件缺少库存功能为由主张其无法实现合同目的,缺乏事实和法律依据,本院不予支持。
2.软件功能缺失与软件功能瑕疵对软件开发存在不同意义,功能瑕疵可通过修复解决,并不影响合同目的实现;功能缺失也需进一步明确是否影响整体运行才能判定合同目的是否无法实现。
如合同约定软件应当具备A、B、C、D等功能,但经测试并不具备D功能,由于计算机软件的运行需要不同模块的相互配合,其中某个模块的功能缺失直接影响软件的整体运行,此种情况下通常可以认定被告交付的软件不符合合同约定,无法实现合同目的。如果经测试软件具备D功能模块,但在具体运行中存在一些Bug,这些Bug可以经过后续修改完善予以弥补,此种情况下,通常不应认定被告交付的软件无法实现合同目的,不应认定构成根本违约。
(2021)最高法知民终911号中最高法认为:对于未能完全实现的子功能,从双方在软件开发过程中形成的会议记录来看,确实存在贵州能投公司指令“暂时无需开发”的情形,且根据系统运行情况来看,该功能的缺失并未影响软件的正常运行。
在贵州能投公司并未举证证明其在软件上线运行的一年间提出过软件存在问题的情况下,应认定腾燊嘉诚公司开发的软件达到了涉案合同约定的整体验收标准,即“支持阶段的两月结结果正确”。
另外,功能的缺失通常可以认定开发方存在违约行为,但并不必然导致合同目的无法实现。如果仅仅是软件中的非核心功能缺失,并不对软件运行或者使用产生实质性影响,通常也不宜认定构成根本违约。
如(2015)沪知民初字第594号中最高法认为:越诚公司所开发的软件存在打印、电缆井示意图的导出、系统管理、系统日志等功能未完成或存在缺陷,但这些功能并非涉案软件的主要功能,也未实质性地影响软件的正常使用,法院认为,辅昊公司以此主张越诚公司构成根本违约不能成立。
3.计算机软件开发合同的主给付义务是委托方向开发方支付价款,开发方向委托方提交符合合同要求的软件,如任何一方违反主给付义务均构成根本违约,非违约方有权据此解除合同。
在(2017)京73民初1876号案中,委托人多次要求研究开发人履行合同并交付开发成果,但研究开发人没有交付任何产品。委托人认为研究开发人的严重违约行为已经导致合同目的无法实现,要求解除合同并要求研究开发人承担违约责任。法院认为,研究开发人未如期完成全部开发工作已构成违约,依法应当承担违约责任;因研究开发人未及时履行合同义务,致使本案合同目的不能实现,判决解除合同,研究开发人向委托人返还部分开发费用并支付违约金。
在(2013)沪二中民五(知)终字第100号案中,在技术开发合同约定开发周期到期之后,经委托人多次督促,研究开发人仍未能向委托方交付合格的技术开发成果。委托人认为研究开发人的严重违约行为已经导致合同目的无法实现,要求解除合同并要求研究开发人承担违约责任。
法院认为,研究开发人没有按照约定及时全面完成项目软件开发任务,应当承担违约责任,研究开发人的违约行为导致合同目的无法实现,判决解除合同,研究开发人向委托人返还部分开发费用。该案由于委托人存在未按期支付开发费用等行为,对研究开发人未按时完成开发成果亦负有过错,因而法院并没有支持委托人主张违约金的诉讼请求。
除了主给付义务外,当事人在合同履行中还应遵循诚实信用的原则,根据合同性质、目的和交易习惯履行通知、协助、保密等义务。就计算机软件开发而言,开发方通常应当为委托方开具付款发票,交付软件后还应当提供必要的安装使用指导服务。通常情况下,违反上述义务并不会导致合同解除,但如果开发方开发的软件较为特殊,运用通常的技术手段无法安装使用,开发方又拒绝提供必要的指导导致软件无法使用的,委托方有权解除合同。
如(2016)沪73民初112号案中,法院认为:首先,被告应当向原告交付涉案网站运行的软硬件环境。其次,现有证据以及被告庭审中的陈述等表明,依据被告第一次提交的安装说明,原告聘请的技术外包无法实现对涉案网站源代码的安装。第三,在原告聘请的技术外包请求被告予以协助时,被告并没有积极为原告提供进一步的安装指导,直到本案纠纷发生后应鉴定机构的要求才向鉴定机构提交了可以实现安装的技术说明。而且在原、被告沟通过程中,被告明确表示“在生产环境中安装这种机器,我们可以提供这种服务。
但是这超出了已经约定的范围,而且我们会就该服务另外收取服务费用”。被告作为软件开发者在向原告交付软件时应当一并交付安装所需的相应技术资料,亦应在原告表示无法安装涉案软件时提供协助或者指导。但被告拒绝为原告安装涉案软件提供协助、指导,有违诚实信用原则,导致涉案网站源代码无法正常安装并投入使用。原告有权解除涉案合同,要求被告返还已经支付的合同款项。