4.1 软件的基本概念和发展
4.1.1 软件的基本概念
1)软件的定义
软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。 一般来说,软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。 其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。 而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。
软件并不只是包括可以在计算机上运行的计算机程序,与这些计算机程序相关的文档,一般也被认为是软件的一部分。 简单地说,软件就是程序加文档的集合体。 软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响,是计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
2)软件的特点
①软件不同于硬件,它是计算机系统中的逻辑实体而不是物理实体,具有抽象性。
②软件的生产不同于硬件,它没有明显的制作过程,一旦开发成功,可以大量拷贝同一内容的副本。
③软件在运行过程中不会因为使用时间过长而出现磨损、老化以及用坏问题。
④软件的开发、运行在很大程度上依赖于计算机系统,受计算机系统的限制,在客观上出现了软件移植问题。
⑤软件开发复杂性高,开发周期长,成本较大。
⑥软件开发还涉及诸多的社会因素。
4.1.2 自由软件
自由软件(freesoftware)是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。 其创始人是理查德·斯托曼(Richard Stallman)(见图4.1),被人称为“最后的真正黑客”。他认为一个好的软件,便该自由自在地让人取用。 软件不应该拿来作为相互倾轧、剥削的工具。 因此他起草GNU通用公共许可证来保障自由软件的自由,并创办了自由软件基金会来贯彻他的理念。 他对自由软件的定义是:“自由软件的重点在于自由权,而非价格。 要了解其所代表的概念,你应该将‘自由’想成是‘自由演讲’,而不是‘免费啤酒’。”更精确地说,自由软件代表计算机使用者拥有选择和任何人合作之自由、拥有掌控他们所用的软件之自由。
大部分的自由软件都是在互联网发布,并且不收取任何费用;或是以离线实体的方式发行,有时会酌情收取部分费用(如工本费和运输费),而人们可用任何价格来贩售这些软件。 因此,自由软件也可以是商业软件:因为贩卖软件没有违反自由软件的定义。

图4.1 自由软件组织创始人Richard Stallman
根据斯托曼和自由软件基金会(Free Software Foundation,FSF)的定义,自由软件赋予使用者4种自由:
①自由之零:不论目的为何,有使用该软件的自由。
②自由之一:有研究该软件如何运作的自由,并且得以修改该软件来符合使用者自身的需求。 取得该软件之源码为达成此目的之前提。
③自由之二:有重新散布该软件的自由,所以每个人都可以借由散布自由软件来敦亲睦邻。
④自由之三:有改善后再利用该软件的自由,且可以发表修订后的版本供公众使用,如此一来,整个社群都可以受惠。 如前项,取得该软件之源码为达成此目的之前提。
如果一软件的使用者具有上述4种权利,则该软件得以被称为“自由软件”。 也就是说,使用者必须能够自由地、以不收费或是收取合理的散布费用的方式、在任何时间再散布该软件的原版或是改写版,在任何地方供任何人使用。 如果使用者不必问任何人或是支付任何的许可费用从事这些行为,就表示她/他拥有自由软件所赋予的自由权利。
不受限制正是自由软件最重要的本质,与自由软件相对的是闭源软件(Proprietary Soft⁃ware)即非自由软件,也常被称为私有软件、封闭软件(其定义与是否收取费用无关——自由软件不一定是免费软件)。 自由软件受到选定的“自由软件授权协议”保护而发布(或是放置在公共领域),其发布以源代码为主,二进制档可有可无。 自由软件的许可证类型主要有GPL许可证和BSD许可证两种。 另外,自由软件也可看作开源软件的一个子集。
其中,自由软件最知名的软件就是Linux。
4.1.3 商业软件
商业软件(Commercial Software,CS)是在计算机软件中,指被作为商品进行交易的软件。直到2000年,大多数的软件都属于商业软件。 相对于商业软件,有非商业的专用软件(Propri⁃etary Software)(但专用软件中亦包含有商业软件),可供分享使用的自由软件(Free Software)、分享软件(Shareware)、免费软件(Freeware)等。
新一代的商业软件其中应该包含统一沟通、企业协作、商业智能、企业项目管理等相关的解决方案,集成功能必须非常强大,能帮助更多用户体验实现软件的商业价值,体验提供最佳解决方案。 BIMC指出商业软件提供商也应该为合作伙伴提供各种技术支持和培训,商业软件的销售人员和技术人员也需要接受提供商的专业培训才能上岗。
比如,商业管理系统是在继承传统商业零售业计算机管理经验,融入现代化商业管理思想,并在内核上集成了生鲜商品管理的新一代商业管理系统。 为商家进行日常业务流程的自动化处理和管理提供了一套整体全线解决方案。 并在其中涵盖了各种商场自动化设备的管理,如,Pos机、条码标签秤、条码打印机、盘点机等,做到了真正意义上的系统集成。
4.1.4 开放源码软件
开放源码软件(Open Source Software,OSS)是一种源代码可以任意获取的计算机软件,简称开源软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。 开源协议通常符合开放源代码的定义的要求。 一些开源软件被发布到公有领域。 开源软件常被公开和合作地开发。
开源软件同时也是一种软件散布模式。 一般的软件仅可取得已经过编译的二进制可执行文件,通常只有软件的作者或著作权所有者等拥有程序的源代码。 有些软件的作者只将源代码公开,却不符合“开放源代码”的定义及条件,因为作者可能设置公开源代码的条件限制,诸如限制可阅读源代码的对象、限制派生产品等,由此,被称为公开源代码的免费软件(Free⁃ware),故公开源代码的软件并不一定可称为开放源代码软件。
开放源代码的定义由Bruce Perens(曾是Debian的创始人之一)定义如下:
①自由再散布(Free Distribution):允许获得源代码的人可以自由地再将此源代码散布。
②源代码(Source Code):程序的可执行文件在散布时,必须以随附完整源代码或是可让人方便地事后取得源代码。
③派生著作(Derived Works):让人可依此源代码修改后,在依照同一授权条款的情形下再进行散布。
④原创作者程序源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码与原始的代码作分别,以保障原始代码的完整性。
⑤不得对任何人或团体有差别待遇(No Discrimination Against Personsor Groups):开放源代码软件不得因性别、团体、国家、族群等设置限制,但若是因为法律规定的情形则为例外(如美国政府限制高加密软件的出口)。
⑥对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fieldsof En⁃deavor):意即不得限制商业使用。
⑦散布授权条款(Distribution of License):若软件再散布,必须以同一条款散布之。
⑧授权条款不得专属于特定产品(License Must Not Be Specifictoa Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必须符合开放源代码的条件。
⑨授权条款不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光盘),不得限制其他软件的授权条件也要遵照开放源代码的授权。
⑩授权条款必须技术中立(License Must Be Technology⁃Neutral):意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
开放源代码开放模式的名字及其特点最早是由美国计算机黑客埃里克·斯蒂芬·雷蒙在他的著作《大教堂和市集》(The Cathedral and the Bazaar)等一系列论文集中提出并探讨的。
严格地说来,开放源代码软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。 自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。 但在现实上,绝大多数开源软件也都符合自由软件的定义。 比如,遵守GPL和BSD许可的软件都是开放的并且是自由的。
例如部分开源软件如下:
①Linux——第一个采用开放源代码软件开放模式的软件协作计划。
②Mozilla Firefox——开放源代码的浏览器。
③Open Office.org——开放源代码的办公软件。
例如介入开源运动发展的企业:
①苹果电脑(Apple)——开放了该公司操作系统Mac OS的内核Darwin的源代码(但不包括图形用户界面)。
②IBM——协助发展多项开放源代码计划。