您现在的位置: 范文先生网 >> 商务管理论文 >> 电子商务论文 >> 正文

自由软件开发的模块化理论解释与启示

时间:2006-11-28栏目:电子商务论文

  [摘要]  本文以GNU/Linux为例讨论了源代码的内部结构在自由软件开发中所起的重要作用。为此,我们考虑了源代码的模块化属性。源代码的模块化将直接影响开发者是否参与对自由软件的开发。基于模块化的自由软件开发不仅实现了劳动的分工,同时也实现了劳动价值的分割,在自由软件的开发过程中较好地解决了搭便车问题。同时,模块化理论对我国发展软件产业也有一定的借鉴作用
  
  一、引言
  
  在计算机工业的初期,软件是硬件的附属品。企业只是卖硬件,随系统赠送软件。在这_时期,软件的设计思想,新的算法和软件的源代码在专家、学者和公司研究人员之间相互交流,促进了软件的迅速发展。但是,企业很快认识到软件的价值,对软件实施了版权控制,并限制了源代码的发布。同时,软件的开发方式也发生了变化,变成以商业企业为主体的封闭的开发模式。Unix系统是其中最典型的例子。在Unix发展的早期,源代码是可以自由拷贝的,每个人都可以借鉴他人的思想,以完善程序。但是,随着软件产业的发展,1979年AT&T公司对具有独立知识产权的操作系统—— UNIX申请了专利,软件被贴上了版权标识,Unix也被强制实施版权控制,阻止了程序员之间的交流与合作,一些优秀的程序员也相继离开Bell实验室,去各个公司任职。商业企业对软件的知识产权保护成为其他厂商进入相关市场的“壁垒”,在没有替代产品(特别是系统软件)的情况下就形成了事实上的垄断。1989年,Ritchard Stallman在麻省理工学院(MIT)的支持下,在计算机界掀起了﹁场数字改革运动——自由软件运动。从此,自由软件得到了蓬勃的发展,成为软件开发者们非常关注的热点。
  
  自由软件(Free Software)是指允许任何人使用、复制、修改、分发(包括再分发修改过的版本),而且提供全部源代码的软件。自由软件的源代码可以免费获得,是一种典型私人提供公共物品的经济现象。成千上万的“志愿者”参与了诸如Linux操作系统、Apache网页服务器、Sendmaill邮件服务器等大型复杂软件的开发,并且这些软件的质量(例如,性能和稳定性)要优于一般的商业软件。显然,传统经济学难以对自由软件的成因做出有说服力的解释。传统的经济学理论认为,在产权不清晰的情况下,私人代理面临着严重的“搭便车”及外部性问题,对于信息产品往往会出现严重的投资不足现象;私人代理参与公共物品的开发是无效率的(Arrow,1962),并且自由软件的开发者仅得到其所开发软件的私人收益,并没有从其他消费者那里得到任何补偿。由于得到的仅仅是私人收益,按照传统经济学的逻辑,自由软件开发者所付出的努力会远小于社会的最优数量。另外,商业企业所开发的标准化软件产品能够累积不同消费者的需求,这样就可以弥补大量的开发成本;相对于自由软件开发者来说,商业企业倾向于做更多的投资,开发更好的产品,满足更多消费者的不同需求。
  
  关于开发者参与自由软件开发的动机问题的研究已引起经济学家们广泛的关注。Lerner等从劳动经济学和产业组织理论的角度展开了分析,认为自由软件开发的动机主要是出于对自身的职业发展以及得到公众的赞誉等方面的考虑(Lerner,Tirole,2000)。Harhoff与Henkel等系统分析了开发者加人自由软件开发的激励问题,主要包括:①诱发商业企业(比如,软件开发商)持续不断地改进。自由软件的开发者会把自己的创新之处免费提供给商业企业,从而商业企业可以对此做出改进并投人市场。②互惠与声誉效应。自由软件开发者向他人展示自己的创新之处,这就形成了一种互惠环境,其他的开发者也会倾向于发布自己的创新之处。对于最初发布创新的人,则会得到公众的赞誉。③较弱的竞争条件。竞争在自由软件开发者之间是相对比较弱的,向他人公开自己的源代码并不会对自己造成很大的损害(Harhoff,Henkel et al.,2000)。关于此问题更多的讨论可参考达尔构建的一个关于管理自由软件开发项目的理性代理人行为模型(Dalle,Jullien,2001)。自由软件开发模式一个很重要的优势就是拥有一个强大的人才库。成千上万的开发者可以参与这个项目的开发。受雇于一家商业企业的开发者数量毕竟是有限的。更重要的是,自由软件顷月对于需要编写什么样的代码具有更好的知识优势。在商业企业中,开发者并不能意识到用户所面临的所有可能的参数(Johnson,2001)。关于自由软件开发的其他问题也引起了各个学科领域学者极大的兴趣。主要包括:分析自由软件和商业软件的竞争关系问题(Johnson,2001;Dalle,Jullien,2001;Khalak,2000),自由软件的虚拟沟通机制(Neus,2001)以及把自由软件作为一种复杂的公共物品。
  
  在经济学与管理学的理论研究文献中,模
  
  块化被看做是企业生产制造(Ulrich,1995;Schilling, 2000)、组织设计(Baldwin,Clark,2000)的一种新的范例。软件产品可以被看做是由一系列具有特定功能的组件组成,作为一个完整的系统也可以被分解成一系列功能模块,这些模块之间的相互作用就形成了系统的所有功能(Ulrich,1995;Sanchez,Mahoney,1996)。所谓模块是指可组成系统的、具有某种确定独立功能的半自律性的子系统,可以通过标准的界面和其他同样的子系统按照一定的规则相互联系而构成的更加复杂的系统(青木昌彦,2002)。每个模块的研发和改进都独立于其他模块的研发和改进,每个模块所特有的信息处理过程都被包含在模块的内部,如同一个“黑箱”,但是有一个或数个通用的标准界面与系统或其他模块相互连接。国内的学者朱瑞博、陈向东、周鹏等人分别就价值模块的整合、模块化在知识管理、组织分析中的应用展开了讨论(朱瑞博,2003,2004;陈向东,2004;周鹏,2004)。朱瑞博(2003)认为价值模块是产业融合的载体,模块化、产业融合不仅使生产结构基础改变了,竞争的基础也发生了改变。青木昌彦(2002)则认为模块化是新产业结构的本质。
  
  为什么自由软件在某些市场上会表现得如此出色呢?在以往探讨自由软件的文献当中,人们并没有就自由软件的内部结构进行讨论。本文仅从自由软件源代码的内部结构这个角度来探讨这一现象。自由软件的开发从其内部结构来看,往往具有模块化的特性。在产品的模块化设计过程中,每个模块由不同的设计者单独设计完成,实现了劳动的分工。同时,每个模块按照一定的标准界面与系统中的其他模块统一起来,其单独的研发与改进并不影响系统中其他模块的运行,从这个意义上来讲,模块化也实现了产品开发过程中劳动价值的分割。本文首先从一个简单的博弈模型开始,结合GNU/Linux开发的历程,分析了自由软件源代码内部结构的模块化属性在软件开发中所起的重要作用。在此基础上探讨了模块化理论在其他相关产业中的应用。
  
  二、自由软件开发的模块化理论解释
  
  对于某一个特定的理性开发者而言,在其做出是否参与某个自由软件开发的决策时,主要考虑两方面的问题:一是参与自由软件开发的成本是什么?二是具体的收益是什么?参与自由软件开发对于开发者来说成本即为他们所花费时间的机会成本。从开发者的收益上来讲,参与自由软件开发,可以从多方面得到非货币的补偿。例如,系统管理员可以通过解决所使用开放源代码软件的 BUG,从而提高整个网络的绩效(Lerner,Tirole,2000);开发者可以通过自由软件的开发,得到一个很好的声誉,从而为个人将来的职业发展奠定基础。
  
  自由软件代码的一个基本特征是具有非竞争性。这就意味着一个开发者在使用代码的时候并不影响其他的开发者或者其他群体来使用这些代码。任何一个局中人所做的努力对其他局中人来讲都具有正的外部性,这种外部性并不由局中人的主观

[1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页