周苏教授QQ:81505050ZS@mail.hz.zj.cn第5章计算机软件与信息标准化•软件是由计算机程序和程序设计的概念发展演化而来的,是程序和程序设计发展到规模化和商品化后逐渐形成的概念,软件也是程序及其实现和维护时所必须的文档的总称。•在我国,对于计算机,尤其是软件领域的标准化问题,人们的认识还很不一致。事实上,对于专业人员来说,掌握专业工程知识是必要的,树立对标准化的正确认识也同样是非常必要的。第5章计算机软件与信息标准化•计算机软件的历史•计算机软件基础•系统软件和应用软件•操作系统•信息标准化5.15.25.35.45.5第5章计算机软件与信息标准化•5.1计算机软件的历史–在计算机发展史上,二值逻辑和布尔代数的使用是一项重要的突破。1847年,英国数学家布尔在《逻辑的数学分析》(TheMathematicalAnalysisofLogic)中分析了数学和逻辑之间的关系,并阐述了逻辑归于数学的思想。这在数学发展史上是一个了不起的成就,也是思维的一大进步,并为现代计算机提供了重要的理论准备。但是,布尔的理论直到100年之后才被用于计算。在此期间,程序设计随硬件的发展,其形式也不断发展。第5章计算机软件与信息标准化–在基于继电器的计算机器时代,所谓“程序设计”实际上就是设置继电器开关以及根据要求使用电线把所需的逻辑单元相连,重新设计程序就意味着重新连线。所以通常的情况是:“设置程序”花了许多天时间,而计算本身则几分钟就可以完成。此后,随着真空管计算机和晶体管计算机的出现,程序设计的形式有了不同程度的改变,但革命性的变革则是在1948年,香农重新发现了二值演算,二值逻辑代数被引入程序设计过程,程序的表现形式就是存储在不同信息载体上的“0”和“1”的序列,这些载体包括纸带、穿孔卡以及后来的磁鼓、磁盘和光盘等。第5章计算机软件与信息标准化–此后,计算机程序设计进入了一个崭新的发展阶段。就程序设计语言来讲,经历了机器语言、汇编语言、高级语言、非过程语言等4个阶段,第5代自然语言的研究也已经成为学术研究的热点。第5章计算机软件与信息标准化•计算机软件的发展与计算机软件产业化的进程息息相关。在电子计算机诞生之初,计算机程序是作为解决特定问题的工具和信息分析的工具而存在的。计算机软件产业化是在20世纪50年代,随着计算机在商业应用中的迅猛增长而发生的。这种增长直接导致了社会对程序设计人员需求的增长,于是,一部分具有计算机程序设计经验的人分离出来专门从事程序设计工作,根据用户订单提供相应的程序设计服务。第5章计算机软件与信息标准化•这样就产生了第一批软件公司,如1955年由ElmerKubie和JohnW.Sheldon创建的计算机使用公司(CUC)和1959年创建的应用数据研究(ADR)公司等。•进入20世纪60、70年代,计算机的应用范围持续快速增长,使计算机软件产业无论是软件公司的数量还是产业的规模都有了更大的发展,与软件业相关的各种制度也逐步建立。第5章计算机软件与信息标准化•1968年MartinGoetz获得了世界上第一个软件专利;1969年春,ADR公司就IBM垄断软件产业提出了诉讼,促使IBM在1969年6月30日宣布结束一些软件和硬件的捆绑销售,为软件产品单独定价。这一时期成立的软件公司有美国计算机公司(CCA)、InfornationBuilder公司和Oracle(甲骨文)公司等。第5章计算机软件与信息标准化•5.2计算机软件基础–5.2.1计算机程序–5.2.2计算机软件–5.2.3享有版权的软件–5.2.4许可软件–5.2.5共享软件–5.2.6公共域软件第5章计算机软件与信息标准化•5.2计算机软件基础–计算机软件决定了一台计算机能做什么。从某种意义上来说,软件将计算机从一种类型的机器转变为另一种类型的机器——从绘图到排版、从飞行模拟器到计算器、从文件系统到音乐工作室,等等。第5章计算机软件与信息标准化•5.2.1计算机程序–计算机程序就是指示计算机如何去解决问题或完成任务的一组详细的、逐步执行的指令(即:指令的有序集合)。有些计算机程序只处理简单的任务,而那些更长、更复杂的计算机程序则用于处理复杂度较高的任务。第5章计算机软件与信息标准化–计算机程序的每一步都是用计算机所能理解和处理的语言编写的。以前的组织和个人必须自行编写出绝大部分他们所想要的计算机程序,而现在的绝大部分单位都通过购买商业软件以避免自行开发所需花费的时间和费用。一般人几乎不编写程序,而是从成千上万编写好的作为软件出售的商业程序中选择自己所需要的东西。尽管如此,作为商业领域或政府部门的计算机程序员或是软件发行商,其工作仍然是非常具有挑战性的。第5章计算机软件与信息标准化•5.2.2计算机软件–软件是计算机系统的基础部分。早期,流行用“软件”这个词表示计算机的所有非硬件部分,即:软件是指计算机程序以及为这些程序所用的数据。1980年,美国版权法案将软件明确定义为“在计算机中被直接或间接用来产生一个确定结果的一组语句或指令”,这意味着计算机软件和计算机程序在本质上是相同的。–实际上,“软件”这个词通常用来描述一个商业产品,该产品可能包含不止一个程序,并且也可能还包含数据。第5章计算机软件与信息标准化•2006年出版的《中国大百科全书》给软件下的定义是:软件是“计算机系统中的程序和有关的文件。程序是计算任务的处理对象和处理规则的描述;文件是为了便于了解程序所需的资料说明。程序必须装入机器内部才能工作,文件一般是给人看的,不一定装入机器。程序作为一种具有逻辑结构的信息,精确而完整地描述计算任务中的处理对象和处理规则。这一描述还必须通过相应的实体才能体现。”–也就是说,“软件”不仅仅是指程序,在软件研制过程中按一定规格产生的各种文件也是软件不可缺少的组成部分。第5章计算机软件与信息标准化•5.2.3享有版权的软件–版权是授予一个程序的作者或版权的所有者某种独占权利的合法保护形式,版权的所有者惟一享有拷贝、发布、出售、更改软件等诸多权利。–当购买了享有版权的软件时,你仅仅是获得了这个软件的使用权。因此,购买软件之后能在你的计算机上使用,却不能为了分发或出售该软件而另外进行拷贝。非法进行拷贝、发布或更改软件的人有时候被称为软件盗版者,他们制造的非法拷贝则称为盗版软件。盗版软件不受法律保护,甚至会触犯刑律。第5章计算机软件与信息标准化•5.2.4许可软件–除了版权保护,计算机软件通常也受到软件许可证的保护。–软件许可证是一种法律合同,确定你对一个计算机程序的使用方式。对于微型机软件,用户可以在软件包装盒的外部、软件包装盒内部的一张单独卡片上或是在CD盘的封面上找到该软件的许可证。大型机的软件许可证通常是一份独立的法律文档,该文档由软件发布商与合伙的购买者协商达成。第5章计算机软件与信息标准化•软件许可证经常扩大版权法给予用户的权利。例如,尽管版权法认为在多台机器上拷贝使用一个软件是非法的,但是软件许可证允许用户购买软件的一个拷贝而将它安装在你家中和办公室内的电脑上,只要你是这两台机器的主要使用者。许可证用户可以在特定的环境下拷贝和更改软件。•软件许可一般都很冗长,并以“法律条约”的形式编写,只有当用户同意遵守软件许可的这些条款时,才能继续使用该软件。因此,用户应该知道自己所使用的任何软件的许可情况。第5章计算机软件与信息标准化•(1)小包裹许可证–每次购买软件时签署和提交一个软件许可证协议很不方便,所以计算机企业使用了小包裹许可证。当购买一个软件时,软件包中的磁盘、CD-ROM/DVD光盘等通常封装在一个包装内,打开包裹就表明你同意了该软件许可证的各项条款。–有了小包裹许可证,软件发布商就避免了协商许可条款及获得用户签字的冗长过程,这在本质上是一种“要么接受,要么放弃”的办法。1996年和1997年的法庭裁定支持小包裹许可证的有效性,它是对计算机软件提供合法保护的常用方法之一。第5章计算机软件与信息标准化•(2)多用户许可证–若机构有一个网络系统,大多数软件发布商提供了多种许可选择,有些是为单用户设计的,另外的则是为多用户设计的。单用户许可证限制该软件在一段时间内只能为一个用户所用,大多数的商业软件是以单用户许可证的方式发布的。–多用户许可证允许多人使用一个特定的软件包。当多个用户中每人都有他们个人的软件版本时,这种许可方式就非常有用。多用户许可证一般以用户数来计算价钱,但多用户许可中每个用户付出的价钱比单用户许可所付出的价钱要少。第5章计算机软件与信息标准化–同时,使用许可证允许使用一定数量的拷贝。例如,一家配备了网络系统的公司对某个字处理软件有5个拷贝同时使用许可证,则在任何时候都可以有最多5个职员使用该软件。–场所许可证一般允许在一个特定地点的任何或所有计算机上使用该软件,例如在一所大学内。第5章计算机软件与信息标准化•5.2.5共享软件–共享软件是以“买前尝试”方式存在于市场上的具有版权的软件。共享软件通常包含一个允许试用一段时期的许可证。超过试用期,如果还想继续使用它,你就应该交一笔注册费。共享软件许可证一般允许你制做该软件的多个拷贝,也允许你把这些拷贝分发给别人。这是一个节约广告开支的相当有效的市场策略。但是对于共享软件,注册费的支付依靠用户的自觉,所以共享软件的作者往往只得到他们因付出编程努力而应该得到的报酬中的一小部分。第5章计算机软件与信息标准化•5.2.6公共域软件–有时候,某个作者会放弃他对软件的所有权利,而把该软件置于公共领域,让该软件没有限制地使用,这种软件称为公共域软件,与其说它属于这个作者,不如说是属于大家。公共域软件可以免费拷贝、分发,甚至是重新卖出。公共域软件的主要限制是不允许你对该软件提出版权申请。–公共域软件有时被称作“免费软件”,但是术语“免费软件”有时也应用于共享软件。这种术语使用的模糊性使得用户必须更加注意检查许可协议,以便于决定使用、复制和分发特定软件程序的方式。第5章计算机软件与信息标准化•5.3系统软件和应用软件–5.3.1设备驱动程序–5.3.2计算机编程语言–5.3.3应用软件第5章计算机软件与信息标准化•5.3系统软件和应用软件–软件一般被分为系统软件和应用软件,对于许多计算机用户而言,这之间的区别并不明显。–系统软件负责执行使计算机硬件有效工作的关键任务,协助计算机完成基本操作,像在屏幕上显示信息、在磁盘中存入数据、向打印机发送数据、解释用户命令以及和外围设备通信等。系统软件的四个子类是:操作系统、实用工具、设备驱动程序和编程语言。第5章计算机软件与信息标准化•应用软件则协助人们完成一项任务。当你即使没有计算机也能做某件事情,但为了让这件事情计算机化而使用某个软件时,就可以认为该软件是应用软件。例如,你即使没有计算机,也能写信或写报告,那么你用来制作一个文档的软件就可以算是应用软件。第5章计算机软件与信息标准化•5.3.1设备驱动程序–当购买一个新的外围设备(比如扫描仪)时,通常需要安装相应的软件以告诉计算机如何使用这些设备,这种协助计算机控制外围设备的系统软件称为设备驱动程序。–购买新的外围设备时,安装指南通常告诉用户怎么安装这个设备及其必需的驱动程序。“使用”一个设备驱动程序的方法就是根据安装指南安装好设备驱动程序。一旦正确安装设备驱动程序,计算机就会在“幕后”使用它来与设备进行通信。–在Windows等操作系统中,系统与硬件生产厂商合作,为设备用户提供了“即插即用”功能,以安装大多数的设备驱动程序。第5章计算机软件与信息标准化•5.3.2计算机编程语言–我们知道,计算机程序是计算机用来执行以完成一项工作的指令序列。计算机编程语言使程序员能够使用类似于英语的指令来编写程序。实际上,程序员编写的指令和计算机实际执行的指令有相当大的不同,程序员的指令必须被翻译成电子信号,才能被计算机操作和处理,编程语言(相应的编译程序或解释程序)负责这个翻译过程。–如今,大多数的计算机用户都不需要编写程序,因此,一般计算机,尤其是微型计算机中并没有包括计算机编程语言。如果想编写程序