以案释法:软件委托开发合同纠纷中的源代码交付问题
作者:吴卫明 2026-11-02一、案情概要
这是作者代理的一起软件开发合同纠纷案件。某集团公司(被告)与某软件公司(原告)签订《软件开发合同》,约定原告为被告开发业务管理系统,并约定软件及代码、相关技术资料的知识产权归属于委托方,合同总价款分阶段支付。原告声称完成开发后,被告要求原告交付源代码,但原告未能完整交付源代码,被告以未收到完整源代码为由拒绝支付尾款。原告遂诉至法院,要求被告支付剩余款项及违约金。被告抗辩称,原告未完整交付源代码,已构成根本违约,其在催告邮件中亦含解除合同之意思表示,故合同已经解除,不应再支付后续费用。
经法院审理查明,原告交付的源代码存在缺失,与合同约定的知识产权成果范围不符。法院认为,源代码交付系软件开发合同的主要义务,原告经催告仍未完整履行,已构成根本违约;加之原告在邮件中已作出解除合同的意思表示,故应认定合同已经解除。最终,法院判决确认合同解除,驳回原告全部诉讼请求。
本案审理过程中,原、被告双方争议焦点包括:其一,软件委托开发合同的法律属性应如何认定,源代码在合同项下处于何种地位;其二,源代码的归属应如何判断;其三,未交付源代码是否构成根本违约,进而影响合同解除及责任承担。本文旨在以该案为基础,结合《中华人民共和国民法典》(下称《民法典》)、《计算机软件保护条例》(下称《软件保护条例》),对软件委托开发合同的法律属性、源代码的归属与完整交付、未交付源代码是否构成根本违约等问题进行分析,以期为软件委托开发合同的订立与履行提供参考下文将围绕上述争议焦点展开分析。
二、软件委托开发合同的法律属性
(一)软件开发合同属于技术合同
《民法典》第八百五十一条规定,技术开发合同是当事人之间就新技术、新产品、新工艺、新品种或者新材料及其系统的研究开发所订立的合同,包括委托开发合同和合作开发合同。《最高人民法院关于审理技术合同纠纷案件适用法律若干问题的解释》第一条亦明确,计算机软件属于技术成果的范畴。软件委托开发合同是一方(委托方)支付开发经费和报酬、提出开发需求,另一方(受托方)进行开发并交付开发成果的合同,完全契合《民法典》关于委托开发合同双方当事人义务的结构安排,故其属于技术开发合同项下的委托开发合同。
就软件开发而言,委托方基于特定业务需求提出开发要求,受托方投入技术力量完成代码编写及系统测试,最终交付可供运行的软件及相关技术资料,其本质也属于针对技术方案的研究开发活动。
(二)软件开发成果完整交付的标志
1、完整软件作品的构成
《计算机软件保护条例》第二条、第三条规定,计算机软件是指计算机程序及其有关文档,程序与文档共同构成完整的软件作品。计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列;同一计算机程序的源程序和目标程序为同一作品。其中,源程序是一种可被自动转换为目标程序的代码化指令序列,是软件作品的实质性表达,其交付与许可使用直接关系委托方对软件的可控性与可维护性;文档则是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,包括程序设计说明书、流程图、用户手册等。在软件委托开发语境下,完整的软件作品既包括可由计算机执行的代码化指令序列,也包括能够说明程序设计思路、功能规格及使用方式的技术文档,二者缺一不可。
2、软件产品交付的内容
基于上述法规对“软件作品”构成的规定,结合《民法典》第八百五十三条对受托人“交付研究开发成果,提供有关的技术资料和必要的技术指导”的要求,软件委托开发合同项下,构成完整交付的内容通常包括:源代码及目标程序;数据库设计文档、接口设计文档、测试报告等技术资料;用户手册、操作手册等使用说明;部署、调试及上线运行所必需的测试报告、配置文件等;必要的技术培训及上线辅导。受托方未交付其中任一构成部分,均可能构成对完整交付义务的违反。
三、委托开发合同中源代码的归属问题
(一)典型委托开发合同的源代码归属
1、明确约定源代码交付的情形
依据《民法典》第八百五十一条、第八百五十三条之规定,委托开发合同项下,研究开发人负有交付研究开发成果之义务,委托人则承担支付研究开发经费和报酬等义务。在典型的软件委托开发合同中,委托方提出业务需求并提供开发资金,受托方根据需求完成代码编写,形成可运行的软件系统。源代码作为受托方完成研究开发工作产出的核心成果,其使用、转让及收益方式应首先依据合同约定。如果合同明确约定“软件成果归委托方所有”或“源代码随软件一并交付”的情形下,源代码归属于委托方。
司法实践中,最高人民法院相关裁判亦对此亦作出认可,在如某环保科技公司诉济南某信息科技公司、徐某、王某计算机软件开发合同纠纷(最高人民法院〔2021〕最高法知民终677号)一案中,法院指出,计算机软件开发合同约定开发方向委托方交付源代码、委托方取得源代码著作权的,开发方不仅负有开发符合约定软件的义务,而且应交付源代码,并就其交付的源代码负有保证第三人不享有任何权利的义务,即权利瑕疵担保责任。
对于合同未作明确约定或者约定不明确的情况,则可参照《软件保护条例》的规定执行。《软件保护条例》第十一条规定:“接受他人委托开发的软件,其著作权的归属由委托人与受托人签订书面合同约定;无书面合同或者合同未作明确约定的,其著作权由受托人享有。”《软件保护条例》第三条规定,同一计算机程序的源程序和目标程序为同一作品。该条规范的虽然是著作权法意义上“软件著作权”的归属,但考虑到源代码作为软件的重要组成部分,著作权归属作为一种权利,实际上也决定了源代码应作为软件开发合同交付内容之一。
基于上述规定,笔者认为,在合同未作特别约定的情况下,源代码属于受托方完成研究开发工作产出的成果,是软件成果最完整、最直接的载体,委托人订立软件委托开发合同的目的,通常不仅在于取得一个可以运行的软件成品,更在于取得对软件进行后续维护、修改、升级和二次开发的能力,而这些均以取得源代码为前提。因此,源代码应当归属于委托开发一方,由受托方在完成开发后向委托方移交源代码及相关技术资料,并提供必要的技术指导,以满足委托方“掌握研究开发成果”的合同目的。
(二)名为委托开发、实为软件许可合同的源代码归属
实务中存在大量名为“委托开发”、实为“定制化软件许可”的合同。此类合同通常具有以下特征:其一,受托方已拥有较为成熟的基础软件产品,委托方的需求仅限于在现有软件基础上根据自身业务场景做功能优化、模块适配或接口对接;其二,合同价款构成中包含软件许可使用费,而非纯粹的开发费用;其三,合同中明确约定委托方仅取得软件的使用权,源代码不作为交付内容;其四,受托方仍保留对源代码的修改、二次开发及对外许可的权利。
在上述情形下,尽管合同形式上以“委托开发”命名,但合同实质内容体现的是软件使用许可关系。根据合同实质重于形式原则,应当尊重双方真实意思表示,认定源代码归属于受托方所有。委托方仅在合同约定的使用范围、地域及期限内享有软件使用权,不得擅自复制、修改源代码或对外转让。
司法实践中,法院在判断合同性质时,通常结合合同标题、合同目的、价款构成、交付内容、知识产权归属及双方实际履行情况等因素综合认定。对于明显具备软件许可特征、且合同明确约定源代码不予交付的,应认定合同性质为软件许可而非委托开发,进而认定源代码归属于受托方。
四、未交付源代码是否构成根本违约
对于合同明确约定了源代码交付的情形,在实践中,通常不容易产生争议,人民法院的裁判规则也很清晰(如前文所述的最高人民法院〔2021〕最高法知民终677号)。本节探讨的是合同明确约定交付成果仅限于目标程序的情形、合同未明确约定源代码交付问题的情形以及名为委托开发、实为定制化软件许可的情形。
(一)合同明确约定交付成果仅限于目标程序的情形
《民法典》第八百六十一条规定,委托开发或者合作开发完成的技术秘密成果的使用权、转让权以及收益的分配办法,由当事人约定。即在合同明确约定交付内容仅限于目标程序(即软件安装包、可执行文件等),源代码不属于交付范围,且合同明确约定软件作品知识产权(包括源代码)归属于受托方的情况下,源代码并非受托方的合同义务。受托方未交付源代码属于合同约定的权利保留,而非违约行为,委托方无权以未交付源代码为由主张受托方构成根本违约。
该处理方式符合当事人意思自治原则。委托方在签订合同时即已明确知悉其仅取得软件使用权,未取得源代码,其合同目的在于获得软件的功能性使用,而非取得源代码本身。由于此类合同的目的在于取得可以应用的软件产品,源代码交付并不构成合同的核心义务,因而不宜认定未交付源代码构成根本违约。
(二)合同未明确约定源代码交付问题的情形
需要指出的是,源代码归属的判断与未交付源代码是否构成根本违约之间并非同一问题。即便源代码在归属上可由委托方享有,但根据《民法典》相关规定,违约责任的承担以违反合同义务为核心,违约行为是否构成根本违约,取决于违约行为是否导致合同目的不能实现以及违约程度。在软件开发合同中,需要区分不同约定情况下的合同目的。
笔者认为,软件开发合同的目的通常可以分为两类:
其一、合同目的在于系统功能的实现。在此种情况下,双方关注的核心是软件功能的完整与顺畅运行,而源代码通常影响的是委托方对软件的二次开发能力、可维护性及可控性。此时,未交付未必当然导致合同目的不能实现,但基于《软件保护条例》对于源代码著作权的规定,委托方可以通过催告完整履行等方式,要求受托开发方交付源代码,在催告后仍不交付的,则可以认定构成根本违约。当然,若源代码的缺失导致软件系统无法正常运行、关键功能无法实现、无法满足合同约定的核心业务需求,则可能直接构成根本违约。
其二、合同目的既包含系统功能的实现,也包含委托方对于系统能力的完整控制。如前所述,源代码影响对软件的二次开发能力、可维护性及可控性,并影响系统的漏洞修复等安全能力。在国家对于网络安全监管日趋完善的背景下,软件开发中掌握源代码已经成为实现法定义务的基础。因此,如果合同虽然未明确约定源代码交付,但以知识产权归属等方式约定了源代码归属的,也应认定未交付源代码构成根本违约。
本案的特殊性在于合同已明确约定源代码知识产权归属于委托方,源代码交付系合同主要义务。原告交付的源代码存在缺失,经被告催告后仍未完整履行,致使被告通过委托开发取得完整软件成果(含自主维护、迭代能力)的合同目的不能实现,构成根本违约,被告据此解除合同并拒付后续款项,于法有据。
(三)名为委托开发、实为定制化软件许可的情形
如前所述,名为委托开发、实为定制化软件许可的合同,其合同性质已非典型的委托开发,源代码依约归属于受托方。在此情形下,受托方未交付源代码本身即不构成违约。委托方若以未交付源代码为由主张解除合同,缺乏合同及法律依据,人民法院通常不予支持。
五、结语
软件委托开发合同纠纷中,源代码交付问题往往成为案件争议的核心内容之一。结合民法典技术开发合同的相关规定以及《计算机软件保护条例》对软件作品构成的界定,源代码的归属、交付范围及违约责任承担,应当回归合同约定与合同性质本身。
对于典型的软件委托开发合同,源代码原则上属于受托方完成研究开发工作产出的成果,应归属于委托开发方,受托方负有完整交付源代码及技术资料的义务。为减少合同履行中的争议,实务中,委托方应在合同中明确软件开发成果的交付范围、交付形式与验证标准、著作权权属条款及第三方组件的披露与权利瑕疵担保责任,从而减少与源代码交付相关的争议。






