软件开发合同——风险规避与合同设计
作者:琚新国律师 发表时间:2012-9-13 修改时间:2022-5-25
内容摘要:本文讨论了软件开发合同在签订、履行过程中常见法律风险,即合同双方对“合同标的”认识不一致的风险,以及“合同变更”风险,并探讨了规避这些风险的方法与路径。
关键词:软件开发合同 合同标的 需求变更 法律风险
软件开发合同在签订、履行过程中,经常由于合同双方的专业领域不同而面临很大的沟通障碍,这些沟通障碍是造成法律风险的主要原因之一。一方面,软件开发者需要投入大量精力去了解和熟悉软件应用领域(往往是另一个陌生的专业领域),另一方面,软件需求一方(即:合同委托方、定做方、发包方)需要投入较大的成本去向软件开发者讲明自己的需求(往往无法一次穷尽所有需求细节)。因此,作为合同最重要的组成要素之一的“合同标的”在签订合同时是无法确定的,或者虽然确定了某些规格参数,但具体产品在投入使用以后应当达到什么样的用户体验,又无法表述和约定。以致于软件在开发过程中,用户可能不断提出变更要求,这导致合同履行情况越来越糟糕。
一、软件开发合同标的的确定
法律上所称的软件开发合同标的,在软件工程专业领域称之谓软件开发目标,通俗讲就是究竟要开发一个什么样的软件。虽然这个开发目标只有一个,但在合同双方眼里,可能各有各的理解、各有各的期待。而且双方的期待值可能相差甚远(开发者心中装的永远是逻辑实现,而用户心目中却只有用户体验。)。另外,由于软件产品本身的复杂性,它涉及的技术参数较多,软件需求方在合同谈判阶段无法全部描述这些参数,有的甚至在开发之前还不知道某些操作细节应当如何处理,有待实际试用以后发现问题再不断完善,所以,软件开发合同标的的确定是一个不断发展变化的过程,需要合同双方逐渐统一认识。对于开发者而言,就是准确获取和把握客户需求,必要时正确引导客户需求。
结合现实中软件开发合同的履行特点,合同标的确定往往分几个阶段:
(一)需求确定阶段:即合同双方就合同标的问题进行充分沟通,以确定待开发的软件应当具有哪些功能、解决哪些问题。确定的方式是形成《需求说明书》,双方在《需求说明书》上签字、盖章。签字、盖章的《需求说明书》形成合同的一部分。这是对合同标的初步确认。但是,对于需求方而言,《需求说明书》只是描述了软件功能,没有描述用户体验。而用户体验才是用户心目中真正的合同标的,却又往往是无法用书面语言描述于合同之中。我们很难说一个仅仅满足功能需求而用户体验糟糕的软件是符合合同约定的。如果开发者认为客户在《需求说明书》上签字盖章的时候合同标的即告确定,那就大错特错了。可以这样理解:《需求说明书》只是确定合同标的的依据之一,或者说是基础依据,它只描述了客户的基础需求,开发目标固然应当满足《需求说明书》的内容,但仅仅满足《需求说明书》是远远不够的,开发者还应当对用户体验负责。
(二)产品试用阶段:1、产品投入试用以后,用户往往会提出一些问题,希望能够修改,有些客户提出的修改需求可能会超出原《需求说明书》的范围,这实际上是合同的变更,需要双方进一步谈判,签订补充合同或者签订详细的《需求变更说明书》。《需求变更说明书》一旦签订,就成为合同的一部分。2、客户也可能提出修改意见,要求减少功能需求,对此,双方应当同时就是否减少合同价款进行谈判,并签订书面确认文件;3、在就需求变更进行协商时,应当同时就开发周期进行协商,是确定是否需要延长合同履行期限。
(三)产品交付阶段:软件产品的交付与传统商品的交付大为不同,传统商品的交付以转移占有或物权登记为标志,而软件交付往往无法以转移占有或登记为之。有些软件的交付以正式上线、稳健运行等作为标志,而所谓正式上线、稳健运行等又是事后很难举证证实的事情,所以,在软件产品交付阶段,双方应当签署相应的书面文件,以共同一致确认软件已经完成交付的事实。对于需求一方来说,如果对软件不满意,认为不符合合同约定,则不应当签字认可交付行为,而应当继续要求修改完善。而对于开发者而言,如果客户已经接受了交付,则应当及时要求客户签字确认。
通过以上三个阶段,软件开发合同标的才最终确定。在发生纠纷的合同中,纠纷大多发生于后两个阶段。软件开发合同风险也集中于这两个阶段。
二、软件开发合同法律风险规避方法与路径
基于以上讨论的法律风险,可以考虑在草拟、签订、履行合同过程中采取以下方法规避风险:
(一)在草拟、签订合同时,关于合同标的的定义条款不可缺少,但应设置为弹性条款。即:把合同标的的确定赋予《需求说明书》及《变更需求说明书》,另外加上有关用户体验的原则性要求。
(二)在履行合同过程中,一方要求对合同履行事项进行变更的,应当以书面形式提出。能够协商一致的,双方应当签署书面文件。
(三)任何情况下变更需求时,必须签署书面文件。书面文件中应当载明下列事项:(1)需求变更的具体要求及其对《需求说明书》的影响;(2)需求变更后,合同履行期限是否调整,如何调整;(3)合同价款是否调整,如何调整;(4)交付方式、交付期限是否变更,如何变更。
(四)由于软件产品的交付不同于传统商品,所以在产品交付阶段应当允许需求方有充分的验收时间。验收后没有异议的,开发者必须要求客户签署书面确认文件,以避免日后发生是否已经合格交付的纠纷。