软件开发合同纠纷案件重点问题解析

来源:北京浩天贵阳律师事务所

文章摘要
当前,随着大数据及元宇宙产业的发展,各类企业、机构开展数据整合及业务数字化建设的热情达到了前所未有的高度,数据化需求的增加带动计算机软件行业发展呈现新一轮蓬勃态势。

当前,随着大数据及元宇宙产业的发展,各类企业、机构开展数据整合及业务数字化建设的热情达到了前所未有的高度,数据化需求的增加带动计算机软件行业发展呈现新一轮蓬勃态势。需求方自身大多并不具备软件开发所需的专业化技术人才,多采用委托专业机构定制开发的模式采购相关软件产品,与此同时伴随着软件开发合同纠纷案件数量的激增。
一、案件基本走向
软件开发合同纠纷的产生通常起源于开发方与委托方对软件功能需求无法达成一致,该类型案件普遍存在反诉。对于委托方而言,多认为开发方无法开发出满足合同要求的软件产品,其诉讼请求多表现为要求解除合同、返还已支付款项、赔偿损失并承担违约责任。从开发方的角度,多认为开发成果已经符合合同要求,诉讼请求多表现为要求继续履行或同意解除,同时要求委托方支付开发款项、赔偿损失并承担违约责任。
软件开发与各类设计型工作类似,是将一方主观意图经过另一方的技术加工进行客观呈现的过程,因此成功的软件开发是委托方与开发方合作配合的成果。当软件开发合同纠纷发生时,双方很可能对软件功能如何实现已经无法达成共识,进行合作的信任基础已经打破,合同的履行很容易陷入僵局。因此无论合同双方是否存在过错,除个别情形外,司法实践中该类纠纷基本都以解除合同为结局。
二、焦点问题
根据《中华人民共和国民法典》第五百六十六条的规定,在合同解除的前提下,软件开发合同基于其特殊性,无法恢复原状,因此解决纠纷的重点在于对合同的实际履行情况、产生的损失及各方的违约责任认定。基于该类案件的共性,要明确合同解除后的损失及责任分担,通常需要对以下几个关键点进行分析和把控:
1、软件开发需求
软件开发需求简单的说,就是委托方通过开发活动到底想要获得一个能实现什么目的或功能的软件。开发需求可以是由委托方直接提供的,也可以是开发方在对委托方进行调研分析基础上,将委托方非形式的需求表述转化为完整的需求定义,再由双方进行共同确认。因此在很多大型的软件开发项目中,挖掘和分析客户需求也是开发方的合同义务之一。软件开发需求的确定是合同履行情况和违约认定最重要的依据。
需求确定的依据。开发需求通常以书面形式在合同、招投标文件中进行约定,或在双方另行达成的需求说明书中进行明确,但实践中不乏各方对需求理解不一致的情形。尤其在合同描述与双方沟通的开发需求存在出入的情形下,履行中一旦出现意见分歧,极有可能导致开发进程无法继续。在该种情形下,如没有明确证据证明双方对开发需求另有合意,司法实践中通常以合同内容作为开发是否满足约定的评判标准。
在合同履行及案件审理过程中,双方就合同约定的技术目标和技术内容的理解一直存在分歧。根据合同法第六十一条之规定,合同生效后,当事人就质量等内容没有约定或者约定不明确的,可以协议补充;不能达成补充协议的,按照合同有关条款或者交易习惯确定。在本案当事人就合同约定的相关质量标准未达成协议的情况下,原审法院依据涉案合同有关条款确定。

——(2021)最高法知民终1228号


需求细化与需求变更。基于软件开发的行业特性,委托方对计算机专业知识有欠缺,开发方对委托方行业情况的了解亦有隔阂,双方在前期可能无法完全明确开发需求,故在订立合同时仅进行了框架性、抽象性的需求描述。此时若委托方未对需求功能的具体实现路径提出要求,开发方以自行选择的开发路径或方式实现功能需求的,应当视为适当履行了合同义务。
在委托方提出补充和完善要求时,则需要判断委托方在开发进程中所提出的各类修改意见、完善方案、变更要求等,是对原有开发需求的变更,还是为实现需求功能提出的细化要求。在合同约定表述较为宏观、抽象或存在用语歧义的情况下,需要结合合同签订背景、合同价格、软件性质、实际履行情况等因素综合考量,解释需求条款,判断是否构成开发需求变更,以及是否就变更达成新的合意。为实现需求功能提出的细化要求符合软件开发行业的正常规律,不影响合同的正常履行。需求变更则直接导致开发功能发生变更,成为开发方主张合理延期、成本增加甚至解除合同的依据。尤其需注意,如委托方的细化要求是不稳定、频繁多变的,则将使开发方陷入反复修改和重复工作中,某种程度上也是需求变更行为。在委托方不适当地增加、删除或频繁变更需求的情形下,开发失败或进度拖延显然不应当完全归咎于开发方。
关于问题9中的评价管理功能,双方在合同中并未约定明确的开发标准,故水滴互联公司现通过后台留言功能实现评价管理的方式并未违反双方合同约定。关于问题15,双方在合同中并未明确约定验证码具体有效时间,故现验证码有效时间为60秒并未违反双方合同约定。

——(2020)津03知民初256号


李**翔虽主张“教练与用户之间的距离(以公里计)”功能属于双方合同约定的开发内容,但双方在之后签订的补充合同中并未写入该项功能需求,并且,根据双方的微信聊天记录,就“教练与用户之间的距离(以公里计)”这一功能的补充研发,双方就各自的主要权利义务并未形成合意。综上,根据本院查明的事实,可以认定“教练与用户之间的距离(以公里计)”功能不属于双方约定的开发内容,龙喵公司已完成涉案软件的开发和交付。

——(2022)最高法知民终41号


根据《系统设计方案》与《委托开发合同》在内容、签订时间方面的承接关系,以及双方当事人在二审中的自认,即《系统设计方案》是对《委托开发合同》的具体细化,森普公司关于原审法院混淆了《委托开发合同》与《系统设计方案》的阶段划分进而事实认定错误的主张不能成立,本院不予支持。

——(2021)最高法知民终180号


……无论双方是否就新需求的完成时间和开发费用达成合意,力培公司提出新增需求及未能及时确认需求的行为都会在不同程度上增加必盈公司的工作量,进而导致开发工期延长;且在涉案合同约定的交付期限届满后,双方仍就软件开发事宜进行沟通,仍在推进合同的履行,应视为双方已通过实际行动变更了涉案合同约定的履行期限,故必盈公司未在涉案合同约定的期限内交付开发完成的软件的行为不构成迟延履行。

——(2022)最高法知民终714号


开发需求与开发目标。当事人在订立开发合同时,除抽象或具体的开发需求外,还存在提出一个总体开发目标的情形。“总体开发目标”可能并不包含整体功能或技术指标的表达,反而更多的体现为开发动机,如“实现各部门数据统一”、“实现全系统智能化管理”等。目标并不完全等同于需求,但如果实现开发目标被作为合同签订的重要因素,则当开发成果无法实现该目标时,委托方可以无法实现合同根本目为由要求解除合同并主张相应责任。同样,若开发目标未被作为开发的重要指标在合同或各方的沟通中予以体现,则不能成为主张根本违约的理由。
根据涉案对接合同关于开发目的的说明,结合双方在合同履行期间的沟通情况、文件签署情况以及双方在原审诉讼中确认接口程序应与WMS系统同时完成上线的事实,足以认定接口程序与WMS系统之间存在重要关联,涉案对接合同亦是为完成WMS系统的运行而签订,接口程序的上线、验收时间应当与WMS系统同步,且普罗格公司应当向格瑞纳公司完整交付上述系统。

——(2021)最高法知民终370号


大猫公司试图通过开发的软件优化库存管理的上述动机没有在合同中通过某种约定明确体现出来,且天马飞燕公司并不接受其在合同订立后增加开发软件的库存功能,大猫公司主张的该项订约动机并不能构成其订立涉案合同的合同目的。由此,大猫公司以涉案软件缺少库存功能为由主张其无法实现合同目的,缺乏事实和法律依据,本院不予支持。

——(2021)最高法知民终727号


2、必要协作
对于大多数软件开发项目而言,尤其是协作要求较高的行业专业性软件开发项目,完成提供技术资料、原始数据、业务信息或技术支持等协作事项是委托方除付款外最主要合同义务之一。完备的软件开发合同还会对开发方提供协作事项的方式、期限、延迟或不予提供的后果进行详细的约定。若委托方在实际履行中未能基于开发需要或合同的相关约定提供必要协作事项,或未能及时对开发方提出的合理协作请求进行适当反馈,则委托方对项目进度拖延、交付成果不符合要求等亦存在过错。
微服四方公司作为委托人亦应积极提供有关资料或提前询问需要哪些资料,而其起初积极配合、后来懈怠,到2019年10月仍有部分接口账号未提供,测试、验收阶段也未按约定时间反馈修改建议。可见,导致项目交付迟延、合同无法履行,双方都存在违约行为,应互负责任……

——(2020)冀知民终261号


3、成果交付
因开发过程存在的变化性,软件开发通常以分阶段形式交付,各阶段交付时间节点、交付方式、交付内容等均存在差异。
就交付内容而言,通常约定在早期阶段交付部分功能模块,后期交付整体目标程序,最终验收后一并交付源代码、资料文档等。对于需要进行需求分析的大型软件开发项目,需求分析说明书、设计方案等也常作为前期阶段的交付内容。上述文件同时作为确定后期开发方向的关键性文件,是判断后期各阶段开发是否符合合同要求的基础;关键文件的交付与阶段性费用的支付及后期各开发阶段的阶段性成果交付之间往往可能存在明确的先后履行顺序和条件,该种情形下,存在行使先履行抗辩权或不安抗辩权的空间。
代琳认为该份《建设方案》即为涉案合同项下的需求文档,而医贰叁公司否认该份《建设方案》为涉案合同项下的需求文档。对此,需根据《建设方案》的具体内容是否包括当事人的需求加以判断。代琳制作完成的《建设方案》共计十六页,具体包括项目背景、项目目标、建设内容、功能内容、技术路线等。而其中篇幅最多的功能内容部分包括区域管理、医院管理、科室管理、医生管理、排班管理、咨询顾问管理、渠道管理、商户管理、药店管理、器材管理、咨询用户管理、患者管理、远程咨询子系统、远程诊断子系统、财务结算子系统等。上述具体繁多的功能内容体现了涉案合同当事人的具体需求,应视为涉案合同项下的需求文档。

——(2021)最高法知民终1515号


就交付时间节点而言,软件行业普遍存在首次交付后经历意见反馈、修改、提交、再反馈、再修改、再提交的过程。因此应当重点明确符合要求的各阶段性成果的最早提交时间是否符合合同约定;若否,则考虑逾期交付的可能诱因,综合需求变更情况、付款情况、开发具体进程情况等判断逾期交付是否构成违约。
本院认为,计算机软件开发合同的履行过程中,随着合同双方交流的不断深入、委托方需求的进一步明晰、以及开发方阶段性工作完成的具体情况等客观变化因素,合同双方对软件开发内容、功能和需求进行调整亦属正常情况,因此,不能仅以开发方交付软件的时间和合同约定时间不一致,就简单认定开发方的逾期交付构成违约。

——(2021)最高法知民终1429号


就交付方式而言,基于开发所使用的服务器归属不同,存在多种交付形式。基于开发方自有服务器开发的,通常交付为提供目标程序安装包或安装包下载链接;基于委托方自有服务器开发的,则交付登陆信息及密码;基于租用的第三方服务器开发的,则上述交付模式皆有可能。无论采取何种交付方式,当因存储失效、服务器故障等导致交付软件或交付记录毁损灭失时,对设备或服务器具有控制权或维护义务的一方将面临举证不能的风险。
涉案软件是为2018年世界人工智能大会而开发,大会期间使用了融宇公司开发的涉案软件……仪电物联公司于大会闭幕后,在大会官网关闭、官方APP及配套系统已下架、相关数据已移除、已不具备验收条件的情况下,又以未能验收及交付为由认为合同目的无法实现,其主张不能成立,本院不予支持。

——(2021)最高法知民终1811号


4、交付成果与合同需求适配性
以明确开发需求范围为前提,在需求确定的基础上,需就需求功能与实际开发功能的适配性情况进行对比。在进行对比时应当把握功能瑕疵与功能缺失、核心功能与非核心功能之间的区别。核心功能是否实现与合同根本目的是否得以实现息息相关;而功能瑕疵或非核心功能缺陷意味着开发方虽然存在违约行为,但往往并不构成根本违约。
虽然钱库公司在第二阶段系统开发和交付的履约过程中的确存在瑕疵,但涉案软件已具备大部分功能模块,并已经能够实际投入商用,钱库公司亦对于软件的开发和优化付出一定人力和技术成本,且本案已认定钱库公司对于第一阶段系统的开发和交付并不构成违约,因此,钱库公司应当就涉案合同约定的第二阶段系统开发费用采取一定比例的减价的补救措施。

——(2021)最高法知民终1429号


作为一款进销存批发小程序,涉案软件在“采购方式”“物流方式”“外发加工出库”和购物车下单等方面功能的缺失,必然会对其采购、销售、库存查询以及财务统计等功能产生实质性影响……在逾期履行合同义务的情况下,点焦公司交付的涉案软件仍不符合标准,庆利加公司依照涉案合同第十一条的约定主张解除合同,理由正当,本院予以支持。

——(2022)最高法知民终698号


三、建议
软件开发活动具有极强的主观性、变化性,对合同各方的协调配合度具有很高的要求。加之因所涉项目价款通常不大,实际开发进程中开发方和委托方多采用即时聊天软件、口头沟通等方式进行开发需求交流、文件传送及成果对接,各类过程文件、记录、沟通资料繁杂且不健全,致使在进入纠纷解决程序后,合同各方都存在举证困难的问题。这也使得该类型案件无论是对于办案法官还是代理律师而言,都是“老大难”型案件之一。为避免真实产生纠纷时被迫落入“和稀泥”的境地,企业应当在开展软件开发项目时做好以下工作:
明确约定开发需求或范围
需求确定是软件开发案件中最核心的问题,也是半数以上纠纷产生的根本原因。在对项目进行前期接洽时,双方应就开发意图进行充分沟通,尽量在合同条款中就双方确定的开发范围及功能要求进行清晰描述,同时约定具体、切实、可行的验收标准。如在合同签订之时暂时无法确定具体的开发范围,应注意合同中的总体开发需求描述是否符合双方预期,并应当在开发进程中尽早根据双方的交流情况对具体开发需求进行总结,并敦促各方及时对开发需求进行反馈与确认。
按约定履行合同义务
实际履行中,合同各方应当严格按照合同约定的时间节点开展开发工作、履行申请、验收、付款等各项程序。就开发过程中遇见的各类技术难题,开发方应当及时向委托方进行反馈协商;委托方就提供资料、文件、技术条件支撑等协作事项要求应当积极进行配合。
以书面形式确定变更
开发进程中出现需求变更的,应当经各方协商达成一致后以书面形式确定变更内容,同时就因变更可能导致的工期调整、合同金额调整事宜,开发方应当与委托方积极沟通,一并以书面形式进行确定。如各方对于需求、工期、金额等变更事项无法达成一致意见的,应当及时采取合理措施止损,避免损失扩大。
规范项目管理,履行过程留痕
树立证据意识和留痕意识,做好合同在履行中的跟踪监察,并注重对合同履行过程留痕,保存有关文件、资料和交接手续,以便在争议发生时能够及时应对。

技术驱动法律,专业成就未来