软件开发合同在合同法上可归入分则第十八章技术合同,但其在合同订立、履行过程中,存在一些特别之处,如合同标的在合同签订时并不明确,需通过需求调研并形成需求确认书予以确认,再如开发过程中一般会进行多次需求变更,有些项目还存在分包开发、多家公司联合开发的情况,等等,这里专门就这些特点进行分析阐述。
要点一:合同标的
合同标的是合同的要件,一般情况下,合同标的是明确的,如在买卖合同中,购买什么型号的电脑,数量多少、单价多少,等等。如果合同标的不明确,一般认为合同是不成立的。但是,在软件开发合同中,合同标的在大多情况下是不明确的。比如:合同约定开发一套物流管理软件,这个软件将来要做成什么样子,有哪些操作界面、有哪些操作功能、数据库如何设计等等,不可能在开发之前就确定好,而是需要签订合同后,由开发者向用户进行调查了解,设计过程中逐渐确定,甚至还会在产品形成过程中又做出变更。所以,这个合同标的是不确定的,这就大大增加了履约风险:开发者认为自己完成的软件产品符合使用要求,而用户觉得不符合要求,双方难以取得一致。
要点二:需求变更
需求变更,指的是在《需求确认书》形成后,开发者在开发软件过程中,用户提出了变更事项,或者开发者发现更合理的设计方案,导致原《需求确认书》中确认的事项发生变化,从而不得不修改设计方案或源代码。如果是用户提出的需求变更要求,将有可能增加开发者的开发成本,如果是开发者提出的需求变更,则有可能需要与用户协商,无论如何,最终都需要双方签署《变更确认书》,作为合同的一部分。
要点三:合同性质的判断
在软件开发合同纠纷中,首要问题是合同性质的判断。即:涉案软件开发合同在合同法上究竟是“技术合同”、“委托合同”还是“承揽合同”?这涉及到法律适用问题。我们先来看一下《合同法》对相关概念的规定:
关于技术合同的概念,合同法第三百二十二条规定:“技术合同是当事人就技术开发、转让、咨询或者服务订立的确立相互之间权利和义务的合同。”
关于技术开发合同的概念,合同法第三百三十条规定:“技术开发合同是指当事人之间就新技术、新产品、新工艺或者新材料及其系统的研究开发所订立的合同。技术开发合同包括委托开发合同和合作开发合同。”
关于技术转让合同,合同法第三百四十二条规定:“技术转让合同包括专利权转让、专利申请权转让、技术秘密转让、专利实施许可合同。”
关于委托合同的概念,按照合同法第三百九十六条的规定:“委托合同是委托人和受托人约定,由受托人处理委托人事务的合同。”
关于承揽合同的概念,按照合同法第二百五十一条的规定:“承揽合同是承揽人按照定作人的要求完成工作,交付工作成果,定作人给付报酬的合同。承揽包括加工、定作、修理、复制、测试、检验等工作。”
根据上述概念性规定,在司法实务中,需要分析涉案合同符合上述哪一个概念,或者符合哪几个概念。然后进一步确定应当适用的法律。
下面通过一则案例来说明:
2004年1月14日,沃达王公司与山丽公司签订“委托开发合同”,委托山丽公司开发销存软件系统(ERP系统)。软件分为五个子系统,包括销售子系统、仓储配送子系统、施工队伍管理子系统、远程操作子系统、报表分析子系统。合同约定的软件交付时间为2004年7月29日。
2004年2月18日,山丽公司与玉帛公司签订《软件外包开发合同》,合同约定:由玉帛公司为山丽公司的客户(沃达王公司)开发ERP系统。系统分为五个子系统:销售子系统、仓储配送子系统、施工队伍管理子系统、远程操作子系统、报表分析子系统。软件交付的时间为2004年7月29日,开发总价款为人民币168000元。并约定:软件的知识产权属于山丽公司。
上述合同签订后,玉帛公司即根据山丽公司的客户(沃达王公司)的需求开始开发ERP系统软件。
在软件开发过程中,沃达王公司放弃了五个子系统中的“远程操作子系统”功能要求,玉帛公司根据这一需求变化,放弃了“远程操作子系统”的开发。但山丽公司提出异议,认为根据合同约定,玉帛公司应当向山丽公司交付全部五个子系统。法院认为:由于该系争软件是为山丽公司的客户定制的,山丽公司的客户验收通过应当视为玉帛公司完成了全部的开发内容,因此玉帛公司不存在违约。
在上述案例中,焦点问题有三个:
一、合同性质的判断:
沃达王公司、山丽公司与玉帛公司三方之间的合同关系性质是什么?我们根据合同法的上述概念规定来进行判定:
(一)沃达王公司与山丽公司签订“委托开发合同”后,双方之间属于“技术开发合同”关系中的“委托开发合同”关系,这种法律关系从本质上讲不是“委托关系”,不能适用委托合同的法律规定,而应适用“技术合同”的法律规定。
(二)山丽公司与玉帛公司签订的《软件外包开发合同》也属于合同法上的“技术开发合同”,该合同只在山丽公司与玉帛公司之间有约束力。
(三)在技术开发合同中,开发者把主要开发任务交由第三人完成的,是否应当经过委托人同意?合同法没有明确规定,但有类似规定,即合同法中关于承揽合同的规定:合同法第二百五十三条第二款规定:“承揽人将其承揽的主要工作交由第三人完成的,应当就该第三人完成的工作成果向定作人负责;未经定作人同意的,定作人也可以解除合同。”因此,沃达王公司如果同意《软件外包开发合同》,那么,仍需由山丽公司就软件研发成果是否符合合同约定向沃达王公司负责。而玉帛公司向沃达王公司交付软件成果的行为,也只是在履行其与山丽公司之间的《软件外包开发合同》。
二、需求变更:
(一)沃达王公司放弃一个子系统的开发,该项放弃属于需求变更,该变更应当向山丽公司提出,而不应直接向玉帛公司提出。
(二)玉帛公司仍应履行其与山丽公司签订的合同,交付全部五个子系统。
因此,上述法院判决意见明确突破了合同相对性原理,是不正确的。
三、合同标的的确认
本案中前后签订了两份合同,根据合同相对性原理,应当区分两份合同的合同标的。沃达王公司与山丽公司的合同标的发生了变化,由五个子系统变为四个子系统,而山丽公司与玉帛公司的合同标的没有发生变化,仍是五个子系统。玉帛公司应当向山丽公司交付五个子系统,然后由山丽公司负责向沃达王公司负责交付四个子系统。