探讨软件开发技术服务合同纠纷案件中的法律问题_西安软件开发公司
首页>>技术前沿>>网站/软件行业动态
探讨软件开发技术服务合同纠纷案件中的法律问题
作者:西安软件开发 | 转载 来源:西安软件开发公司 | 时间:2018年7月17日| 点击:0次 | 【评论】

软件开发技术服务合同纠纷涉及多种编程语言和开发工具,相应的专业问题比起一般的合同纠纷更为复杂,案件审理中只有熟悉软件行业的特点和相关处理流程才能对争议的问题作出准确的判断,这无疑对承办律师和法官都提出了很高的要求。笔者曾经承办多起软件开发技术服务合同纠纷,发现仲裁委员会在认定软件开发纠纷案件时的思路与法院存在一定差异,这种差异的原因来自仲裁员特定的软件或电子行业背景,正是这种背景使得仲裁员对于软件开发技术服务合同中争议问题的把握更为准确,最终认定的事实也更容易被当事人所接收。

软件开发技术服务

一、软件开发周期技术上无法准确预测

根据笔者与软件企业管理人员及软件开发技术人员的沟通,对于软件开发延期的原因,企业管理人员认为项目经理早期计划不充分是最主要的原因,其次是应急预案制定不足;而软件开发技术人员则认为客户需求变更和技术复杂程度是最主要的原因。

以上两者的差异来源于企业管理人员大多不懂软件,对于软件开发技术人员也缺少了解。企业管理人员为了在有竞争对手的商业谈判争取订单,有时候不得不承诺减少开发周期,同时也是因为竞争的原因,软件开发成本限制参与项目的软件开发技术人员数量和技术水准,而以上的结果是项目经理所最不愿意看到的。因此,从某种程度上来讲,软件开发技术服务合同前期的商务谈判过程决定了软件开发的成败,有些软件开发失败的真正原因恰恰是对于软件开发一无所知的客户。

但是对于软件来讲,开发中问题都存在于代码之中,无论开发经验多么丰富的软件开发技术人员,他都无法准确预测开发过程中可能的问题。尽管软件行业存在很多评估工作量的理论和方法,很多因素是无法准确量化的,同时评估工作仍需考虑团队的凝聚力问题,因此技术上准确地确定开发周期是很难实现的,最终还是靠开发团队的历史数据和经验来粗略估算。

基于以上的原因,项目经理应当在软件早期的商务谈判中向企业的管理人员充分说明开发周期的复杂性以争取宽裕的开发时间;对于企业管理人员来讲,应当在商务谈判中与律师协商,妥善安排有关开发周期的合同约定,例如开发合同中软件开发的各个阶段的时间限制应当只作为合同描述内容作为参考使用,而不能作为确定合同违约行为的依据,这样可以帮助软件开发人员在总开发周期内对分项时间进行调整。如确因客观原因造成无法按照预期完成软件开发,则软件公司应当及时向客户进行通报,提出延期请求并以备忘录、补充协议等形式对双方的合意进行书面确认。尽管大多数软件开发技术服务合同对于延期交付有罚金作为违约责任,但是开发过程中与客户协商延期的效果还是要远远好于开发周期后协商延期。

软件开发法律问题

二、准确掌握软件开发需求的困难

因为客户与软件开发人员分属不同的行业,行业背景和特定专业知识的限制使得双方对于需求清单中文字表述的内容可能会存在理解的偏差,这种偏差如果只是涉及软件底层功能的部分调整还有可能及时弥补,但是如果涉及整个软件模块或架构的调整,可能给软件开发工作造成致命的影响。

软件开发技术服务合同中一般都没有非常明确的针对双方具体沟通事务的约定,软件公司在开发前期都会与客户进行反复沟通以确定需求清单的内容,但是一旦进入开发流程,开发人员有可能忽略与客户沟通软件开发的中间成果。例如由需求清单整理的功能需求说明书(SRS)、软件产品架构设计说明书、软件用例等文件都单纯成为开发人员之间内部沟通协调的文件,而忽略了与客户进行确认的过程。技术上来讲,软件开发的所有工作都是以软件用例作为出发点和基本依据的,软件用例也是底层软件开发技术人员了解产品功能和使用场景的依据。与客户对软件用例进行沟通也最有可能在开发初期消除对需求理解的歧义。

综上由开发合同中的需求清单到最终完成开发、交给客户验收的过程中,软件开发人员将中间工作成果与客户进行沟通确认的过程可以避免对需求清单理解歧义的发生。客户对于软件开发的具体流程和细节并不熟悉,因此软件开发人员有机会通过沟通来消除软件需求理解的歧义。因此,以上案例中,应当确定软件公司对于因理解歧义而导致开发失败负有责任。从律师的角度来看,应当将软件开发流程中的关键节点确认作为软件开发技术服务合同约定的内容之一,沟通过程中形成的确认文件也可以成为预防纠纷的有效形式。

实践中对于软件需求还有一种情况,那就是客户在开发过程中不断提出新的功能要求。出现这种情况的原因是多方面的,部分是因为客户自身的业务需求不确定,部分是因为在开发周期较长的项目中,客户在开发过程中了解同行业更为成熟的做法和经验,因此提出新的功能需求。对于律师来讲,应当在软件开发协议中约定需求变更的程序和条件,例如“若需求变更影响不大,不增加费用和延长开发时间;若变更会对开发进度或工作量有较大影响的,应当延长开发时间及增加开发费用”。但是具体实践中因为软件开发技术人员缺少相关合同事务的操作经验,同时因客户方面繁琐的审批流程迟迟不能及时回复而程序开发的时间又十分紧张,使得需求控制的相关程序和文件未及时提出并确认,最终在引发纠纷时无法确定具体的责任归属。对于项目经理来讲,应当及时与律师进行沟通解决程序问题可以有效避免此类问题的诉讼风险。

软件开发法律问题

三、关于软件源代码的部分交付

为了在履行开发协议的过程中更好地保护客户的利益,理论上来讲,软件开发中会产生大量的迭代版本,开发中间向客户交付的部分代码并无实质意义,但是对于开发末期已经进入调试阶段的软件代码来讲,尽管与最终代码仍有不同,但是其价值已经可以保护和持有代码的当事人一方。这也是将软件代码的部分交付进入软件开发技术服务合同的原因之一。实践中还有一种情况部分交付代码的情况,客户在开发过程中为了行政审批的相关项目或者其他有关的商务合作,要求软件公司先行提供部分代码以取得中国版权中心颁发的登记证书。在法学与计算机科学交叉的领域,需要计算机行业背景的法官和律师在此类纠纷中扮演重要的角色,同时在现有的诸如敏捷、精益等开发模式中,如能适时适度地引入法学相关的内容和视角,可以使现有的模式更为完善。

此内容DOC下载 此内容PDF下载

【全文完】
0 ([$-顶稿人数-$])
0 ([$-踩稿人数-$])

版权声明:

1、弈聪软件网站内容中凡注明“来源:XXX(非西安弈聪网站)”的作品,转载自其它媒体,转载目的在于传递更多信息,其中涉及的网站建设,网站优化,APP开发,微信小程序开发,大数据平台开发,区块链技术开发等软件开发技术细节并不代表本站赞同支持其观点,并不对其真实性负责。对于署名“西安弈聪”的作品系本站版权所有,任何人转载请署名来源,否则西安弈聪将追究其相关法律责任。

2、本站内容中未声明为“原创”的内容可能源自其它网站,但并不代表本站支持其观点,对此带来的法律纠纷及其它责任与我方无关。如果此内容侵犯了您的权益,请联系我方进行删除。