法小和 · 知识产权法律知识库
法条原文 · 司法解释 · 裁判案例(已脱敏)
资料库 / 裁判案例 / 甲公司乙公司计算机软件开发合同纠纷二审民事判决书

甲公司乙公司计算机软件开发合同纠纷二审民事判决书

裁判文书上海市高级人民法院裁判日期 2018-12-21案由 商业秘密
引注:(2018)沪民终482号

全文

甲公司乙公司计算机软件开发合同纠纷二审民事判决书 上海市高级人民法院 民事判决书 (2018)沪民终482号 上诉人(原审原告、反诉被告):甲公司,住所地中国(上海)自由贸易试验区郭守敬路XXX号XXX号楼XXX-XXX室。 法定代表人:石某,该公司董事长。 委托诉讼代理人:闫某。 委托诉讼代理人:董某,某律师事务所律师。 被上诉人(原审被告、反诉原告):乙公司,住所地北京市。 法定代表人:舒某,该公司董事长。 委托诉讼代理人:吴某,某律师事务所律师。 丙公司(以下简称丙公司)丁公司(以下简称丁公司)计算机软件开发合同纠纷一案,不服上海知识产权法院(2016)沪73民初689号民事判决,向本院提起上诉。本院于2018年9月25日受理后,依法组成合议庭,于同年11月21日公开开庭审理了本案。戊公司的委托诉讼代理人闫某、董某,己公司的委托诉讼代理人吴某到庭参加诉讼。本案现已审理终结。 丙公司上诉请求:撤销一审判决第三项、第四项,改判支持上诉人全部诉讼请求,判令被上诉人承担全部鉴定费用以及一、二审诉讼费用。事实和理由:(一)一审判决所依据的鉴定意见在鉴定人员、鉴定程序、鉴定路径、鉴定结果等方面存在错误,鉴定意见不应成为判决依据。1、三位鉴定人并无计算机软件开发方面的专业背景,无相应的专业能力;两位技术专家的专业背景与知识能力不详,且技术专家只能提供专业咨询意见,不能成为鉴定人,更无权在鉴定意见上签名。2、《上海市科技咨询服务中心知识产权司法鉴定所知识产权司法鉴定补正意见书》(以下简称鉴定补正意见)对《上海市科技咨询服务中心知识产权司法鉴定所知识产权司法鉴定意见书》(以下简称鉴定报告)进行了实质性修改,违反《司法鉴定程序通则》相关规定。3、鉴定报告及鉴定补正意见并无具体鉴定源代码的过程,也无源代码的任何分析,与一审法院委托鉴定的路径要求相反,且鉴定范围被明显缩小,并未鉴定源代码内容是否符合文档的要求。4、鉴定结果明显错误。从数量、对象及鉴定过程来看,鉴定报告“遗漏了54个已实现的接口”属于明显错误,而非“遗漏”。上诉人要求鉴定机构就源代码是否采用事务机制进行鉴定以确认被上诉人开发的软件是否达到合同要求与实际使用要求,但鉴定机构对此未进行鉴定。(二)一审判决认定事实不当或错误。1、考虑到软件开发的特殊性以及双方在技术上的不对称性,一审法院推定上诉人明知农业移动互联网平台建设项目(以下简称未84公司)采用postgreSQL数据库,系认定不当。2、庚公司是否履行合同义务的认定只考虑了源代码的数量,并未考虑源代码的质量要求,更未考虑未84公司对源代码整体化、系统化的要求,辛公司直至撤场时仍未完成软件的整体开发。(三)一审判决认为《农业移动互联网平台建设项目合同》(以下简称申41公司)解除是双方共同过错导致,并认为上诉人对合同解除承担主要责任,一审法院的上述认定及作出的第三项判决错误。1、一审判决在认定上诉人行使法定解除权的同时,又认为上诉人具有过错,产生逻辑冲突。一审判决未支持上诉人依法主张的违约金,实属不当。2、上诉人未支付第二期款的原因在于付款条件并未成就。合同约定的里程碑验收单针对的都是模块,而模块在整个合同履行过程中未发生变化,合同履行过程中仅是对部分模块的功能点进行了优化和增减。一审判决关某2被上诉人完成未84公司源代码2015年10月版本(以下简称源代码版本1)后要求上诉人支付第二期款具有一定合理性的认定不能成立。开发的技术方面存在严重问题是导致合同第二期款的支付条件未能成就的关键原因。3、一审法院判决上诉人承担主要责任,明显错误。已开发的源代码存在严重技术问题,被上诉人在合同解除时,仍未交付技术成果,故上诉人无需支付报酬。(四)一审法院关某定费用的分担判决不当,请求二审法院重新作出裁决。 丁公司答辩称:(一)上诉人关某定意见错误的理由不能成立。首先,鉴定人专业背景以“计算机硬件为主”并不意味着只能以计算机硬件为主进行鉴定。本案中,鉴定组成员可以进行涉案软件的鉴定。其次,由于上诉人不能提供系统的前端代码,导致涉案软件源代码的功能和性能无法测试,故该不能测试的责任应由上诉人承担。(二)一审判决认定事实清楚。首先,一审法院推定上诉人明知未84公司采用postgreSQL数据库完全正确。未84公司采用postgreSQL数据库是当时根据上诉人技术主管刘俊博的要求而作的变更。被上诉人系在上诉人处进行现场开发,被上诉人系根据上诉人主管刘俊博、杨梅等要求开发涉案软件,如被上诉人擅自改用postgreSQL数据库,刘俊博、杨梅不可能不知道,也不可能不提出异议。事实上,整个开发过程中,刘俊博、杨梅对改用postgreSQL数据库从未提出异议。其次,上诉人在合同履行过程中进行大量功能需求模块的变更和优化,合同履行中形成的《智慧农业项目——软件需求规格说明书》(以下简称检材1)、《劲牛智慧农业系统后台数据接口概要设计说明书》(以下简称检材2)、《劲牛智慧农业系统后台数据接口概要设计说明书——店管家》(以下简称检材3)的工作量远远超过了《软件需求规格说明书》(以下简称合同附件一)。源代码版本1已实现检材2-3中289个接口和功能点中的285个,被上诉人已基本完成涉案软件开发。由于上诉人进行大量功能需求模块的变更和优化,又不愿意支付开发费用,致使未84公司源代码2015年11月版本(以下简称源代码版本2)、2016年1月版本(以下简称源代码版本3)没有全部完成新增的需求模块的变更和功能模块的优化。上诉人对此应当承担主要责任。综上,一审法院认定事实清楚,判决合法合理,请求驳回上诉、维持原判。 丙公司向一审法院提出本诉诉讼请求:1.壬公司丁公司之间的《农业移动互联网平台建设项目合同》(即申41公司);2.丁公司丙公司返还预付款人民币42万元(以下币种均为人民币);3.丁公司丙公司支付违约金14万元。 丁公司向一审法院提出反诉诉讼请求:丙公司丁公司支付剩余软件开发费98万元。 鉴于,丙公司明确表示不再愿意继续履行申41公司,一审法院就申41公司履行事实不能的情形征求了双方当事人的意见,丙公司、丁公司均表示,就申41公司履行事实不能的情形下,由法院根据申41公司的现实状况,依法予以处理。 一审法院经审理查明: 2015年8月19日,丙公司(甲方)丁公司(乙方)签订申41公司,该合同中与本案相关的条款包括:甲方向乙方采购适配项目需要的软件设备,委托乙方实施未84公司,并支付技术服务费和报酬,乙方接受委托并进行此项技术服务工作……第二章技术服务清单和报酬。2.1甲方委托乙方使用“TVie时移流媒体服务系统V1.O”开发农业移动互联网平台建设项目(即未84公司),并支付报酬总金额(“合同总价”)140万元。合同总价己包括对乙方服务应当依法缴纳的增值税以及相关的地方税收及附加费用,也包括乙方为完成本合同技术服务所需费用的负担如交通差旅费、食宿费、邮递费、打印费等。2.2乙方技术服务清单具体见附件1《软件需求规格说明书》(即合同附件一)。第三章支付条款。3.1具体支付方式和时间如下:3.1.1预付款,在本合同生效后的7日内,甲方凭乙方提供的如下单据,向乙方支付合同总价的30%的合同预付款即42万元:乙方提供甲方金额为合同总价30%的、符合国家规定的增值税专用/普通发票。同时,乙方支付预付款的50%即21万元整作为项目履约保证金,项目按时验收合格后,按照本合同的约定甲方退还乙方该笔款项。3.1.2进程付款,(1)项目人员进场后完成附件2《里程碑验收单》中的工作里程碑内容后,甲方凭乙方提供的如下单据,向乙方支付合同总价的30%的进程付款即42万元,乙方提供甲方金额为合同总价30%的、符合国家规定的增值税专用/普通发票,以及双方签署的针对附件2《里程碑验收单》中的工作里程碑模块为“测试合格”的《里程碑验收单》。3.1.3验收付款,平台部署后,双方应当进行平台上线测试,测试期不少于40个工作日。在测试验收合格后的7日内,甲方凭乙方提供的如下单据,向乙方支付合同总价的30%的验收付款即42万元。(1)金额为合同总价30%的、符合国家规定的增值税专用/普通发票;以及(2)双方签署的针对完整项目平台为“测试合格”的《项目验收单》。3.1.4质保付款,自前款《项目验收单》签发之日起一年内为项目质量保证期(“质保期”),乙方应当在质保期内免费解决甲方提出的服务需求,包括但不限于平台故障、漏洞、灾难恢复、传授解决问题的知识、界面和功能优化等。质保期满无重大问题影响甲方使用,视为质量合格,质量保证期结束后的7日内,甲方凭乙方提供的如下单据,向乙方支付合同总价的10%的质保付款即14万元:金额为合同总价10%的、符合国家规定的增值税专用/普通发票……第四章设备发货、平台验收。4.1乙方应于2015年9月15日前将甲方采购的全部合同软件设备及技术文件交货至甲方指定的现场,其中包括软件开发的所有技术文档及源代码。4.2乙方应于2015年10月1日前完成平台部署以及上线,以便双方按照本合同3.1.3款进行测试验收。乙方按前述约定完成平台部署以及上线的,甲方应在2015年11月30日前进行项目验收,并填写《项目验收单》,交给乙方。4.3甲方组织人员对项目平台进行验收,并出具《项目验收单》4份,甲方2份,乙方2份。如因甲方原因故意逾期未完成验收工作,甲方需按帐期支付第三章中验收款。但仍将继续组织项目成果验收工作。《项目验收单》应当与需求文档结合,以验收标准为主要内容。第五章技术服务内容和人员要求。5.1甲方如有功能模块需求变更(不包括功能模块的优化),乙方有权要求甲方支付开发费用,具体费用参照技术文档的类似模块工时价格确定……第六章技术支持与服务。6.1乙方应向甲方提供与使用该应用软件、设备软件相关的技术服务。乙方提供的技术支持和服务的方式包括电话支持、现场安装调试、维修支持、电子邮件支持等。6.2乙方为甲方提供自《项目验收单》签发之日起为期36个月的免费技术支持和服务(以下简称“免费服务期”),包括但不限于平台故障、漏洞、灾难恢复、传授解决问题的知识、界面和功能优化等。若发生重大技术故障,导致平台返工的,应该重新计算免费服务期。甲方可根据需要加入免费服务期需求:如使用文档编制、服务器托管、网站(平台)备案、数据定期更新备份。6.3免费服务期届满后,乙方为甲方提供技术支持和服务的年服务费为本合同总价的5%,双方应就服务内容和期限等另行签署书面约定……第十章违约以及争议解决。10.1乙方未按本合同4.1和4.2款规定的交货时间向甲方交货时,则乙方应从逾期之日起,每日按合同金额的1%向甲方支付违约金。10.2乙方违约金的支付不得免除乙方继续履行本合同的义务。10.3甲方逾期支付货款,则应从逾期支付之日起,每日按中国人民银行同期金融机构人民币贷款基准利率对逾期支付的部分支付违约金……。申41公司附件一为《软件需求规格说明书——智慧农业项目软件需求规格说明书》(即合同附件一)。合同附件二《里程碑验收单》中,共包括了工作里程碑的四个阶段,主要包括:工作里程碑一:需求/需求规格说明书。准备阶段/业务功能分层框图、技术选型确定、系统部署架构、数据库安装、应用服务器环境搭建、开发环境搭建、配置库环境搭建、数据库创建、程序分包、系统架构设计说明书、数据库设计说明书。工作里程碑二:开发/第一阶段/通用功能/通用工具、注册登录、学习在线、气象万千、摇一摇、我要测量、首页相关;店管家/基础功能、客户信息管理、供应商管理、单据管理;农管家/基础功能;农艺师/基础功能;农资人/基础功能;其他/日志、文件服务;后台管理/基础资料维护。工作里程碑三:第二阶段/通用功能/农科热线、兑换中心、查真伪、热点资讯、气象分享;店管家/销售管理、报表管理、其他管理;农管家/我的地、农业记事本、我的农资;后台管理/兑换中心、用户管理、金豆管理、用户账户;店管家ERP功能WEB版/单据管理、基础功能、客户信息管理、供应商管理、销售管理、报表管理。工作里程碑四:第三阶段/农艺师/我的资料、我的排名;农资人/我的资料、我的排名;其他/推送功能;后台管理/广告管理、资质审核、专家星级、推送管理、新闻源&气象信息、在线学习资料。 2015年9月10日,丙公司丁公司支付预付款42万元。 2015年11月12日,丁公司丙公司开具了42万元“进程付款”的发票,癸公司快递。2016年1月29日,丙公司以付款子公司。 一审审理中双方当事人对其提供的电子邮件中下列人员的身份予以确认:刘俊博、杨梅、黄科力、丑公司工作人员,寅公司聘请的未84公司前端外包供应商“南京烽火通信”(以下简称己50公司)的工作人员,何良、王宁、卯公司工作人员。双方当事人提供的往来电子邮件显示,自2015年8月5日起,双方即开始通过电子邮件就申41公司的履行进行沟通。 电子邮件中反映的与本案争议有关的事实包括: 2015年8月9日、15日、23日、30日、9月2日、7日、12日、20日、28日、29日、10月11日、26日、11月1日、15日、29日,何良通过电子邮件向刘俊博发送项目周报、项目工作计划、项目工作汇总、项目计划拆分等文件。 2015年8月12日,杨梅向张超、何良等发送名称为“手机测量功能取消,替换为手机话费充值功能”的电子邮件,在该邮件中杨梅要求将“我要测量”功能取消,替换为“手机话费充值功能”,并将对应的“我的田地”中面积输入改为填写。杨梅并在邮件中提供了“手机话费充值功能”的流程。 2015年8月19日,何良向刘俊博发送名称为“公共商品库升级完善评估”的电子邮件,在该电子邮件中何良表示,公共商品库问题和修改清单共37项,若需要独占臧清亮资源单人完成需3.5天左右,如果今天开始执行该任务可能导致接口开发进度延迟30-36个左右。 2015年8月25日,张超向何良、杨梅、刘俊博发送名称为“掌上劲牛需求整理-150825-V0.7”的电子邮件,该电子邮件的附件为《掌上劲牛需求整理-150825-V0.7》文件,在该文件中,张超罗列了自2015年7月18日起至8月25日期间的未84公司版本新增、修改情况以及未84公司V0.7版的具体内容。其中未84公司版本新增、修改情况为:未84公司版本号分别为V1.0、V1.1、V1.2、V0.3、V0.4、V0.5、V0.6、V0.7,除V1.0版为新建版本外,其余版本内容均有不同程度的新增、修改,包括文档框架改版、店管家功能基础信息、店管家功能完成、修改批注、农管家,农艺师,农资人、功能、通用功能完成、通用和店管家功能批注修改等。同日,张超向刘俊博、何良发送名称为“需求变更-150725”的电子邮件,在该电子邮件的附件《需求变更-150725》文件中,张超罗列了反馈时间为2015年8月25日的需求描述共12个,标注为新增的2个,变更的4个,细化的6个。 2015年8月28日,何良向刘俊博、张超等发送了名称为“需求变更的解决方案及估算”的电子邮件,该电子邮件的附件为《需求变更评估2》文件,该文件显示,对未84公司因APP用户权限系统、店管家(单据模块、商品拆包功能)等模块需求变更,所带来的工作量经评估预计为28人天。 2015年9月14日,杨梅向何亮发送了名称为“2015-9-14商品库测试反馈”的电子邮件,在该电子邮件中杨梅表示,其再次测试了修改后的商品库,辰公司的各类产品比较全面地测试了化肥商品的录入。 2015年9月15日,杨梅向何良等发送了名称为“短信触发需求沟通会议摘要”的电子邮件,杨梅在该电子邮件中总结了50条相关的短信回复需求,并表示该50条内容中“32-34,45-47,49-50条,暂时不做等到第二期在做,48条待张超给出登录的解决方案。其他本期完成,需求确认OK。” 2015年9月22日,何良、杨梅通过名称为“关某2连连相关的接口迟延”“答复:关某2连连相关的接口迟延”电子邮件,就因连连科技原因导致的项目迟延进行了沟通。其中何良表示“1.连连科技的话费充值至今还没有开发人员进行对接。2.连连支付的身份认证接口对方正在进行升级改造……这两项的推迟对我们后端的接口开发进度会造成部分影响”,杨梅则回复称“周日连连科技的技术人员进入进行对接。身份认证接口的是整体公安系统在做调整……暂时等一下,有消息后会第一时间告知。” 2015年9月25日,杨梅向刘俊博发送了名称为“手机充值业务的手机归属接口变化,请帮助协调”的电子邮件。在该电子邮件中,杨梅表示因连连支付不能提供现成的手机归属接口供使用,且“在运营支撑平台中,很多数据分析也要使用该数据库”,故要求刘俊博“帮助协调外包团队”。同日,刘俊博将该邮件转发何良,并要求何良对杨梅在其电子邮件中提出的问题予以评估。同日,何良回复刘俊博称“关某2手机归属地查询……原需求中没有此接口,如需开发需要增加接口。” 2015年9月29日,何良向杨梅发送了名称为“WEB端管理和WEBERP访问地址”的电子邮件,电子邮件中有WEB后端管理和WEBERP的访问地址。同日,杨梅向刘俊博发送名称为“店管家PC端测试反馈”的电子邮件及名为《店管家PC端问题记录》的附件,在该邮件中杨梅询问刘俊博,何良发送上述地址并要求的测试,是否属于验收测试?如是,则杨梅“需要测试case和测试跟踪文件……回归测试”,同时杨梅表示“目前发现的问题颇多,具体可参考附件(10min内发现的问题)”,杨梅并要求刘俊博向供应商“再强调一下产品提交之前,他们的测试工作一定要细致”。同日,刘俊博将杨梅的上述邮件及附件一并转发给了何良,要求何良看一下问题记录,并另外安排文档编写WEBERP部分的测试用例提交给杨梅。 2015年10月9日,何良向刘俊博发送名称为“RE:身份认证合作商之一的接口文件”的电子邮件,在该电子邮件中何良表示,“最新的身份认证的供应商提供的接口文档,使用的是Webservice技术,需要由供应商为我们进行公安部备案以及账号开通,最早的可提供接口时间是下周一下午下班前。”何良的工作包括“1.项目集成Webservice客户端功能。2.测试同步接口中使用Webservice异步调用的可行性。3.接口开发和测试。4.新增身份认证接口访问日志功能。5.修改身份认证流程,连续3次及以上失败取最新一次延时2小时不得进行身份认证提交。6.与APP端进行新流程联调。”杨梅的工作包括“1.确保开发对接。2.处理企业统一账号和邮箱,开通本地出口白名单和阿里云服务的白名单。”综上,何良以“时间和稳定性可能都不够”为由“申请进行评估”。同日,何良向刘俊博发送名称为“APP问题记录_XXXXXXXX”的电子邮件,在该电子邮件中何良表示:“目前问题列表认领后,我们后端除了1.标签库需要杨梅、张超、我三方进行讨论确定最终标签的配置和使用的交互才能动手。2.94条变更需要修改较多查询语句(pgsql查询null和notnull的数据与其他数据库不太一样)。3.身份认证需要接口确定才能进一步动手修改。其余的问题已经检查或者通过清理数据和修改问题代码解决(问题列表中BUG不多,已全部修改,大部分都是显示细化、新需求和变更)。”该邮件的附件为《APP问题记录_XXXXXXXX》文件。 2015年10月10日,杨梅向何良发送名称为“版本描述”的电子邮件及名为《版本描述》的附件,杨梅在邮件中表示邮件附件是“第一版店管家的版本描述,涉及图文并排”。同日,何良向刘俊博、臧清亮转发了上述杨梅的邮件,并称:“杨梅要的这种可以有两种解决方法……请确认一下使用哪种方案。” 2015年10月20日,杨梅向张超、何良、刘俊博等发送名称为“最新测试计划和沟通方式”的电子邮件及名称为《劲牛店管家1.0计划》的附件,在该电子邮件中杨梅表示从10月21日至27日期间,“按照测试用例和附件中的模块计划一一过功能模块”。 2015年10月27日,张超向刘俊博等发送名称为“转发:需求跟踪矩阵”的电子邮件及名称为《需求跟踪-151024-1024当周新版测试计划中变更尚未整合》的附件,在邮件中张超表示:前后端整理发布的需求变更矩阵,记录变更内容和对应工作量。附件显示“劲牛项目需求变更--后端工作量汇总”为149人天,“劲牛项目需求变更--前端工作量汇总”为160人天。 2015年10月27日,何良向刘俊博发送名称为“商品信息字段”的电子邮件,在该电子邮件中,何良对商品信息字段的变更进行了评估后,表示“总计:11-12人天……由于涉及模块较多,基本上店管家大部分功能都需要重测,测试进度和修复都需要按实际情况向后延期”。 2015年11月12日,杨梅向何良发送名称为“合肥展会前的店管家需求”的电子邮件,在该电子邮件中,杨梅总结了合肥展会前的店管家的六项需求,包括:1.商品的添加编辑的修改;2.店管家数据准确性问题;3.开单或报表查询选择商品、客户、供应商的方式更改;4.开单支持添加商品、客户、供应商的流程;5.店管家存在的BUG问题;6.在期初库存增加一个字段库存成本价等。次日,何良将杨梅的上述邮件转发给刘俊博,并表示上述问题2、5未收到BUG清单,无法进行;上述问题1、3、6属于“需要估算对现有系统以及进度和计划的影响的,后端暂时都没有办法直接动手落实修改”;上述问题4属于前端问题,与后端无关。 2015年11月16日,王宁向刘俊博发送名称为“关某2后台开发团队人员安排的情况说明”电子邮件称:目前后台开发团队在完成了后台的功能开发情况下撤离了部分现场开发人员,仍保留部分核心开发人员以应对功能BUG修复和系统验收的收尾工作。关某2团队人员安排情况如下说明:1.按项目的开发进度10月底是项目的功能开发完成的时间节点,后台开发团队按项目组进度要求完成了开发任务,也同时满足了11月的西安推介会的要求。后台团队按项目开发需求和时间节点,完成了开发任务达成了项目目标。2.从项目启动时起每周工作六天,每天近十二个小时的高强度工作量。整个团队累计加班的工作量投入是非常大的,截止到11月初投入量已经达到项目的预期量。目前留在现场的人员已是额外的投入。3.合同中明确了项目的完成时间是十月中,项目验收完成时间是11月30号。进度目前正处于项目开发部署上线后的验收阶段,在此阶段我方将保留部分核心开发人员应对项目的验收工作。 2015年11月17日,刘俊博向何良、周建华等发送名称为“关某2数据库迁移”的电子邮件,在该邮件中刘俊博表示“于2015年11月18日开始进行部署和数据库迁移以及对RDBMS进行调优。” 2015年11月18日,何良和杨梅通过电子邮件就“合肥展会前需要完成报表数据准确性BUG的修改”的问题,进行了交流。 2015年11月19日,刘俊博向黄科力、杨梅、杨波、周建华等发送名称为“安卓版本下载页面挂载”的电子邮件,在该电子邮件中刘俊博要求各方“配合做好apk下载页面的挂载工作”。 2015年11月26日,何良向刘俊博发送的名称为“后端接口文档”的电子邮件中包括了附件:《劲牛智慧农业项目后台数据接口概要设计V1.0》(即检材2)、《劲牛智慧农业项目后台数据接口概要设计-店管家V1.0》(即检材3)。 2015年11月26日,杨梅向刘俊博发送名称为“PC版店管家的修改需求”的电子邮件及附件,在其电子邮件中杨梅总结的PC版店管家工作包括:UI调整、交互调整、功能逻辑调整等。同日,刘俊博将杨梅的上述邮件转发至何良,并称:“转发件为产品部对WEB版店管家界面和交互的修改计划,近两周需要你们团队协调资源全力配合我们UI和产品部的进度进行调整,先将登陆和主框架页的效果图发与你,请先安排人员着手修改……”同日,何良回复刘俊博电子邮件表示,由于“我们web端erp没有注册功能”,因此“目前提交的登录员和菜单结构的修改,我方需要进行评估”。另外“目前的设计图改造量和计划我方还需要进行一定的评估……” 2015年11月30日,刘俊博向何良等发送名称为“WEB版店管家UI改进会议”电子邮件,在该电子邮件中刘俊博通知各方于次日召开“WEB店管家UI改进工作相关的技术和产品人员开一个碰头会”。 2015年12月2日,刘俊博向王宁发送名称为“关某2发票退票与合同执行情况的说明”电子邮件称:“王总您好。发票收到,经过我方讨论认为,贵司尚不具备收笫二笔合同款的条件,具体如下:1.经多次催促,巳公司开户银行开具的银行承兑形式项目履约保证金。2.开发进度和要求没有按照项目的规范来实施,开发内容也尚未结束。3.合同约定为驻场开发,但目前驻场开发人员仅剩余两人,无法全力配合我们前端以及支撑平台的对接。现将贵司的发票退回,请贵司马上就上述问题及时响应并给出解决方案,待双方确认具备付款条件时再开具相应发票。经商议,我方希望贵司就上述问题能在本周前给出详细解决方案。”同日,王宁向刘俊博发送了名称为“RE:关某2发票退票与合同执行情况的说明”电子邮件称:“刘总、石总,两位好:11月中旬我们开过一个沟通会,在沟通过程中我们当时定的目标是支持合肥展会的工作作为第二笔付款的节点。关某2邮件中第2、3点,在上次的沟通会议中已明确的谈到我方已经按照项目的执行进度和时间要求完成了开发的内容,如贵司认为没有完成的内容,请一一明确列出,以便切实推进项目的结项。另外关某2第一点没有问题,一旦明确付款,财务即刻从银行开具。因此,关键的核心是请明确列出贵司认为未完成的开发内容,这才是解决方案的核心关键。” 2015年12月3日,何良向刘俊博发送名称为“RE:FW:答复:产品迭代后出现的问题和销售开单为解决的问题”的电子邮件,在该电子邮件中,何良要求“所有新需求和变更需求不再列在问题列表中,问题列表能够名副其实只列出问题”。次日,何良在发送给杨梅的名称为“RE:数据测试发现的问题跟踪”电子邮件中,要求杨梅“把新需求移除”并表示“剩余问题预计在下周一至下周二之间完成修改,目前已经检查并改完5个后端和联调问题”。 2015年12月4日,杨梅向何良发送名称为“答复:WEB版店管家UI改进会议”的电子邮件及名称为《李丽君_店管家PC端修改需求》的附件,在该邮件中杨梅称:“根据12月1日的会议,根据节点,李丽君提出的修改需求和唐琴的UI设计,均在附件中……”。同日,何良向刘俊博发送名称为“RE:WEB版店管家UI改进会议”的电子邮件,称:“关某2UI调整,我们后端预计会在下周周内没有其余紧急任务的情况下改完登录页、主框架页的header和菜单风格的变更,列表页后续安排修改变更样式风格”。 2015年12月8日,刘俊博向王宁发送名称为“后端问题整改事宜”的电子邮件及名称为《后台问题列表》的附件,在该邮件中刘俊博称:“附件是我方根据项目实施情况和产出物质量,就项目实施、商务和技术等几个方面提出的问题清单,请先阅读并熟悉,逐条准备解决方案”,午公司商务、项目经理召开会议,制订解决方案,防止损失扩大。在《后台问题列表》附件中,丙公司罗列的问题包括:一、项目实施问题(五项):1.WEB版店管家UI调整任务未完成;2.后台管理未完善;3.已完成模块挂起内容未修改;4.数据准确性问题修正任务未完成;5.人员投入不足。二、商务问题(一项):履约保证金问题。三、技术问题(十六项):1.事务;2.后端缓存;3.全文检索;4.%问题;5.代码中有连接到外网,定时将数据采集到本地,APP读取本地数据;6.文件系统采用FTP,性能,单点故障,参数需要能通过配置文件实现;7.所有开发人员的环境不一致,代码来源问题;8.System.out.println;9.错误日志需要抛出,Manager层的错误需要捕获;10.工具性的类,存在多个,后续开发容易混乱;11.参数化,单点故障;12.日志打印信息中含有敏感信息;13.关键类中不能留有main入口;14.银行卡信息没有加密;15.重复提交;16.日志存储。同日,何良针对刘俊博的上述邮件中所涉及的问题,向王宁、臧清亮发送名称为“FW:后端问题整改事宜”的电子邮件,在该电子邮件中何良就上述《后台问题列表》中的技术问题、项目实施问题进行了分析,何良表示:一、未公司要求延后;问题2、3属于新增需求,且没有提出正式变更申请;问题4非系统框架问题;问题5非不正常漏洞;问题6、7、8、9、11、12、13已解决;问题10不存在混乱;问题14由第三方支付接口提供方控制;问题15、16不存在。二、实施问题中,1.WEB申公司当时没有人力和精力实现UI调整,导致延期3个月。2.后台管理9月已完成。3.酉公司单方面挂起,大部分挂起内容是新需求和需求变更,需要计划改造方式和相关变更内容,并由前后端配合改造。4.数据准确性问题,有望在1-2天内完成。 2015年12月27日,王宁向刘俊博发送名称为“RE:后端问题整改事宜”的电子邮件,对上述《后台问题列表》中所述问题,进行了回复。王宁表示:项目进度滞后是多方面因素导致,其内因和外因都不是后端项目组导致的,项目进度的根本原因和首要原因也不在后端问题上,在这里具体原因和商务问题不在这里赘述,本着团结协作完成上线目标的原则,后端对贵司提出的16个技术问题作出如下计划和回复:1.事务,两套方案。(1)移除kpi部分,加入单数据源访问事务控制机制,预计在月底至明年初落实改造,一月中旬完成改造。2.后端缓存,需要讨论具体实施范围和技术条件以及设计的表和功能,影响较大,预计要在明年1月初确定方案后进行试点改造,一月中旬完成改造。3.全文检索,需要讨论具体实施范围和技术选型,影响较大,预计要在明年1月上旬确定方案后选择单一查询点进行试点改造。4.%问题,经排查,%是URL中的非法字符,已经排查确定为前端系统传参数的问题,须由前端通过将url转化为表单来处理。5.代码链接外网主要工作为联通支付平台、天气信息抓取等行为,属于系统正常的外部数据访问请求。6.本来就是通过配置文件实现ftp访问。计划安排移除静态变量。7.项目工具类,计划安排恢复或删除部分注释,消除此类所有乱码注释。8.系统开发阶段调试用,计划安排删除所有。9.系统开发阶段调试用,计划安排删除所有非支付平台提供源码的相关代码。10.系统工具类,每个都有自己的用处,已经逐一审核明确没有存在混乱。11.同第6问题,本来就是通过配置文件实现ftp访问。计划移除静态变量。12.系统开发阶段调试用,计划安排删除所有。13.系统开发阶段调试用,计划安排删除所有。14.银行卡只有卡号,没有其他密码等信息,安全等级等同于笫三方支付接口数据传输安全等级,由第三方支付接口提供方控制。15.以确定防重复提交方案,并确认改造计划。16.日志存储不存在问题,现有设计提供给劲牛一系列运营统计数据,项目前期己获得一致约定,现在日志存储数据量是整个库最大、操作最频繁的,尚无发现有日志存储问题。综上所述6、7、8、9、11、12、13、15问题,计划在一周内完成改造,预计12月底前完成;问题1-3涉及到整体框架问题,预计12月底确定具体的实施方案,1月10日左右完成改造。与此同时我方要求明确:此次问题列表中4-16技术问题的修复需要贵司同步解决项目第二笔付款的问题,其余3个框架问题我方将按时间计划完成改造。 2016年1月2日,刘俊博向王宁发送名称为“商务沟通内容确认”的电子邮件,在该邮件中刘俊博称:以下内容为今天下午双方在劲牛会谈我方的要求,请确认:1.按照合同中约定首付款的15%项目履约保证金付给劲牛方(元旦节后一周之内);2.我方要求3名曾经参与过本期项目实施的开发人员和1名项目经理驻场完成剩余工作(目前驻场2人,元旦节后两个工作日之内增加人员到4名);3.按上次贵方回复的整改问题邮件中的约定,在1月中旬完成1到16条技术问题的整改(元旦节后一周内提交方案文档供确认);4.即日开始投入技术人员按我方提供的需求文档开发PC版店管家(元旦节后第二个工作日人员进场,一周内提交需求文档供签字确认);5.合同执行已经延期,给我方造成重大损失,请严格按照合同约定履行贵方的责任和义务,以防我方损失进一步扩大,否则我方将保留进一步追责的权利。 2016年1月3日,王宁向刘俊博发送名称为“RE:商务沟通内容确认”的电子邮件称:非常遗憾收到如此内容的邮件,首先这封邮件的内容已经与上次我方舒总与石总会谈的主旨不符。其次商务的关键问题,第二笔款的付款问题竟未提及,我方就此问题表达诚意已经就16项内容做了应对和处理方案,并明确提出16项问题中的4-16修改完成时须付第二笔款。因此,我方正式提出对第二笔款的付款要求,即问题4-16的解决时付出。与此同时,因这段时间一直因商务问题未定,而大大影响项目推进。因此需待相关商务问题协商解决后再推进项目。 2016年1月4日,刘俊博向王宁发送名称为“后续合同执行要求”的电子邮件称:戌公司会谈时己经认可你们在开发方面存在的严重问题,所以有正式的商务会谈也未达成一致,现贵方单方面撤退驻场开发队伍停止项目开发是不理智的!对此,我方要求贵司恢复驻场开发且人员配置符合我们的项目实施要求!以免中断项目实施继续造成项目拖延!造成我方的损失不断扩大!同时请贵司负责人和商务人员继续洽谈,直到双方就目前存在的问题达成一致,以便继续推进合同执行。 2016年1月7日,刘俊博向王宁发送了名称为“2015年1月7日的商务洽谈会议纪要”的电子邮件,该电子邮件的内容为双方在2016年1月7日的会议记录:亥公司主营业务平台服务端应用及WEB版店管家技术开发合同的后续执行问题。会议期间双方未就合同执行问题达成共识。丙公司认为要进行有诚意、有效果的沟通,丁公司应满足如下前置条件:(1)到场人员应有第三方官方机构出具的能够确认到场人员身份归属的证明材料,包括但不限于工商营业执照,法人代表签发的授权书(含法人代表身份证复印件,法人代表的手机,电话联系号码,公司对授权书加盖公章等);(2)丁公司应按双方原合同约定支付30%项目首付款中总合同价款的15%的履约保证金;(3)在洽谈期间,直至双方最终达成一致前,丁公司应即刻按照合同约定派驻原开发人员进场,确保项目开发的有序推进,甲23公司承担;(4)乙24公司到场人员应包括项目负责人、商务负责人,以及能进行现场决策的高层管理人员,丙25公司全体到场人员应有第三方机构出具的能够确认到场人员身份归属的证明材料(同第一条要求)。同时,王宁承诺,在2016年1月8日下班前确定下一次会谈的时间和与会人员,丁26公司。 2016年1月9日,刘俊博向王宁发送名称为“关某2下次商务洽谈的安排”的电子邮件称:项目实施延期,项目推进暂停,我方每天的损失都在进一步扩大,希望贵方能够落实上次商务会谈的约定,尽快由高层牵头解决此事,同时也希望贵方能有一个时间表,确定贵方高层商务沟通的时间。次日,王宁以名称为“RE:关某2下次商务洽谈的安排”电子邮件回复称:周五的电话沟通中己明确过,戊27公司高层汇报,己28公司高层会与贵司直接沟通相关的商务问题。1月11日,刘俊博向王宁发送名称为“RE:关某2下次商务洽谈的安排”邮件称:项目实施延期,项目推进暂停,我方每天的损失都在进一步扩大,希望贵方能够落实上次商务会谈的约定,尽快由高层牵头解决此事,同时也希望贵方能有一个时间表,确定贵方高层商务沟通的时间。 嗣后,双方因协商不成以致诉讼至一审法院。一审审理中,双方当事人就未84公司是否符合申41公司的约定,有如下不同表述。丁公司认为,(1)丙公司在申41公司履行过程中多次变更需求,丁公司庚29公司递交了检材1,辛30公司递交了检材2、3,壬31公司又提出新的需求,癸32公司总结并形成了《劲牛项目系统新增功能及优化列表》(以下简称未40公司)。子33公司丑34公司将未84公司需求变更至检材2、3,未40公司已经超出了申41公司约定的范围。(2)在申41公司的履行期间,丁公司分别完成了源代码版本1-3。源代码版本1在2015年10月21日至27日期间完成并交付,该版本符合检材1的要求;源代码版本2在20寅35公司,该版本符合检材2、3中的绝大部分要求;源代码版本3是2016年1月3日完成的版本,卯36公司辰37公司处撤场,巳38公司服务器上,该版本符合检材2、3中的绝大部分要求。(3)在一审庭审中,丁公司表示未84公司是否符合申41公司约定,一开始以未84公司是否符合合同附件一的要求为准,午39公司的不断变更需求,最终应当以申41公司是否符合检材2、3的要求为准。丙公司则表示:(1)检材1-4均不属于对未84公司功能模块需求的变更,而属于对未84公司功能模块的优化,未40公司在申41公司履行过程中对功能需求的优化,未40公司中记载的申41公司提出的要求优化内容相一致。故上述检材1-4中需求均属于申41公司约定的范围。(2)丙公司确实于2015年8月25日收到检材1,2015年11月26日收到检材2、3。源代码版本1于2015年11月17日上线测试。源代码版本酉42公司的服务器。戌43公司未收到过源代码版本3。(3)源代码版本1-3均应当符合检材1和未40公司的共同要求,戌43公司在《亥44公司开发未完成的接口清单》(以下简称《未完成接口清单》)中列明内容,源代码版本1-3均未完成。(4)在本案一审庭审中,丙公司表示未84公司是否符合申41公司约定,应当以未84公司是否符合合同附件一和检材1-4中要求为准。 基于,双方当事人的上述争议,2017年7月19日,一审法院委托上海市科技咨询服务中心知识产权司法鉴定所(以下简称鉴定机构)就(1)丁公司提供的源代码版本1-3中分别包括了检材1-4中的哪些内容,上述源代码版本1-3所包含的内容是否符合检材l-4对应内容的要求。(2)若存在检材1-4中的相关内容未在源代码版本1-3中体现,或者源代码版本1-3中虽然体现了检材1-4中的相关内容,但并不符合检材1-4对应内容要求的情形的,请列明具体甲45公司已经列明的《未完成接口清单》之中。(3)上述检材1-4与《合同附件一》的异同,以及上述检材1-4中检材1与检材2、3、4的异同等技术问题进行鉴定。 2018年3月15日,鉴定机构向一审法院出具鉴定报告,该鉴定报告中的主要鉴定意见包括:1.关某2源代码版本1-3对应合同附件一以及检材1-4的完成情况。1.1对比源代码版本1-3,其中源代码版本2与源代码版本3完全相同,源代码版本2比源代码版本1增加了店管家ERP功能WEB版的功能模块,源代码版本1-3的后台接口实现代码完全相同。1.2合同附件一中共有223个内部接口,15个后台管理功能点,合计238个功能点。源代码版本1-3实现了其中192个接口和功能点,有46个接口或功能点代码未实现。1.3检材1中有254个内部接口,5个外部接口,15个后台管理功能点,合计274个功能点。源代码版本1-3实现了其中226个接口和功能点,有51个接口或功能点代码未实现。1.4检材2、3中共有289个内部接口,源代码版本1-3实现了其中的230个接口,有59个接口代码未实现。1.5未40公司涉及20项功能需求变更,其中除1.1.21要求支持模糊查询和二维码扫描功能;1.4.8、1.4.13新增“赊账提醒”功能;103增加第三方接入的手机归属地支持;110第三方接入(要求支持网络爬虫)四项功能需求无对应代码外,其余16项功能需求均有对应代码。1.6源代码版本2-3中还实现了店管家ERP功能WEB版功能,但因不能测试,无法确定功能是否完善。这部分功能在合同附件一和检材1中没有具体需求,检材2-3中也未体现。2.关某2上述检材1-4中未实现的相关内容是否包含在《未完成接口清单》的情况。2.1对应合同附件一中有16个未实现的接口不在《未完成接口清单》中。2.2对应检材1有17个未实现的接口不在《未完成接口清单》中。2.3对应检材2-3,有39个未实现的接口不在《未完成接口清单》中。2.4《未完成的接口清单》中有下列描述与源代码版本1-3实际情况不符:2.4.1称“我要花销(我的钱包)”模块“无对应接口”与实际不符,已实现了该需求12个接口中的5个接口;2.4.2称“查询是否打赏”接口“无对应接口”与实际不符,已实现了该接口;2.4.3称“后台管理”模块“无对应接口”与实际不符,已实现15个功能点中的14个功能点。2.4.4称部分“未完成调试接口”与实际不符,实际上未发现如“通用工具”“我的农资”“兑换中心”等模块中的部分接口代码。3.有关合同附件一和检材1-4的异同。3.1检材1比合同附件一增加了36个功能接口需求,其它功能需求相同。因此,检材1的功能完全覆盖了合同附件一的功能。3.2检材2-3对应合同附件一缺少41个内部接口以及15个后台管理功能点;增加了78个接口;另有92个接口是对合同附件一中63个接口的细化和调整。3.3检材2-3对应检材1缺少47个内部接口、15个后台管理功能点和5个外部资源接口;增加了55个接口;另有101个接口是对检材1中74个接口的细化和调整。3.4未40公司与合同附件一、检材1和检材2-3的差异主要体现在有20项需求变更。3.5说明。本项鉴定中确定代码是否实现的依据:3.5.1代码已实现:涉案软件源代码版本中有实现的代码且逻辑比较完整,即认为代码已实现。3.5.2代码未实现:涉案软件源代码版本中未找到相关的实现代码,可以分为两种情况:一是“有接口,代码未实现”是指代码中有该接口的函数定义,但没有实现功能的代码;二是“无接口,代码未实现”是指代码中没有该接口的函数定义,也没有实现功能的代码。 嗣后,一审法院向各方当事人送达了鉴定报告。丙公司表示:(1)上述鉴定意见中1.6所涉及的“店管理ERP功能WEB版”具体需求已在合同附件一中明确,鉴定报告中“这部分功能在合同附件一和检材1中没有具体需求”的表述不当。(2)上述鉴定意见中3.4所涉及的“未40公司与合同附件一、检材1和检材2-3的差异主要体现在有20项需求变更”的表述不当,上述20个需求不属于变更。(3)丙公司要求对涉案软件代码质量(代码规范性、逻辑性、可修改性、易某、可用性、算法性能、安全性等)进行鉴定。丁公司表示,源代码版本1-3实现了检材2、3中的所有接口代码,为此,丁公司提交了《概要设计对应接口代码实现明细表》,并请求鉴定机构复核。一审法院将当事人的上述针对鉴定报告的质证意见转达鉴定机构,并要求鉴定机构根据上述质证意见对鉴定报告进行复核。 2018年5月21日,鉴定机构向一审法院出具鉴定补正意见称:鉴定机构根据当事人的质证意见对鉴定意见进行了复核,并针对复核中发现的问题出具本补正意见,原鉴定意见与本补正意见不一致的,以本补正意见为准。该鉴定补正意见对上述鉴定意见中的如下内容进行了补正:1.将上述鉴定意见1.2补正为,合同附件一中合计有238个接口和功能点,源代码版本1-3实现了其中219个接口和功能点,有19个接口或功能点代码未实现。2.将上述鉴定意见1.3补正为,检材1合计有274个接口和功能点,源代码版本1-3实现了其中251个接口和功能点,有23个接口或功能点代码未实现。3.将上述鉴定意见1.4补正为,检材2-3合计有289个内部接口,源代码版本1-3实现了其中285个接口,有4个接口代码未实现。4.将上述鉴定意见1.5补正为,未40公司是对系统实现的改进要求,表6对合同附件一、检材1-3与未40公司之间对应功能之间的差异进行了列明(详见“功能差异说明”列),并对源代码版本1-3中对上述“功能差异说明项的实现情况进行了列明(详见“代码实现”列)。表6显示:(1)在合同附件一、检材1和检材2-3都没有未40公司需求项标号1.5.1-1.5.8的需求,在合同附件一和检材1仅有照片匹配要求,但未明确是自动匹配。(2)在合同附件一、检材1和检材2-3中都没有未40公司需求项标号1.7.1-1.7.9中对前端页面的具体修改要求。(3)未40公司需求项标号1.1.1.3-1.1.4.4中问农事模块新增一键转请专家要求;农艺师新增录入经典问答模块。(4)未40公司需求项标号1.3.1中天气预报新增气象分析员可分享。(5)未40公司需求项标号1.5.4、1.5.7/9/10中店管家的店面基础信息模块新增了体验帐号登录功能;并提出在合同附件一、检材1和检材2-3都没有的“APP内实名认证等权限调整需求”的具体细节要求。(6)未40公司需求项标号1.2.5.8中雇员管理新增优化列表;新增了短信提醒等功能要求。(7)未40公司需求项标号1.2.2.1、1.2.2.2中商品管理新增优化列表;新增拆袋销售要求。(8)未40公司需求项标号1.2.1.1-1.2.1.3、1.2.1.4/5/6中客户信息管理新增维护客户标签功能,同时明确了默认的三个标签;客户详情增加了最近消费、累计消费、历史消费等交易信息的关联要求。(9)未40公司需求项标号1.1.1、1.1.3、1.1.4中单据管理增加了拆袋销售、二维码扫描、赠品入库单等要求。(10)未40公司需求项标号1.1.14中单据管理增加赠品入库单要求。(11)在合同附件一、检材1和检材2-3均只要求查询功能,未明确要支持模糊查询,未40公司需求项标号1.1.21中新增要求支持模糊查询;单据管理新增二维码扫描功能。(12)在合同附件一、检材1和检材2-3对于修改销售开单、赠品出库单、赠品入库单处理流程;修改报损单处理流程均没有具体要求。未40公司需求项标号1.1.5-1.1.20中对该些处理流程予以具体要求,并增加报损原因字段。(13)未40公司需求项标号1.1.22-1.1.28中单据列表页面对收款单、报损单、退货单、进货单、付款单、赠品出库单等有新增页面字段(如合计、金额、退款方式、付款方式、经办人、日期等,且这部分页面字段在合同附件一、检材1和检材2-3没有具体要求)。(14)在合同附件一、检材1和检材2-3对于未40公司需求项标号1.3.1-1.3.31中下列报表管理没有具体要求,包括:应收账款报表新增催款提醒,并增加赊账日期、预计还款日期等字段,增加查看还款情况按钮等要求;明确查库存操作要求(库存为空时可编辑,并增加提示,盘点库存时可编辑等);销售利润报表要求拆分为客户和商品两个维度搜索,并明确搜索字段;明确各报表的搜索框字段或查询条件;报表页面的列表排序调整,增加显示字段(如合计字段等)要求。(15)未40公司需求项标号1.4.8、1.4.13中其他管理模块新增“赊账提醒”功能。(16)未40公司需求项标号1.4.14中其他管理模块新增“销售情况”功能。(17)检材1.4.11、1.4.12、1.4.17、1.4.19、1.4.20中其他管理模块新增“打赏劲牛”功能。(18)未40公司需求项标号1.4.1-1.4.6中兑换中心模块新增商城、金豆取现、手机充值、金豆帐号4个功能要求。(19)未40公司需求项标号103第三方接入模块新增手机归属地支持功能。(20)未40公司需求项标号110第三方接入模块新增支持网络爬虫功能。(21)未40公司需求项标号1.2.1-1.2.3首页中增加附近农资店列表;新增“我的”模块和“我的邀请”功能。(22)未40公司需求项标号40-102、118中对页面功能提出了多个修改意见,主要包括:页面布局、按钮控件修改;各模块的页面操作流程、显示字段、搜索条件等细节处理的修改。而这部分内容在合同附件一、检材1和检材2-3中都没有具体要求。上述表6项下(9)中的二维码扫描、(11)、(15)、(19)、(20)无代码,其余部分均为“有代码”。5.将上述鉴定意见1.6补正为,源代码版本2-3实现了合同附件一提到的“店管家ERP功能WEB版”中“单据管理”“基础功能”“客户信息管理”“供应商管理”四个模块的功能,但因不能测试,无法确定功能是否符合要求。这部分功能在合同附件一和检材1中没有详细功能需求,检材2-3中没有店管家ERP功能WEB版的相关设计。6.将上述鉴定意见2.1补正为,对应合同附件一,有4个代码未实现的接口不在《未完成接口清单》中。7.将上述鉴定意见2.2补正为,对应检材1有5个未实现的接口不在《未完成接口清单》中。8.将上述鉴定意见2.3补正为,对应检材2-3,有4个未实现的接口不在《未完成接口清单》中。9.将上述鉴定意见2.4补正为,《未完成的接口清单》中有下列描述与源代码版本1-3实际情况不符:2.4.1称“我要花销(我的钱包)”模块是“无对应接口”与实际不符,代码已实现了需求中12接口中的10个接口;2.4.2称“查询是否打赏”接口是“无对应接口”与实际不符,代码已实现了该接口;2.4.3称后台管理模块接口是“无对应接口”与实际不符,代码实现14个功能点,有1个功能点未实现。10.将上述鉴定意见3.4补正为,未40公司是对系统实现的改进要求,未40公司与合同附件一、检材1和检材2-3的主要差异见表18(同表6)。11.将上述鉴定意见3.5补正为,说明。本项鉴定中确定代码是否实现的依据:3.5.1代码已实现:涉案软件源代码版本中有实现的代码且逻辑比较完整,即认为代码已实现。3.5.2代码未实现:涉案软件源代码版本中未找到相关的实现代码,可以分为两种情况:一是“有接口,代码未实现”是指代码中有该接口的函数定义,但没有实现功能的代码;二是“无接口,代码未实现”是指代码中没有该接口的函数定义,也没有实现功能的代码。3.5.3由于没有系统的前端代码,无法搭建系统测试环境,不能进行系统的功能与性能测试,因此对源代码实现是否符合功能和性能要求无法判断。12.鉴定补正意见还对鉴定报告中的“附录1需求、设计和代码实现分析明细表”“附录2代码实现检查明细表”根据上述1-11的内容进行了相应的修正。 嗣后,一审法院向各方当事人送达了鉴定补正意见。丙公司表示:(1)鉴定补正意见在程序上存在瑕疵,不应被采信。(2)鉴定补正意见称“在源代码实现部分遗漏54个已实现的接口”,对此鉴定机构未做合理解释,不应被采信。(3)丙公司要求对涉案软件代码质量(代码规范性、逻辑性、可修改性、易某、可用性、算法性能、安全性等)进行鉴定,但鉴定报告和鉴定补正意见均未回复,且未84公司未在代码中设置“事务机制”,明显不符合代码规范性、安全性等要求。丁公司则表示,检材2-3合计有289个内部接口,其已经完全实现。 针对各方当事人的质证意见,一审法院传唤鉴定专家出庭作证,鉴定机构并向本院出具了《关某2原告和被告意见的回复》(以下简称鉴定回复意见)称:一、关某2原告对《司法鉴定补正意见书》(即鉴定补正意见)的意见的回复。(一)对于原告关某定专家未在《补正意见书》(即鉴定补正意见)签名的质疑。鉴定专家组对此说明如下:根据鉴定机构的工作流程,对于鉴定报告的补正意见,是经鉴定专家组讨论确定后,由鉴定机构直接出具的。对于原告的意见,鉴定机构收到后与鉴定专家组进行了讨论,认为为加强《补正意见书》的公信力,有必要接受原告的意见,进一步改进鉴定工作,因此,鉴定机构本次向法院递交由鉴定专家组签名的《补正意见书》以及本回复意见。(二)对原告认为“《补正意见书》在鉴定内容和结论的实体方面改动非常大,在一定程序上相当于重新鉴定,不应接受作为证据”的3条意见,鉴定专家组回复如下:1.关某2原告对于“遗漏54个已实现的接口”的质疑。鉴定专家组认为,本项鉴定首先是通过从检材1-4中提取功能接口,再在代码中搜索是否有实现该功能接口的代码,这本来就是一个工作量巨大且繁琐的工作,且鉴定专家组并非代码的实际编写者,只能凭借经验尽可能的寻找接口对应代码,因此,鉴定专家在依靠自身力量寻找接口对应代码的过程中,存在“遗漏”接口,属于正常现象。在鉴定专家对代码中的接口进行初步筛选后,由双方当事人质证,并进一步指出检材1-4中相关接口在源代码版本1-3中的具体对应位置,再由鉴定专家根据双方质证意见进行核实并补正,属于一个正常的鉴定过程。2.对于原告关某定补正意见书对鉴定报告中“(1)代码已实现、(2)代码未实现”的标准发生了变化的质疑。鉴定专家组在此特别说明,鉴定报告与鉴定补正意见中对于鉴定的标准没有任何变化,鉴定报告与鉴定补正意见之间的差异原因在上述第1点中已经说明。3.对于原告关某2“丙公司要求对涉案软件代码质量(代码规范性、逻辑性、可修改性、易某、可用性、算法性能、安全性等)进行鉴定,但鉴定报告和鉴定补正意见均未回复”的质疑。鉴定专家组认为,在鉴定报告以及鉴定补正意见中,鉴定专家组已经对法院委托鉴定事项进行了全面的回复,法院委托鉴定事项中与原告上述质疑相关的鉴定事项是“源代码版本1-3所包含的内容是否符合检材l-4对应内容的要求”,而鉴定专家组的对应结论为“由于没有系统的前端代码,无法搭建系统测试环境,不能进行系统的功能与性能测试,因此对源代码实现是否符合功能和性能要求无法判断。”二、关某2原告提供的《关某2软件开发中“事务机制”的说明》的回复。对于“原告认为,被告非但未能完成系争合同项下的开发任务在数量上的要求,且其提供的源代码完全不能符合事务机制的4个属性。被告现在的源代码无法达到合同要求与实际使用要求”。鉴定专家组认为:事务是作为一个逻辑单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功;如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。一般情况下,对数据库的数据进行批量或连表的数据更新操作时,需要使用事务机制,以保证数据的一致性和完整性。在实际编码实现中,哪些需要采用事务机制是与具体的业务功能需求和流程设计有关的,根据现有材料(检材1-4)是无法判别哪些功能必须使用事务机制,以及事务的原子性划分粒度。由于系统无法测试,不能进行功能验证,因此无法判别源代码是否达到合同要求与实际使用要求。三、关某2被告提供的《接口鉴定补充意见4个未完成的接口的说明》的回复。1.被告称“第1个接口([F2_8_2]应付账款明细报表)被注释关闭的原因是需求变更删除了该功能”。由于从提供的需求规格和概要设计等检材中没有说明该功能被删除,因此不能断定是否因需求变更被关闭,本项鉴定只是从代码检查中判定该功能被关闭了。2.被告称“第2和第4个接口([F4_1_3]查询资质认证信息、[F5_1_2]查询资质认证信息)是实现查询此类资质公共接口,资质文件类型根据传入参数确定”。通过查证代码,这两个接口对应的代码中只能看出是“查看个人身份证或头像功能”和“店铺认证照片信息查询功能”(在司法鉴定补正意见书的附录2中有说明),由于无法进行测试,所以无法判定是否可以通过传入不同参数查询到其它资质信息,即不能确定实现了查询资质认证信息功能。3.被告称“第3个接口([F5_1_2]农资人基本信息认证)是概要设计文档中对应记录有误,但代码实现完全正确无误”。通过查证代码,对应概要设计文档中的接口没有找到相应代码;通过被告后来提供的《概要设计对应接口代码实现明细表》对应的接口进行查证,乙46公司认证保存功能(在司法鉴定补正意见书的附录2中有说明),因此判定该接口功能没有实现。 在一审审理中,各方当事人确认如下事实:1.双方确认未84公司实际使用的是postgreSQL的数据库与申41公司中约定的MYSQL数据库不符。对此,丙公司丙47公司违反了申41公司的约定。丁公司则认为在申41公司履行中,因MYSQL数据库被非开源机构收购,为防止今后被收费,因此,经协商改用了开源的postgreSQL的数据库。2.丁48公司携未84公司参加了合肥和西安展会。对此,丙公司认为,其在合肥和西安展会上仅对未84公司进行了展示,并未实际使用。戊49公司认为,丙公司在合肥、西安展会上实际使用了未84公司。3.双方确认,未84公司属于后端程序,己50公司开发,一审审理中双方均表示无法向法院提供与未84公司匹配的前端程序,用于对未84公司的测试。 一审法院认为,本案中庚51公司是否有权解除申41公司。 一、丙公司是否有权解除申41公司 (一)丙公司辛52公司未按照申41公司4.2条约定,在2015年10月1日前完成未84公司的平台部署及上线,壬53公司癸54公司的上述迟延履行行为享有申41公司解除权的诉讼主张 一审法院认为,首先,本案中查明的事实和鉴定结论显示如下事实:1.2015年8月19日,双方当事人签订了申41公司及合同附件一,合同附件一共计238个接口和功能点。2.同月25日,丁公司丙公司递交了检材1,检材1共计274个接口和功能点,除完全覆盖了合同附件一的功能外,比合同附件一增加了36个功能接口需求。3.2015年11月26日,丁公司丙公司递交了检材2、3,检材2-3共计289个接口和功能点,对应检材1缺少47个内部接口、15个后台管理功能点和5个外部资源接口;增加了55个接口;另有101个接口是对检材1中74个接口的细化和调整。4.未40公司比合同附件一、检材1-3新增了需求项标号1.5.1-1.5.8等22项具体项目需求。5.源代码版本1于2015年11月17日上线测试,源代码版本1实现了合同附件一中238个接口和功能点中的219个,实现了检材1中274个接口和功能点中的251个接口和功能点,实现了检材2、3中289个接口中的285个,以及未40公司中除鉴定补正意见表6项下(9)中的二维码扫描、(11)、(15)、(19)、(20)外的其余项目需求。子55公司服务器的源代码版本2,除源代码版本1实现的上述接口、功能点、项目需求外,还增加了店管家ERP功能WEB版的功能模块。6.在2015年8月12日、19日、25日、28日、9月15日、25日、10月9日、10日、27日双方的往来电子邮件中,丙公司在未84公司的开发过程中对未84公司中接口和功能点,提出减少、增加和改变的要求。7.张超在2015年10月27日“转发:需求跟踪矩阵”的电子邮件的附件中,统计的“劲牛项目需求变更--后端工作量汇总”为149人天。一审法院认为,上述事实结合在案其他证据以及当事人陈某,可以证明,丑56公司丁公司确定合同附件一的未84公司需求后,寅57公司服务器上部署源代码版本2期间,双方当事人在合同附件一的基础上修改、完善形成检材1;在检材1的基础上修改、完善形成检材2、3;在检材2、3的基础上补充、完善形成未40公司;在检材2-4的基础上制作源代码版本1;在源代码版本1的基础上添加店管家ERP功能WEB版的功能模块,最终形成源代码版本2的过程。而在上述过程中对源代码版本1、源代码版本2最终完成的工作内容所反映的工作量,显然都远远大于合同附件一原定内容所需工作量,该节事实,亦足以证明申41公司原订的履行期间,卯58公司对未84公司需求变更后的需要。因此,一审法院认为,丙公司在申41公司履行过程中变更未84公司功能模块需求是未84公司未能在2015年10月1日前完成平台部署及上线的主要原因。 其次,2015年9月22日,名称为“关某2连连相关的接口迟延”“答复:关某2连连相关的接口迟延”电子邮件表明,“连连科技话费充值项目无开发人员对接”“连连支付的身份认证接口正在进行升级改造”等因素,亦在一定程度上造成了未84公司开发进度的迟延。 综上,一审法院认为,根据现有证据,辰59公司变更未84公司功能模块需求所致,丁公司就申41公司的迟延履行并无过错,一审法院对丑122公司的相关诉讼主张不予采纳,相关诉讼请求不予支持。 (二)丙公司辛52公司未根据申41公司约定完成未84公司,且已完成部分亦不符合申41公司约定,壬53公司巳60公司的上述违约行为享有申41公司解除权的诉讼主张 一审法院认为,如需判断未84公司是否符合申41公司的约定,首先要确定申41公司约定的未84公司功能模块需求的具体内容。对此,丙公司认为未84公司应当符合检材1和未40公司的共同要求。之后,丙公司又称未84公司应当符合合同附件一和检材1-4的要求。丁公司则认为,未84公司一开始应符合合同附件一的要求,之后应当符合检材2、3的要求。 对此,首先,根据前述查明的事实,源代码版本1、2最终完成的工作内容明显有别于双方在合同附件一约定的原定需求。但是,在本案中,丙公司丁公司对于源代码版本1、2与合同附件一之间上述区别的性质,各执一词。丙公司认为上述区别属于对未84公司功能模块的优化,戊49公司认为上述区别属于对功能模块需求的变更。而申41公司除在第五章5.1条约定,“甲方(丙公司)如有功能模块需求变更(不包括功能模块的优化),乙方(丁公司)有权要求甲方支付开发费用,具体费用参照技术文档的类似模块工时价格确定”外,对于未84公司功能模块需求变更或优化的标准、数量和范围等,申41公司再无具体约定,可见双方在申41公司中就未84公司需求变更或优化的标准、数量和范围等约定不明。 其次,根据查明的事实,在申41公司的履行过程中既存在从有到无的项目需求的减少(如检材2-3对应合同附件一缺少41个内部接口以及15个后台管理功能点;对应检材1缺少47个内部接口、15个后台管理功能点和5个外部资源接口等);也存在从无到有的项目需求的增加(检材2-3对应合同附件一增加了78个内部接口;对应检材1增加了55个接口;未40公司针对合同附件一、检材1和检材2-3共增加22项项目需求等);还存在对原有的项目需求的细化和调整(如检材2-3中有92个接口是对合同附件一中63个接口的细化和调整;有101个接口是对检材1中74个接口的细化和调整等)。鉴于,合同附件一已经对未84公司功能模块需求的具体内容有了较为详细的约定,而在申41公司对未84公司功能模块需求变更或优化的标准、数量和范围等没有约定的情况下,根据计算机软件开发行业内的一般理解,上述从有到无的对未84公司功能模块需求的减少,以及从无到有的对未84公司功能模块需求的增加,客观上改变了原先约定的未84公司功能模块需求的实施范围,应当视为对未84公司功能模块需求的变更,而对原有的未84公司功能模块需求的细化和调整,仍在原先约定的未84公司实施范围内,应当视为对未84公司功能模块需求的优化。因此,一审法院认为,在申41公司的实际履行中,既存在对未84公司功能模块需求的变更,同样也存在对未84公司功能模块需求的优化。但是,需要特别指出的是,根据现有证据,上述源代码版本1、2中无论是对未84公司功能模块需求的变更,还是对未84公司功能模块需求的优化,都是在双方实际履行未84公司的过程中逐步形成的。对于该些未84公司功能模块需求的变更和优化,丁公司均未按照申41公司5.1条的约定,午61公司支付新的开发费用。双方亦未对变更或优化后的未84公司功能模块需求的最终内容,有过协商或达成任何一致意见。 再次,正是由于双方在签订申41公司时未具体约定未84公司功能模块需求变更或优化的标准、数量和范围,在申41公司的实际履行过程中,也未对变更或优化后的未84公司功能模块需求的最终内容,有过协商或达成任何一致意见。而已经完成的源代码版本1-3的内容中,也存在功能模块的详细功能需求约定不明的情况(如源代码版本2-3实现了合同附件一提到的“店管家ERP功能WEB版”中“单据管理”“基础功能”“客户信息管理”“供应商管理”四个模块的功能,但这部分功能在合同附件一和检材1中没有详细功能需求,检材2-3中没有店管家ERP功能WEB版的相关设计)。因此,一审法院认为,双方在申41公司实际履行中,在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明。丙公司关某2未84公司应当符合合同附件一和检材1-4要求的主张,未62公司在涉案电子邮件中减少未84公司功能模块需求的事实不符,一审法院难以采信。丁公司关某2未84公司一开始应符合合同附件一的要求,之后应当符合检材2、3要求的主张,因该主张与源代码版本2实际包含未40公司的事实不符,一审法院亦难以采纳。鉴于,双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明,故一审法院对丑122公司辛52公司未根据申41公司约定完成未84公司的诉讼主张不予采纳。 最后,丙公司辛52公司已完成的部分未84公司不符合申41公司约定的诉讼主张。一审法院认为,1.一审法院注意到,申63公司负责的未84公司仅包括后端部分,酉64公司负责,戌65公司委派了其工作人员刘俊博、杨梅等提出未84公司功能模块需求、协调前后端工作、负责整个软件的开发进程,丁公司亥66公司现场开发未84公司。因此,丙公司甲67公司就未84公司的工作情况和工作内容。故一审法院认为,丙公司对于未84公司实际使用postgreSQL数据库,而非申41公司约定的MYSQL数据库是明知的。鉴于,申41公司附件2《里程碑验收单》中,将数据库安装、数据库创建等工作,安排在工作里程碑一中,早于未84公司的实际开发,以及未84公司实际已经开发到源代码版本2的现状,一审法院推定在申41公司的实际履行中,双方变更了原约定的未84公司数据库,丙公司认可在未84公司中实际使用postgreSQL数据库。综上,一审法院对丑122公司关某2未84公司数据库不符合申41公司约定的诉讼主张,不予采纳。2.鉴定机构在鉴定回复意见中,丙公司关某定报告、鉴定补正意见的相关异议,已经作出了明确、清晰的回复,经审查,鉴定机构的上述意见依据合法且与事实相符,故一审法院予以采纳,丙公司的相关异议不予采信。而正如鉴定补正意见所述“由于没有系统的前端代码,无法搭建系统测试环境,不能进行系统的功能与性能测试,因此对源代码实现是否符合功能和性能要求无法判断”,本案中,对于已完成的源代码版本1-3是否符合双方约定明确的未84公司功能模块需求,乙68公司、丁公司均负有一定的举证责任。鉴于,丙公司未提供前端代码,以供一审法院验证未84公司是否符合双方约定明确的未84公司功能模块需求,故一审法院对丑122公司辛52公司已完成的部分未84公司不符合申41公司约定的诉讼主张,亦不予采纳。 综上,一审法院对丑122公司辛52公司未根据申41公司约定完成未84公司,丁公司已完成的部分未84公司不符合申41公司约定,壬53公司丙69公司的上述违约行为享有申41公司解除权的诉讼主张,不予采纳,相关诉讼请求,不予支持。 (三)丙公司辛52公司丁70公司处撤场,系以自己的行为明确表示不履行申41公司,壬53公司享有申41公司解除权的诉讼主张 一审法院认为,《中华人民共和国合同法》(以下简称《合同法》)第九十四条第二项规定,在履行期限届满之前,当事人一方明确表示或者以自己的行为表明不履行主要债务,另一方当事人可以解除合同。本案中,首先,如前所述,双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明,故一审法院对于丁公司关某2未84公司最终应符合检材2、3要求的主张,亦难以采纳。戌65公司将未84公司上线于合肥展会,亦无法证明上线于合肥展会未84公司中的功能模块是完整的,更何况鉴定结论显示检材2、3中尚有4个接口,源代码版本2并未完成。戊71公司尚未证明源代码版本2中包含了未84公司完整的功能模块需求。其次,申63公司亦有义务提供前端代码,以证明其已经完成的未84公司符合双方约定明确的未84公司功能模块需求,子33公司同样未完成上述举证责任,故一审法院对于丁公司关某2其所完成的未84公司符合申41公司约定的诉讼主张亦难以采纳。一审法院认为,己72公司在本案中,尚未举证证明其已按约完成未84公司,且所完成的未84公司符合约定,戊71公司庚73公司撤场的行为,属于《合同法》第九十四条第二项规定的,在申41公司履行期限届满之前,以自己的行为明确表明不履行申41公司主要债务的行为。丙公司据此请求解除申41公司,依法有据,一审法院予以支持。《合同法》第九十六条规定,当事人一方依照本法第九十三条第二款、第九十四条的规定主张解除合同的,应当通知对方。合同自通知到达对方时解除。本案中,辛74公司系在本案诉状中首次提出解除申41公司,壬75公司之日(即2016年10月17日)解除。 二、关某2申41公司解除后的处理 《合同法》第九十七条规定,合同解除后,尚未履行的,终止履行;已经履行的,根据履行情况和合同性质,当事人可以要求恢复原状、采取其他补救措施,并有权要求赔偿损失。 本案中,申41公司解除后,双方均应终止申41公司的履行。鉴于,申41公司的实际履行中,双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明,故本案中不能视为未84公司已经完成,因此一审法院对丑122公司癸76公司返还已支付的合同款,予以支持。但是,需要特别指出的是,子77公司丁公司的共同过错所致,壬53公司应当就其过错,丑78公司支付合同款的方式,寅79公司的经济损失。 1.丁公司丁70公司处撤场,系双方未就未84公司第二期款(即30%的进程付款)的支付达成一致所致 一审法院注意到,自2015年11月12日至2016年1月11日期间,双方就未84公司第二期款的支付进行了如下交涉:(1)2015年11月12日,丁公司丙公司开具了42万元进程付款的发票。同月16日,王宁在向刘俊博发送的名称为“关某2后台开发团队人员安排的情况说明”电子邮件中表示:“后台开发团队截止到11月初投入量已经达到项目的预期量……项目验收完成时间是11月30号”。(2)12月2日,刘俊博在回复王宁的名称为“关某2发票退票与合同执行情况的说明”的电子邮件中表示:“……贵司尚不具备收第二笔合同款的条件……开发进度和要求没有按照项目的规范来实施,开发内容也尚未结束……”同日,王宁向刘俊博回复名称为“RE:关某2发票退票与合同执行情况的说明”电子邮件,午61公司“……如贵司认为没有完成的内容,请一一明确列出……”(3)同月8日,刘俊博向王宁发送名称为“后台问题整改事宜”的电子邮件及名称为《后台问题列表》的附件,在该邮件《后台问题列表》附件中,丙公司罗列了未84公司中五项实施问题、一项商务问题以及十六项技术问题。同日,何良在王宁发送的名称为“FW:后端问题整改事宜”的电子邮件中表示“……未公司要求延后;问题2、3属于新增需求,且没有提出正式变更申请……实施问题中,1.WEB申公司当时没有人力和精力实现UI调整,导致延期3个月……”同月27日,王宁在向刘俊博发送的名称为“RE:后端问题整改事宜”的电子邮件中表示“项目进度滞后……其内因和外因都不是后端项目组导致的……本着团结协作完成上线目标的原则,后端对贵司提出的16个技术问题作出如下计划和回复:……综上所述6、7、8、9、11、12、13、15问题,计划在一周内完成改造,预计12月底前完成;问题1-3……1月10日左右完成改造。在此我方要求明确:此次问题列表中4-16技术问题的修复需要贵司同步解决项目第二笔付款的问题……”(4)2016年1月2日,刘俊博向王宁发送名称为“商务沟通内容确认”的电子邮件称:“……在1月中旬完成1到16条技术问题的整改……严格按照合同约定履行贵方的责任和义务,以防我方损失进一步扩大,否则我方将保留进一步追责的权利”。1月3日,王宁向刘俊博发送名称为“RE:商务沟通内容确认”的电子邮件称“……商务的关键问题,第二笔款的付款问题竟未提及,我方……明确提出16项问题中的4-16修改完成时须付第二笔款……”。之后,双方因未能协商一致,卯80公司丁70公司处撤场。 2.丁公司在完成源代码版本1后,午61公司支付第二期款具有一定的合理性 鉴于,双方实际完成的源代码版本1、2的申41公司项目功能模块的内容,已经远远有别于申41公司附件一的内容,而申41公司附件2《里程碑验收单》是在申41公司附件一的基础上形成,故申41公司3.1.2条以完成申41公司附件2《里程碑验收单》中约定内容,作为支付第二期款的条件,已经远远不符合申41公司实际履行的需求。因此,有必要根据申41公司的实际履行情况,重新确定双方当事人在申41公司中的权利和义务。《合同法》第五条规定,当事人应当遵循公平原则确定各方的权利和义务。本案中,申41公司4.2条“丁公司应于2015年10月1日前完成平台部署以及上线,……丙公司应在2015年11月30日前进行项目验收”的约定,大致反映了双方在申41公司签署时所确定的申41公司的履行期间,辰81公司对申41公司项下所需完成工作量的预期。而在源代码版本1、2最终完成的工作内容所反映的工作量,已经远远大于合同附件一原定内容所需工作量,且实际完成的未84公司内容明显有别于申41公司附件2《里程碑验收单》中约定内容,申41公司附件2《里程碑验收单》已不宜作为支付第二期款条件的情况下,丁公司在完成源代码版本1后,午61公司支付第二期款,符合上述公平原则,具有一定的合理性。 3.双方未就未84公司第二期款的支付达成一致,均具有一定的过错 一审法院认为,如前所述,双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明,丁公司午61公司支付第二期款具有一定的合理性的情况下,双方本应基于合同法的公平原则、诚实信用原则,求同存异、友好协商,以切实履行申41公司为目的,确定未84公司功能模块的最终内容、数量、范围,并在此基础上重新协商合同价款、付款时间和付款方式,重新确定双方的权利和义务,以期促成申41公司的履行。因此,丁公司在2015年12月27日“RE:后端问题整改事宜”电子邮件中提出的“问题1-3……1月10日左右完成改造……4-16技术问题的修复需要贵司同步解决项目第二笔付款……”的协商条件,丙公司本应依照公平原则,根据申41公司的实际履行情况,丁公司友好协商,明确双方的权利和义务。戌43公司在其回复中只表示“……在1月中旬完成1到16条技术问题的整改……严格按照合同约定履行贵方的责任和义务,以防我方损失进一步扩大,否则我方将保留进一步追责的权利”,巳82公司的协商条件予以回应。丙公司的上述回复,显然未充分考虑到申41公司的实际履行情况,明显有悖于合同法的公平原则。戌65公司在上述回复后,并未改变其意见,丁公司协商解决纠纷,午83公司丁70公司处撤场,申41公司未能继续履行。考虑到上述事实,以及申41公司未能就功能模块需求的变更和优化的标准、范围、数量作出明确约定;双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明;丁公司最终以自己的行为明确不再继续履行申41公司等事实。一审法院认为,丙公司丁公司就申41公司的解除均具有一定的过错,基于双方的过错程度,丙公司应当就其过错对申41公司的解除承担主要责任,丁公司亦应当就其过错对申41公司的解除承担次要责任。一审法院并根据申41公司约定的履行内容,申41公司履行的实际情况,源代码版本2显示未84公司实际付出的工作量等因素,申85公司的损失,酉86公司、丁公司的过错大小,戌87公司亥88公司经济损失的数额。 4.丙公司癸76公司支付违约金14万元的诉讼请求,一审法院认为,首先,如前所述,由于双方申41公司的实际履行过程中,变更了未84公司功能模块需求的具体内容,故申41公司中原定的履行期间,显然已经不符合申41公司实际履行的需求,丙公司甲89公司的违约责任,明显有悖于合同法的公平原则,一审法院对此不予支持。其次,丁公司乙90公司支付21万元的保证金确属违约,丁公司的相关辩称意见不成立,一审法院不予采纳。但该违约行为,显然不属于申41公司10.1条所调整的范围。故一审法院对丑122公司癸76公司支付违约金14万元的诉讼请求,不予支持。 综上所述,依照《中华人民共和国合同法》第五条、第六条、第九十四条第二项、第九十六条第一款、第九十七条规定,判决:一、丙91公司丁公司于2015年8月19日签订的《农业移动互联网平台建设项目合同》,已于2016年10月17日解除;二、丁公司丁92公司合同预付款42万元;三、丙公司戊93公司支付84万元;上述第二项、第三项相抵,丙公司戊93公司支付42万元;四、己94公司的其余本诉诉讼请求;五、庚95公司的其余反诉诉讼请求。本案一审本诉案件受理费9,400元,丙公司负担2,350元,丁公司负担7,050元。本案一审反诉案件受理费6,800元,丙公司负担5,828.5元,丁公司负担971.5元。本案鉴定费18万元,丙公司负担9万元,丁公司负担9万元。 本院二审期间,戊公司围绕上诉请求提交以下证据材料:1、鉴定机构及鉴定人的资质证明,用以证明鉴定人没有软件专业能力;2、《软件体系结构》该书的部分内容,用以证明事务机制是数据库软件必备要求,涉案软件未使用事务机制;3、辛96公司企业信息,上海骊泰信息科技合伙企业(有限合伙)企业信息,丙公司2015年8-11月出勤记录表,刘俊博身份证、聘用意向书、离职证明及银行卡复印件,冯江身份证及银行卡复印件,壬97公司癸98公司子99公司。 本院组织双方当事人进行了证据交换和质证。丁公司对上述证据材料发表如下质证意见:认可证据1的真实性、合法性,不认可其关联性,鉴定人专业以硬件为主不等于鉴定人没有软件鉴定资格;认可证据2的真实性、合法性,不认可其关联性,鉴定过程中鉴定专家可以根据实际情况进行鉴定;不认可证据3的真实性、合法性和关联性,丑100公司有关的内容,寅101公司的证明目的。 卯102公司二审提交的上述证据材料,本院认为:证据3均系打印件或复印件,本院对其真实性难以确认,且证据1-3均不能证明上诉人欲证明的主张,故本院对上诉人提交的上述证据材料均不予采纳。 本院二审期间,己公司未提交新的证据材料。 本院经审理查明,一审法院查明的事实属实。 本院认为: 一、关某定意见是否应予采信的问题 上诉人主张,一审判决所依据的鉴定意见在鉴定人员、鉴定程序、鉴定路径、鉴定结果等方面存在错误,鉴定意见不应成为判决依据。对此,本院认为,第一,一审法院在确定鉴定专家组成员前,已将包括本案三位鉴定人在内的专家名单以书面通知方式送达双方当事人,并明确告知双方当事人如逾期不书面函复一审法院的,视为对通知所列专家不申请回避,对专家参与鉴定无异议。然,丙公司在一审法院指定的期限内并未对包括本案三位鉴定人在内的专家名单提出异议,应当视为其对三位鉴定人参与鉴定无异议。鉴定机构在进行鉴定过程中,根据所涉技术问题的具体情况可以向机构以外的专业领域专家进行咨询,鉴定机构外的专家以技术专家名义在鉴定意见上签名,并未违反法律规定。第二,根据《最高人民法院关某2民事诉讼证据的若干规定》第二十七条第二款的规定,对有缺陷的鉴定结论,可以通过补充鉴定、重新质证或者补充质证等方法解决。由于没有前端代码,无法搭建系统测试环境,故鉴定专家系通过从检材1-4中提取功能接口,再在源代码中搜索是否有实现该功能接口的源代码的方法进行鉴定的,而鉴定专家非涉案源代码的编写者,在该项工作量巨大且繁琐的鉴定过程中存在“遗漏”接口实属符合常理。双方当事人在收到鉴定报告并提出质证意见后,一审法院要求鉴定机构根据当事人质证意见对鉴定报告进行复核。鉴定机构根据一审法院要求对鉴定报告复核后出具鉴定补正意见对鉴定报告的鉴定结论进行修正,亦未违反法律规定。第三,由于无法搭建系统测试环境,不能进行系统的功能与性能测试,因此事实上是鉴定机构无法对涉案源代码内容是否符合检材1-4对应内容的要求进行鉴定,而非鉴定机构未对源代码内容是否符合文档的要求进行鉴定。本案中,辰103公司巳104公司负责,丁公司仅负责未84公司的后端部分,壬53公司应提供未84公司的前端代码以供验证未84公司是否符合申41公司的约定。午105公司未能提供前端代码以供测试,故其应承担相应举证不能的不利后果。第四,关某2事务机制,鉴定机构已经明确回复,根据现有检材无法判别哪些功能必须使用事务机制以及事务的原子性划分力度。而且,在无法对未84公司进行功能与性能测试的情况下,即使对源代码是否采用事务机制进行了鉴定,仍然不能据此判定涉案软件是否符合双方约定的功能模块需求。丙公司关某定结果错误的主张亦缺乏证据佐证,本院难以采信。综上所述,丙公司关某定意见的上诉理由均不能成立,本院不予支持。 二、关某2一审判决认定事实是否有误的问题 上诉人主张,考虑到软件开发的特殊性以及双方在技术上的不对称性,一审法院推定上诉人明知未84公司采用postgreSQL数据库,系认定不当。对此,本院认为,首先,申41公司附件2《里程碑验收单》中,将数据库安装、数据库创建等工作安排在工作里程碑一中,将开发工作安排于工作里程碑二中,即数据库的安装、创建工作早于软件开发工作,也就是说在完成数据库的安装、创建后才进行涉案软件开发。而未84公司实际已经进入软件开发阶段。其次,本案中,丁公司亥66公司现场开发未84公司,丙公司委派了工作人员刘俊博、杨梅等负责功能模块需求提出、前后端工作协调、跟踪整个软件的开发进程,丙公司未106公司就未84公司的工作情况和工作内容。再者,丁公司工作人员何申107公司工作人员刘俊博的电子邮件中记载有“pgsql查询null和notnull的数据与其他数据库不太一样”的内容,酉108公司亦提及了未84公司开发使用postgreSQL数据库的情况。而申41公司的履行过程中,丙公司戌109公司提出过异议。据此,本院认为,一审法院综合本案实际情况子121公司明知未84公司实际使用postgreSQL数据库,并作出“在申41公司的实际履行中,双方变更了原约定的未84公司数据库,丙公司认可在未84公司中实际使用postgreSQL数据库”的推定,并无不当。 上诉人还主张,庚公司是否履行合同义务的认定只考虑了源代码的数量,并未考虑源代码的质量要求,更未考虑未84公司对源代码整体化、系统化的要求,辛公司直至撤场时仍未完成软件的整体开发。对此,本院认为,如前所述,由于没有系统前端代码,无法搭建系统测试环境,导致涉案软件的功能与性能无法进行测试,故一审法院事实上无法庚117公司已完成部分的软件质量作出判断,丙公司应对其未能提供前端代码以供系统测试承担相应的不利后果。此外,亥110公司完成了未84公司的整体开发,甲111公司完成了未84公司的部分内容。 综上,丙公司关某2一审判决认定事实有误的上诉理由亦不能成立,本院不予支持。 三、一审判决关某2双方责任认定以及第三项判决是否有误的问题 上诉人主张,一审判决认为申41公司解除是双方共同过错导致,并认为上诉人对合同解除承担主要责任,一审法院的上述认定及作出的第三项判决错误。对此,本院认为,第一,根据本案查明的事实,双方当事人签订申41公司时的合同附件一共计238个接口和功能点,而在合同履行过程中形成的检材1共计274个接口和功能点,检材2-3共计289个接口和功能点,未40公司比合同附件一、检材1-3新增了22项具体项目需求;于2015年11月17日上线测试的源代码版本1实现了合同附件一中238个接口和功能点中的219个,实现了检材1中274个接口和功能点中的251个接口和功能点,实现了检材2-3中289个接口中的285个,以及未40公司中除鉴定补正意见表6项下(9)中的二维码扫描、(11)、(15)、(19)、(20)外的其余项目需求;乙112公司服务器的源代码版本2,除源代码版本1实现的上述接口、功能点、项目需求外,还增加了店管家ERP功能WEB版的功能模块。前述需求变化中,既存在对未84公司功能模块需求的变更,也存在对未84公司功能模块需求的优化。可见,在申41公司履行过程中,丙公司对未84公司功能模块需求的不断变更,不但导致申41公司履行延迟,丙113公司开发的源代码版本1、源代码版本2完成的工作内容及工作量均远远超出合同附件一原定内容及其所需工作量。在此情况下,自2015年11月12日至2016年1月11日期间,双方就申41公司第二期款的支付进行了交涉,但未能协商一致,丁114公司丁70公司处撤场。丁公司辰37公司撤场的行为,属于在申41公司履行期限届满之前,以自己的行为明确表明不履行申41公司主要债务的行为,一审法院依据丙公司相关诉请判决申41公司解除,并无不当。第二,戊115公司完成附件2《里程碑验收单》中工作里程碑内容后,丙公司支付第二期款,但是,在源代码版本1、2最终完成的工作内容所反映的工作量远远超出合同附件一原定内容所需工作量,且实际完成的未84公司内容明显有别于申41公司附件2《里程碑验收单》中约定内容的情况下,事实上申41公司附件2《里程碑验收单》已不宜作为支付第二期款的条件。丁公司根己116公司支付第二期款,符合公平原则,具有一定的合理性,一审法院的认定并无不当,本院予以认同。丁公司提出支付第二期款的协商条件后,丙公司本应依照公平原则,根据申41公司的实际履行情况,丁公司友好协商,重新确定双方的权利和义务,以期促成申41公司的继续履行。午105公司未充分考虑申41公司的实际履行情况,庚117公司的协商条件未予回应,辛118公司辰37公司处撤场,申41公司未能继续履行。丙公司虽主张开发的技术方面存在严重问题导致第二期款支付条件未成就,但未能提交充分证据予以证实,本院难以采信。第三,双方签订的申41公司未就功能模块需求的变更和优化的标准、范围、数量作出明确约定;丙公司在合同履行过程中对未84公司功能模块需求进行较大变更;双方在变更原先约定的未84公司功能模块需求后,就申41公司项下所需完成的未84公司功能模块需求的最终内容约定不明;丙公司庚117公司要求支付第二期款的协商条件不予回应;丁公司以自己的行为明确表示不再继续履行申41公司。本院认为,上述种种情况最终导致申41公司的解除,壬119公司癸120公司庚117公司要求支付第二期款的协商条件不予回应是导致合同解除的主要原因。一审法院综合考虑申41公司的实际履行过程,子121公司丁公司就申41公司的解除均具有一定的过错,丙公司应当就其过错对申41公司的解除承担主要责任,并无不当,本院予以认同。如前所述,丑122公司、丁公司均未向一审法院提交系统前端代码,导致不能对未84公司进行功能与性能测试,丙公司关某2已开发的源代码存在严重技术问题的主张亦缺乏事实依据。第四,丙公司对申41公司的解除存在过错,应当就其寅123公司的经济损失。一审法院根据申41公司履行的实际情况,源代码版本2显示未84公司实际付出的工作量等因素,酉86公司、丁公司的过错大小,卯124公司亥88公司经济损失的数额,亦无不妥。此外,丙公司癸76公司支付违约金的诉讼请求缺乏事实和法律依据,一审法院对其不予支持,并无不当,本院予以认同,并不再赘述。综上所述,丙公司的这一上诉理由亦不能成立,本院不予支持。 四、一审判决关某定费用的分担是否有误的问题 上诉人主张,一审法院关某定费用的分担判决不当。对此,本院认为,一审法院根据本案的具体情况决定丙公司、丁公司各半负担本案的鉴定费,并无不当。丙公司的这一上诉理由缺乏事实和法律依据,本院不予支持。 综上所述,丙公司的上诉请求不能成立,应予驳回;一审判决认定事实清楚,适用法律正确,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项规定,判决如下: 驳回上诉,维持原判。 二审案件受理费人民币12,200元,丙公司负担。 本判决为终审判决。 审判长  马某 审判员  朱某 审判员  孔某 二〇一八年十二月二十一日 书记员  刘 伟 附:相关法律条文 《中华人民共和国民事诉讼法》 第一百七十条第二审人民法院对上诉案件,经过审理,按照下列情形,分别处理: (一)原判决认定事实清楚,适用法律正确的,判决驳回上诉,维持原判决; …… 本案法律依据 司法鉴定程序通则(2016修订) 中华人民共和国合同法 第94条1款2项 中华人民共和国合同法 第97条 中华人民共和国合同法 第5条 中华人民共和国合同法 第6条 中华人民共和国合同法 第96条1款 最高人民法院关某2民事诉讼证据的若干规定(2008调整) 第27条2款 中华人民共和国民事诉讼法(2017修正) 第170条1款1项 更多

同类案例

在法小和里继续

把这条案例当成参考,用你自己的案情做一次相似检索,可以同时看到相关法条、司法解释和更多同类案例。
在知识库中打开