计算机软件开发合同纠纷疑难问题研究

  作者 | 黎淑兰,上海市第三中级人民法院副院长、上海知识产权法院副院长;
  
  陈惠珍,上海市第三中级人民法院审判委员会专职委员;
  
  范静波,上海知识产权法院法官。

  
  摘要:计算机软件开发合同案件审理中所涉及的争议问题较为复杂。对于开发方是否交付了合格软件,应当准确运用各种合同解释方法进行判断;开发成果是否交付的举证责任分配应当与一般委托合同一致,对于通过云端部署软件应根据个案具体情况进行认定;在合同目的是否实现的认定上,软件主体功能的实现通常是判断委托方合同目的的依据,特殊情况下违反合同附随义务可导致委托方合同目的不能实现。
  
  关键词;计算机软件开发合同、成果交付、迟延履行、合同目的
  
  在知识产权法院成立之前,有关计算机软件开发合同纠纷一审案件由基层法院受理。知识产权法院成立之后,为集中审理一审技术类知识产权案件,2014年10月27日最高人民法院审判委员会第1628次会议通过的《最高人民法院关于北京、上海、广州知识产权法院案件管辖的规定》明确,涉及计算机软件一审民事和行政案件由知识产权法院管辖。上海知识产权法院自成立以来,截至2018年8月31日,共受理计算机软件开发合同纠纷案件699件,审结534件。
  
  一、计算机软件开发合同纠纷案件的主要特点
  
  (一)争议焦点相对集中。
  
  计算机软件开发合同纠纷中,单纯因拖欠合同款项引发的诉讼较少,实践中该类案件的争议焦点主要集中在开发成果是否交付及交付内容是否符合合同约定、当事人是否存在履行迟延、委托方合同目的是否实现的认定等问题。
  
  (二)调撤率较高。
  
  在审结的该类案件中,撤诉208件(包括按撤诉处理)、调解192件,调撤率达75%。调撤率较高的原因主要有以下两个方面:一是当事人对胜诉缺乏明确预期。当事人对合同履行事实的证据固定程度较低,举证较为困难,尤其是委托方缺乏证据意识并在技术事实的说明上处于弱势地位,故案件事实常常处于真伪不明的状态。二是案件事实复杂,诉讼成本较高。计算机软件开发合同履行期间较长,且履行过程中通常涉及需求的调整和变更,查明事实往往需要进行多次庭审。另外,有些技术事实需要鉴定,鉴定费用普遍过高。审理时间较长和经济成本较高是当事人愿意和解的原因之一。
  
  (三)反诉比例较高。
  
  经统计,被告提起反诉的案件共130件,占收案18.6%,明显高于其他知识产权纠纷案件。反诉率较高的主要原因在于:一是软件本身的技术性和软件功能项、模块项的不确定性,导致双方签署合同时对产品的详细设计或者验收标准的约定较为模糊;二是在开发过程中,委托方和开发方都有可能会依据开发情况对软件的功能进行调整和细化,容易导致双方对履约标准存在较大争议。
  
  (四)涉移动端计算机软件纠纷多。
  
  近年来,随着移动互联网的发展,涉及移动端计算机软件合同纠纷明显增长。在上海知识产权法院受理的软件开发合同纠纷中,近一半涉及手机应用APP软件,覆盖手游、医疗、教育、美妆、旅游等多个领域。
  
  二、计算机软件开发合同纠纷审理中的疑难问题
  
  (一)关于开发成果是否符合合同约定的认定。
  
  开发成果是否满足合同约定是绝大多数计算机软件开发合同纠纷的主要争点,实践中,开发方常见的抗辩意见主要有两类:一类是委托方所主张的软件存在的技术问题并不存在;二是委托方所主张的技术问题不属于合同约定的开发范围。第一类情况属于技术事实的查明问题,在此主要讨论后一种情况。委托方所主张的技术问题是否属于合同约定的开发范围之内,常见的争议又可分为两种:一是委托方所主张的存在的技术问题是否属于合同约定的开发范围之内;二是原合同虽未约定开发某项功能,但在合同履行过程中双方是否就开发新功能达成了合意。
  
  1.当事人所主张的软件存在的技术问题是否属于合同约定的开发范围之内
  
  司法实践中,当事人所主张的技术问题在合同中完全未涉及的情形较少,多数情况下合同就相关功能问题使用了抽象或者较为上位的概念进行表述,而委托方所主张的技术问题通常是一个具体的功能问题。因此,判断委托方所主张的技术问题是否在合同约定范围之内,本质上是一个合同解释的问题。
  
  所谓合同解释,即是运用一定的解释方法探求当事人的意思表示。《合同法》第125条规定,当事人对合同条款的理解有争议的,应当按照合同所使用的词句、合同的有关条款、合同的目的、交易习惯以及诚实信用原则,确定该条款的真实意思。根据上述规定,合同解释的方法包括文义解释、整体解释、目的解释、交易习惯解释和诚信解释。就软件成果是否满足合同约定的解释而言,往往涉及到技术问题与法律问题的交织,在合同解释领域内属于相对特殊的一类,以下结合案例就实践中如何具体运用各种解释方法进行分析。
  
  (1)文义解释。文义解释,主要是指依据合同所使用的词句确定合同中权利义务关系的解释规则。合同解释系以探求当事人意思表示为目的,而当事人的意思表示又是通过语言文字来传达,合同解释通常应以文义解释为基础。由于当事人是根据合同约定行使权利和履行义务,如果脱离文义进行解释,不仅丧失合同解释的基准,而且会导致当事人对合同履行预期不明确。立法者亦认为,合同的条款用语言文字组成,解释合同必须先由词句的含义入手。在司法实务中,最高人民法院在淄博万杰医院与中国银行淄博博山支行等管辖权异议一案中明确:从合同解释角度来看,当事人对合同条文发生争议时,必须探究当事人内在的真实意思表示,判断当事人真实的意思表示首要方法是判断当事人字面的意思表示
  
  在对计算机软件开发合同约定的具体功能进行文义解释时,应特别注意有关用语在所述领域是否具有特别意义,如果已有特别意义则不能从一般生活意义上对该用语进行“望文生义”。正如有学者指出:“所谓文义就是该词或者用语在一般的语言习惯上被了解的意涵。唯如该用语或词在法律圈或相关行业已有相约定成俗之特别的其他意涵,那么便以后者为他们的意涵。”例如,在王某与涵予公司计算机软件开发合同纠纷案中,涉案合同约定所开发的教育系统软件包括“聊天”和“购物”模块。涵予公司实际开发的软件仅有聊天和购物的界面,但不具有实际的聊天和购物功能。双方对于涉案合同关于“聊天”和“购物”模块的约定是否应具有实际的功能产生争议。法院认为,在对涉案合同上述相关术语的含义进行解释时,应当从所述领域人员的一般理解来进行解释,在软件开发合同中约定开发“聊天”和“购物”模块,通常应理解为软件具有实际的聊天和购物功能,否则开发上述功能便不具有实际意义,将“聊天”和“购物”模块解释为仅需开发相应页面与常理不符。
  
  (2)体系解释。体系解释又称整体解释,是把全部合同条款和构成部分看做一个统一的整体,从各个合同条款及构成部分的相互关联、所处的地位和总体联系上阐明当事人系争的合同用语的含义,或者拟出欠缺的合同条款。在计算机软件开发成果是否满足合同约定的解释中,整体解释方法的运用尤为重要。这是因为计算机软件是一个由各种功能集合而成的系统,各功能之间通常存在有机联系,在对合同约定的某一软件功能进行解释时,如果不把争议条款的用语与合同上下文就软件其他功能的约定进行联系,只是孤立的对争议条款进行解释,就很难准确理解当事人真实的意思表示。例如,在今通公司与翘楚公司计算机软件开发合同纠纷案中,今通公司主张翘楚公司未开发“采购/供应商安装客户端”功能。涉案合同并未明确约定是否需开发该功能,今通公司认为该功能是此类软件通常应具备的功能,但在合同附件中一个关于采购商功能的条款明确约定:“采购商将其定位为访客角色,采购及供应商无须安装独立的客户端,通过网页沟通。”法院认为,虽然合同中并未就是否开发该功能进行明确约定,但通过合同附件中的其他条款进行解释,可以得出该软件并不需要开发“采购/供应商安装客户端”功能的结论。
  
  (3)行业惯例。参照习惯或者惯例原则,是指在合同文字或者条款的含义发生歧义时,按照习惯和惯例的含义予以明确;在合同存在漏洞,致使当事人的权利义务不明确时,参照习惯或者惯例加以补充。计算机软件所涉及的功能众多,通常仅约定软件的主要功能及其子功能,不可能就所有的技术细节进行约定。在对争议的具体技术问题是否属于合同约定开发范围之内时,应当特别注意参照行业习惯进行解释,不能简单地以合同未作明确约定将争议问题排除在合同约定之外。如果争议的具体技术功能属于此类软件通常应具备的功能,或者所述领域内的人员普遍认为合同对此类问题已无需特别约定的,原则上应当认定为属于合同约定范围之内。例如,在和尊公司与通股斯公司计算机软件开发合同纠纷案中,涉案合同约定开发一个具备购买产品功能的医疗服务软件。和尊公司主张软件存在若干技术问题,其中一个问题是用户在购买产品时每次只能购买一个,若要购买多个产品需进行多次操作。通股斯公司认为涉案合同并未就产品一次性购买数量问题进行明确约定,其不存在违约行为。法院认为,一次性购买多个同类产品是购物类软件应具备的基本功能,未实现该功能构成瑕疵履行。该案便是运用了一般的商业习惯进行解释,用户一次性购买多个产品是市场上购物类软件均具备的功能,该功能作为支付环节的一个细小功能,涉案合同未作特别约定也属正常,并且在技术上不需要额外付出成本可以轻易实现。
  
  (4)目的解释。当事人订立合同均为达到一定目的,合同的各项条款及用语均是达到该目的的手段。因此,确定合同用语的含义乃至整合合同内容自然须适用于合同目的。也有观点认为,所谓“目的解释”是一种判断标准而非解释方法,合同目的被用来印证文义解释、整体解释、习惯解释的结果是否正确,当上述解释结论与合同目的相矛盾时,应予否定。
  
  在巨江公司诉华兴公司计算机软件开发合同纠纷案中,双方就合同性质是委托开发合同还是合作开发合同存在争议。合同约定:巨江公司负责软件系统的研发、设计、生产、安装、技术支持、售后服务等工作,并协助华兴公司成功完成上海铁路局的现场演示工作;华兴公司负责软件系统的研发、设计、技术支持、市场推广,在通过上海铁路局的验收后,优先采购巨江公司的产品;若该系统演示成功,且华兴公司取得上海铁路局订单,则华兴公司之前支付的预付款计入之后的采购款,若未取得订单,则巨江公司应退还华兴公司的预付款。后涉案系统未获得上海铁路局的认可,巨江公司认为其义务仅是配合演示,是否获得上海铁路局的认可并非其合同义务,要求华兴公司支付有关开发费用。该合同并未对合同开发过程中产生的费用由何方承担进行约定。从合同上述有关权利义务以及付款的约定来看,双方签订合同的目的是共同开发软件以取得上海铁路局的订单,而非华兴公司委托巨江公司开发软件,在最终未取得订单且合同未明确约定的情况下,从合同目的解释的角度,巨江公司无权要求华兴公司支付其软件开发的费用。
  
  2.合同履行过程中双方是否就开发新功能达成了合意的认定
  
  计算机软件开发合同在履行过程中,当事人的需求往往会发生变化,当争议的软件功能在原合同中未作约定时,委托方通常主张该功能属于在履行过程中双方达成合意所新开发的功能。判断合同履行过程中双方是否就开发新功能达成了合意,本质上是合同变更的认定问题。
  
  合同的变更,指不改变合同的主体而仅改变合同内容的情形,它是在合同成立以后,尚未履行或者尚未完全履行以前,基于法律规定、法院或者仲裁机构的裁判行为或者当事人的法律行为等,使合同内容发生变化的现象。就计算机软件开发合同而言,功能变更主要是当事人的协商变更,一般不涉及依法律或者依法院职权变更的情形。根据《合同法》第77条、第78条的规定,当事人协商一致,可以变更合同。当事人对合同变更的内容约定不明确的,推定为未变更。法院在软件开发功能是否发生变更的认定上,着重审查当事人是否就合同变更协商一致。当事人通过口头或者书面就合同协商变更的,相对容易审查认定。实践中较易产生争议的是,开发方在合同履行过程中新开发了某项功能,而委托方对此保持沉默,此种情形能否认定为合同变更则值得研究。
  
  合同变更的本质是当事人达成新的协议更改原合同的部分条款,判断双方是否协商一致,仍要遵循合同要约承诺规则。沉默既不表示同意,也不表示反对。通说认为,承诺一般应当用明示方式,沉默或者不作为本身不构成承诺,除非当事人事先对此进行了约定。我国《合同法》虽对此没有明文规定,但《合同法》第22条规定:“承诺应当以通知的方式作出,但根据交易习惯或者要约表明可以通过行为作出承诺的除外。”立法者对该条款进行了如下解释:“《联合国国际货物销售公约》第18条规定:‘要约人声明或做出其他行为表示同意一项要约,即为承诺。缄默或不行为本身不等于承诺。’我国合同法的本条规定与条约规定的意思一致。” 在凯岸公司与麦易公司计算机软件开发合同纠纷案中,开发方麦易公司主张“车贷项目”系凯岸公司在合同履行过程中的新增项目,并据此要求凯岸公司支付相应开发费用7万元。涉案合同未约定需开发“车贷项目”,麦易公司认为在合同履行过程中已就开发车贷项目达成合意。该案中,麦易公司提供新增项目的证据为其通过电子邮件向凯岸公司发送的《工作计划》,该《工作计划》中包含了“车贷项目”。凯岸公司并未就该邮件确认,也未有其他证据显示凯岸公司同意麦易公司开发“车贷项目”。法院认为,该案中,凯岸公司对麦易公司提出开发“车贷项目”的要约保持沉默,且未以实际行为作出意思表示,因此,不能认定涉案合同的开发范围已经发生了变更。
  
  (二)关于开发成果是否交付的认定。
  
  计算机软件开发成果是否交付是审理中当事人常见的争议问题,在一些案件中也是判断软件交付成果是否满足合同约定的前提,以下就审判实践中一些争议问题进行分析。
  
  1.关于开发成果交付举证责任分配的一般规则
  
  判断开发成果是否交付,实质上是一个证据判断的问题,而证据判断首先涉及到举证责任分配的问题。交付行为是一个积极行为,由开发方承担软件已经交付的举证责任在实践中并无异议。常见的争议问题是:在开发方已经提供了软件成果交付的初步证据,但在诉讼中基于各种原因,导致软件开发成果灭失,由此所产生软件最终交付的举证责任应由何方承担。
  
  有观点认为,由于开发方通常是在自己服务器上编写代码再通过合同约定的方式交付委托方,即使因委托方或者其他客观原因导致诉讼中已无法提供软件,开发方也应当提供备份软件以证明开发工作已经完成,否则应承担一定的不利后果。我们认为,当事人对于案件事实的查明都具有积极的举证义务,但即使开发方在此情形下未提供备份软件,开发方亦不应承担不利后果,否则有违举证责任的分担规则。就一般的委托合同而言,如果受托方已经将标的物交付给委托方,委托方主张标的物有瑕疵,但由于委托方的原因导致诉讼中已无法对标的物进行检验,当然应由委托方承担不利后果。诚然,计算机软件代码具有可复制性,但当开发方在代码已交付委托方后,其在法律上并无备份义务,相应的举证责任仍应由委托方承担。例如,司法实践中常见的委托方已经书面签署确认,原则上应视为交付。在酷服公司与畅购公司计算机软件开发合同纠纷案中,畅购公司的项目负责人员签署了项目上线确认单,该确认单载明:“本项目实施工作完成,系统各模块符合要求。”畅购公司在该案中虽就软件是否依约完成提出异议,但因自身原因无法提供软件供法院核查,因此,应认定项目已经按约完成。再如,在高某与匡承公司计算机软件开发合同纠纷案中,匡承公司的技术人员曾对高某开发的软件进行过测试,匡承公司的法定代表人签字确认验收,但其在诉讼中表示其本人并未参与验收,签字确认是受到误导。法院认为,匡承公司对其主张并未提供证据予以证明,在已签字确认验收的情况下应视为软件已经交付。
  
  2.通过云端部署软件在认定软件交付中存在的疑难问题
  
  随着云技术的不断发展,在计算机软件开发过程中,开发方通常会将开发成果阶段性的部署在云服务器上,供委托方实时进行测试,最终交付成果也是通过在云服务器上部署代码。实践中,部署软件的云服务器既可能是以委托方名义申请并付费租用的,也可能是以开发方名义申请付费租用的,待开发成果部署完成后,再将租用的云服务器转移给委托方。在诉讼时如果服务器能够正常登陆,通常应登陆服务器勘验确定软件是否已经完成部署,较为困难的情形是在诉讼中服务器已经无法正常登陆。由于在开发过程中,为部署和测试的方便,双方通常都掌握云服务器的账号和密码,在诉讼中对于软件是否交付,以及由谁承担举证责任容易产生争议。
  
  当事人在提起计算机软件开发合同纠纷诉讼时,合同履行往往已经处在停滞状态,由于服务器的租赁有一定的成本,实践中服务器无法登陆主要是由于当事人未续费租赁所致。如果合同明确约定由某一方承担服务器的租赁费用,则该方应就服务器不能登陆而无法查明软件是否交付承担举证责任。如果合同未就租赁费用由谁承担进行约定,原则上应推定由委托方承担相应租赁费用,因为开发费用通常并不包括云服务器的租赁费用。在开垦路桥公司与乐君公司计算机软件开发合同纠纷一案中,开垦公司主张乐君公司未交付涉案软件。该案中,双方确认涉案软件系通过云服务器交付,开垦公司曾支付费用给乐君公司购买云服务器,后由于云服务器到期未续费已无法打开。乐君公司在本案中提交了双方往来微信聊天记录,聊天记录显示乐君公司告知开垦公司云服务器地址、用户名和密码,开垦公司亦打开过涉案软件并就此提出修改意见。乐君公司已经提供了软件交付的初步证据,由于开垦公司未续费导致云服务器不能登录且其未提供任何反证,故法院认为乐君公司已经交付了软件。
  
  (三)关于合同目的实现的认定。
  
  计算机软件开发合同纠纷中,委托方以合同目的不能实现主张开发方构成根本违约,并提出合同法定解除是最为常见的诉请,如何认定合同目的是案件审理的重点。
  
  合同目的,首先是合同的典型交易目的,即当事人所欲实现的法律效果。这种典型交易目的在每一类合同中是相同的,不因当事人订立某一种具体合同的动机不同而改变。例如,在买卖合同中,买受人的典型交易目的是取得标的物的所有权,出卖人的典型交易目的是获得价款。就计算机软件开发合同而言,委托方的典型交易目的是取得开发成果;开发方的典型交易目的是取得价款。但在个案中,不能仅从抽象的视角机械地将委托方需取得开发成果简单地作为所有开发合同中委托方的合同目的,而应根据具体情况来判断其合同目的,否则将不能清晰地划定根本违约与轻微违约之间的界限
  
  1.软件主体功能的实现通常是判断委托方合同目的的依据。
  
  在大部分计算机软件开发合同中,委托方合同目的是依约取得开发成果。在判断开发方合同目的是否实现时,应着重判断软件的主体功能是否完成。如果软件主体功能已经实现,个别功能缺失或者存在瑕疵,委托方不能据此主张合同法定解除。例如,在越诚公司与辅昊公司计算机软件开发合同纠纷中,越诚公司所开发的软件存在打印、电缆井/电缆井示意图的导出、系统管理/系统日志等功能未完成或者存在缺陷,但该些功能并非涉案软件的主要功能,也未实质性地影响软件的正常使用,法院认为,辅昊公司以此主张越诚公司构成根本违约不能成立。
  
  2.特殊情况下开发方违反合同附随义务可导致委托方合同目的不能实现。
  
  《合同法》第60条规定,当事人应当按照约定履行自己的义务。当事人应当遵循诚实信用的原则,根据合同的性质、目的和交易习惯履行通知、协助、保密等义务。该条款中通知、协助和保密的义务,就是当事人履行合同时的附随义务。附随义务是指在主给付义务之外、不具有独立意义的、只能辅助主给付义务发挥功能的义务。通常情况下,债务人不履行主给付义务,债权人得解除合同;而不履行附随义务,债权人原则上不得解除合同,仅可就其所受损害,依不完全履行的规定,请求损害赔偿。但在计算机软件开发合同中,由于软件的运行、实施、维护具有很强的专业性,如果开发方未履行有关的附随义务,导致委托方无法正常使用软件,也可导致委托方签订合同目的无法实现。
  
  在亚力山顿公司与探谋公司计算机软件开发合同纠纷案中,合同约定由探谋公司为亚力山顿公司开发电子商务及销售推广网站。后双方在合同履行过程中发生争议,经协商后双方签订和解协议,和解协议约定探谋公司向亚力山顿公司提交涉案软件的源代码,该源代码应当满足合同约定网站范围的实质性功能。和解协议签订后,探谋公司通过邮件向亚力山顿公司发送涉案软件的程序包及服务器软件资料。亚力山顿公司通过正常技术手段无法对上述程序进行部署安装,探谋公司认为部署安装服务已经超出合同约定范围,需另行收费。亚力山顿公司无奈只得另行委托其他公司开发网站。法院认为,该案委托方最终的合同目的并非仅仅取得软件代码,而是要将代码安装部署后运行使用。如果软件代码的安装部署是本领域普通技术人员即可完成的,那么探谋公司未提供安装服务尚不能认定亚力山顿公司的合同目的不能实现,但本案代码安装已非普通技术人员可以完成,因此,探谋公司违反附随义务导致亚力山顿公司无法正常安装、使用计算机软件,致使亚力山顿公司的合同目的无法实现,其有权解除合同。