软件开发合同中,通常约定乙方负责技术、甲方负责配套环境或数据。如果甲方配套不到位,乙方则无法继续开发、对接或测试,进而甲方认为无法实现合同目的。
520号案件发生在青岛停车设备有限责任公司(甲方)与青岛有限公司(乙方)之间,双方时间线如下:
2021年7月开始技术对接;
2021年9月招采;
2021年11月签订《SSP停车系统软件技术开发委托合同》,约定:开发的软件系统满足甲方的功能需求,招标文件作为合同的一部分具有同等法律效力;甲方应向乙方提供的技术资料及协作事项如下:……甲方提供乙方一套测试工装,供乙方前期测试用。同时约定(单方解除权)如乙方在开发过程中,甲方发现乙方不能满足甲方功能开发需求,甲方有权解除本合同;如乙方在一阶段开发不能满足甲方需求,甲方有权解除合同。
后涉案软件未能实现合同约定的全部功能,对于未能测试、验收并交付的原因,双方发生争议。乙主张其仅负责开发涉案停车软件,因某甲公司不能提供支持5-6层功能的PLC升级程序,导致相关功能无法进行测试,不同意解除合同。甲则主张升级PLC程序是乙的合同义务,乙软件开发能力不足,导致开发的软件未能实现合同要求,要求解除合同。
甲方认为乙方不能实现合同目的(交付涉案软件的最终开发成果),构成违约,要求行使合同约定的单方解除权。
法院查明,案涉软件分两阶段,第二阶段(未实现)实质上是在第一阶段功能的基础上继续优化升级。第一阶段功能需求个数实现了6/11。
法院认为,涉案合同所附《功能需求列表》只是载明了甲现有软件的功能可以适配三菱品牌的PLC设备,并要求开发后的软件可以兼容其他主流品牌的PLC设备,但是并未约定由乙对PLC设备的硬件和软件进行升级。甲主张升级PLC设备程序是乙的合同义务缺乏事实依据。法院认为,根据双方提供的相关合同、技术资料及技术常识,涉案停车系统软件必须通过与PLC设备和程序的交互来完成对停车板、升降机、电机等系统的控制,因此PLC设备和程序对于实现涉案软件的基本功能具有根本性的影响。根据涉案合同的约定,甲对于软件的开发负有必要的协助义务,而本案现有证据可以证明甲未能提供支持用于软件开发和调试。因此,甲关于乙未能按期开发完成涉案软件并交付构成根本违约的主张不能成立。
关于甲行权解除涉案合同的问题。法院认为,涉案软件未能实现合同约定交付,主要原因并不在于乙。乙存在一定的违约行为,但是不足以构成根本违约,因此对于甲要求根据合同第七条违约条款的约定行使单方解除权解除涉案合同的理由,法院不予采纳。但是法院同时认为,“计算机软件的开发和投入使用具有较强的时效性,与委托方的现实需求关联度较高,当事人之间的信赖是合同成立及持续履行的重要基础,涉案合同自签订之日至今已逾三年,涉案软件仍未完成测试验收,已经远远超出双方约定的研发周期,合同陷入僵局,甲已明确表示无法继续履行合同,涉案合同目的已无法实现,已无继续履行的必要”,因此对于甲要求解除涉案合同的请求,法院予以支持。
合同解除权原则上属于守约方。关于合同僵局时的解除,通常违约方不享有单方解除权。
在《九民纪要》中,但书“在一些长期性合同如房屋租赁合同履行过程中,双方形成合同僵局,一概不允许违约方通过起诉的方式解除合同,有时对双方都不利。在此前提下,符合下列条件,违约方起诉请求解除合同的,人民法院依法予以支持:
(1)违约方不存在恶意违约的情形;
(2)违约方继续履行合同,对其显失公平;
(3)守约方拒绝解除合同,违反诚实信用原则”。
《民法典》第五百八十条对此作了延续:
当事人一方不履行非金钱债务或者履行非金钱债务不符合约定的,对方可以请求履行,但是有下列情形之一的除外:
(一)法律上或者事实上不能履行;
(二)债务的标的不适于强制履行或者履行费用过高;
(三)债权人在合理期限内未请求履行。
有前款规定的除外情形之一,致使不能实现合同目的的,人民法院或者仲裁机构可以根据当事人的请求终止合同权利义务关系,但是不影响违约责任的承担。
因此,软件开发合同中需要甲方配合才能交付,且形成了无法继续履行的僵持状态时,甲方不妨考虑用合同僵局诉解除。但是,合同解除不影响己方责任承担(违约金)。