软件著作权侵权认定中的适用【侵犯著作权律师】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件著作权侵权认定中的适用【侵犯著作权律师】
广东长昊律师事务所
一、思想与表达相区分原则在软件著作权侵权认定中的适用
思想与表达相区分原则是著作权法的总原则,然而在具体划分软件作品中的思想与表达时,就要用到“抽象概括法”的前两个步骤即抽象和过滤,本质上这是对思想与表达相区分原则的具体应用。抽象阶段排除软件作品中只构成抽象思想的部分;过滤阶段排除软件中程序执行和逻辑的高效率对应的代码和“标准程序”代码及从公共领域获得的程序代码,这些代码并不属于表达,而是不受著作权法保护的思想。抽象和过滤阶段主要包括了上述三个部分,它们构成了软件作品的思想,除此之外便是著作权保护的表达。下面就从这三个部分具体展开:
(一)软件中纯抽象思想的区分
在认定被告软件侵权的过程中,两个软件首先要被送到专业鉴定机构去做鉴定,然后才由法官根据鉴定结论对权利软件程序的结构进行分析,识别其中所包含的纯抽象思想部分,这部分属于著作权法被保护的第一层。具体分析过程是从软件程序的代码开始,结束于程序的总体功能。软件作品的思想和表达范围就是在这两个端点之间,从代码这一最低端开始,以自下而上的方式进行分析金字塔每一层的抽象和概括的程度,当这种程度越来越高终将跨越思想和表达的界限。
法官不是软件专家,一般不可能,也不能要求其看得懂程序代码,所以上述分析的方法,对于法官来说是非常困难的。笔者认为,与自下而上的思想和表达分析方法相反,软件设计过程是自上而下的过程,这符合人们掌握新领域知识的思维过程,可以借助于软件设计过程来促进理解软件作品的思想与表达的界限。软件开发流程中有助于区分思想和表达的部分包括概要设计和详细设计。软件设计是自上而下将软件的总功能和各个子功能逐次展开、具体细化,即先完成软件的总体设计,然后再完成各个组成部分的详细设计。从工作性质和内容的角度出发,软件设计分为概要设计和详细设计两种。件的总体设计、模块划分、用户界面设计、接口设计、数据库设计等等,详细设计将概要设计中各自部分设计再具体细化。
软件设计中概要设计是抽象的,毫无疑问它属于思想范畴,不为著作权法所保护。也就是说,概要设计抽象概括了软件程序的总体功能,而思想是不能被垄断的,也根本不构成著作权作品的独创性要求。但是思想与程序的总体功能并不是等同关系。在Whelan 案之前美国版权法的保护范围只是程序代码,本案将保护范围扩展到了软件程序的结构。该案中,原被告程序只是在程序结构上相似,那么程序结构是否属于著作权法保护的表达。美国法院认为程序总体功能即是思想,其他对这一功能的实现都是表达,属于同时附加了一个限制条件即作品必须属于实用性作品,对于其他作品不适用。显然程序结构属于表达,最终原告被判侵权,并提出了SSO(Structure,Sequence,Organization)法则,也就是结构、顺序、组织法则。笔者认为,Whelan 案中法院对作品思想和表达的划分过于简单,思想所占作品的比例很少,认为思想完全等同于程序的总体功能,除此以外的都是表达。我们知道程序的总体功能又会分成很多子功能,子功能有自己的设计思想,有自己的算法。Whelan 案的做法是将总体功能当作思想,把子功能和代码都是当作表达,这是非常荒谬的。每个子功能具有
自己的思想,仍然具有抽象性,根据思想与表达相区分原则是不能作为表达来保护的。SSO 准则将思想完全等同于程序的总体功能,将属于思想范畴的程序结构认作表达,使得表达的范围延伸到了思想的领域,过度扩大了著作权法的保护范围。这种过度保护著作权人的利益的行为,违背了著作权法的思想与表达相区分原则和利益平衡原则。
在详细设计过程中存在大量的程序员主观创意,那么这部分创意体现在程序中是否符合独创性。如果详细设计足够详细,比如确定了程序编写语言,可以在程序中直接调用的数据库详细接口,能够重复调用的详细子程序(包括函数名、参数名、参数的个数等)等,可以依据其直接编写出代码,则这种程度的设计不属于思想,而属于表达。一种思想通常对应若干个表达,人们可以利用相同的思想创作出不同表达的作品,而上述详细设计达到了本身和程序代码是一一对应的程度,那就是表达了。因此只要软件程序的设计体现在代码上的概要设计实现软关系,是多对一的情况就属于纯思想部分,如果是一一对应的关系,则就属于表达。
二、程序执行和逻辑的高效率对应代码的区分
在软件设计开发过程中,实现某一特定任务或者特定功能进行编写代码的选择途径有很多,但是为了追求效率最大化而采用的最优化途径只有一种或者非常有限的几种。这种情况实际上让程序员别无其他选择,只能使用有限的途径。著作权中的混合原则指出当一种思想只有一种或极其有限的几种表达时,该表达也不受著作权保护,以免导致思想本身被垄断。程序代码本身就属于受保护的表达,根据混合原则,这些数量非常有限的以代码形式出现的表达就不应该受到著作权法的保护。
在计算机软件编程领域,有一个公式:“程序设计=算法+数据结构”。数据结构既是研究在软件程序中对数据进行组织设计的方法,也是数据元素的集合,集合中的数据之间具有一种或多种特定关系。具体类型分为集合(Set)、线性结构(Linear Structure) 、树形结构(Tree Structure) 、图状结构(Graphic Structure)。不同的数据结构类型能够实现不同的数据存储功能,用于不同的功能实现,编写为代码时执行的效率也不一样。算法,是解决问题的方法或步骤,描述了解决某一特定类型的问题的具体步骤。算法和数据结构都能用源代码实现,也就是体现为编程。在软件程序设计的过程中,首先应当确定需要处理的数据对应的数据结构,然后再设计相应的算法解决怎样处理数据,也就是建立相应的数据结构。因为编写程序的目的是为了实现需要的功能,实现具体的功能一定要处理执行过程中的数据,所以软件程序的关键在于数据处理,在于数据结构的设计。
人们使用计算机软件会充分考虑到软件的运行速度,因此软件编程人员会特别注重使用合适的数据结构来提高软件代码的执行效率。在编写代码时,使用精准的定义数据类型,在没有特殊要求或者没有必要使用泛型来定义全局或者局部变量。计算机对字符型的变量处理速度要比字符串的变量要快,而且字符型变量占用存储空间要小。同样道理,整型变量在这两方面也优于长整型变量。需要注意,在数据类型选用上,不能超过定义变量的范围对变量进行赋值,因为在某些情况下所赋的值超过变量的范围,编译器对程序进行编译处理时可能不会提示错误警告,但是程序运行的结果却出现错误,而且在复杂的程序中这样的错误一般很难被测试发现,容易给软件留下很大的漏洞。根据混合原则,这样为提高软件执行效率编写的数据结构对应的代码,对于编程人员来说,选择高效率的数据结构的范围有限,实际上此类代码已被视同思想,不受保护。如果对这样的情况进行保护,在实现相同功能的不同软