《新编计算机科学概论》一2.5 计算机软件系统

简介: 本节书摘来自华章出版社《新编计算机科学概论》一 书中的第2章,第2.5节,作者:刘艺 蔡敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 计算机软件系统

软件是由计算机程序和程序设计的概念逐步发展演化而来的,是程序和程序设计发展到规模化和商品化后所逐渐形成的概念。软件随着发展,形成了一个复杂、完整的系统,在某种程度上看其复杂性和重要性已逐步超过硬件系统,成为现代信息系统的关键和核心。

2.5.1 软件的含义

用过计算机的人都接触过软件,但是要用一句话说明软件到底是什么,可不是一件简单的事。我们先来讨论一下软件的含义。
计算机系统通过运行程序来实现各种不同的应用。把各种不同功能的程序,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等通常称为软件。它是计算机系统中与硬件相互依存的另一部分,与硬件合为一体完成系统功能。
软件是由能够完成预定功能和性能的一组计算机指令(计算机程序)、程序正确运行所需数据、描述程序的设计和使用等方面的文档三部分组成。简单地说一个完整的软件包括程序、数据和文档三个组成部分。在本质上,软件是控制计算机硬件运行,解决实际问题的逻辑方法;以各种形式记录在介质上的程序、数据和文档都是软件的表现形式,就像用乐谱来记录音乐一样。
软件是伴随着计算机硬件的产生而出现,并随其发展而逐步发展。在计算机出现的初期,软件并不受重视,通常作为硬件的配套措施。随着技术的发展进步,软件的地位不断上升。今天,软件已经成为推动计算机科学发展的重要动力,软件在整个计算机系统中所占的比重已经远远超过硬件部分。

2.5.2 软件系统的组织

软件是计算机系统的重要组成部分,它是计算机程序以及与程序有关的各种文档的总称。计算机程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合,是人们求解问题的逻辑思维活动的代码化描述。而文档是使用户能读懂程序,正确掌握程序的重要途径。文档记录软件开发的活动和阶段成果,它不仅用于专业人员和用户之间的通信和交流,而且还可以用于软件开发过程的管理和运行阶段的维护。为了提高软件开发效率,提高软件产品的质量,许多国家对软件文档都制定了详尽、具体的规定。
计算机软件系统通常需要包含语言支持功能。计算机通常使用能对硬件进行直接识别、用电子线路容易处理的一种语言,这就是计算机的机器语言,又称为二进制代码语言,也就是计算机的指令;使用计算机的人员往往要使用更“高级”一些的汇编语言和高级程序设计语言,在这两种语言之间需要完成必要的处理和翻译。
计算机软件还要为计算机系统本身提供性能良好的资源管理功能,为使用人员提供尽可能多的帮助。把资源管理和调度功能留给计算机系统软件来完成更可靠,完成这一功能的软件就是计算机的操作系统。操作系统的存在为使用计算机的用户提供了许多支持,其与程序设计语言相结合,使得程序设计更简化,建立用户的应用程序和操作计算机更方便。
计算机软件系统通常根据软件的功能将其分为系统软件和应用软件两大类,这些软件都是用程序设计语言编写的程序,如图2?9所示。
screenshot

计算机系统包括硬件和软件两个组成部分。硬件是所有软件运行的物质基础,软件能充分发挥硬件的功能作用并且可以扩充硬件功能,完成各种系统及应用任务,两者互相促进、相辅相成、缺一不可。图2?10给出了一个计算机系统的软件层次结构。其中,每一层具有一组功能并提供相应的接口,接口掩盖层内的实现细节,对层外提供了功能更强、使用更方便的机器,通常称之为虚拟机(Virtual Machine)。

ef138fbc498a7d64d95db60e91704b1a2f033336

虚拟计算机是人们经过多年研究认识并找到的一种方法,它把硬件的复杂性与用户隔离开来。经过不断的探索和研究,目前采用的方法是在计算机裸机上加上一层又一层的软件来组成整个计算机系统,同时,为用户提供一个容易理解和便于程序设计的接口。在操作系统中,类似地把硬件细节隐藏并把它与用户隔离开来的情况处处可见,如I/O管理软件、文件管理软件和窗口软件向用户提供了一个越来越方便的使用I/O设备的方法。由此可见,每当在计算机上覆盖了一层软件,提供了一种抽象,系统的功能便得到改善,使用就更加方便,用户可用的运行环境就更加好。即对用户来说使用的是一台与裸机不同的虚拟计算机。
最基础的硬件层被称为祼机,提供了基本的可计算性资源,包括处理器、存储器,以及各种I/O设施和设备,是软件赖以工作的基础。操作系统层是最靠近硬件的软件层,对计算机硬件做首次包装。操作系统是上层其他软件运行的基础,为编译程序和数据库管理系统等系统程序的设计者提供了有力支撑。系统软件的工作建立在操作系统改造和扩充过的机器上,利用操作系统提供的扩展指令集,可以较为容易地实现各种各样的语言处理程序、数据库管理系统和其他系统程序。在系统软件基础上,可提供种类繁多的应用程序,应用程序层解决用户特定的或不同应用需要的问题。应用程序开发者借助于程序设计语言来表达应用问题,开发各种应用程序,既快捷又方便。而最终用户则通过应用程序与计算机系统进行交互来解决其实际应用问题。

  1. 系统软件
    系统软件是指管理、控制和维护计算机系统资源的程序集合,这些资源包括硬件资源与软件资源。例如,对CPU、内存、打印机的分配与管理;对磁盘的维护与管理;对系统程序文件与应用程序文件的组织和管理等。常用的系统软件有:操作系统、各种语言处理程序、连接程序、诊断程序和数据库管理系统等,其核心是操作系统。

操作系统(Operating System,OS):负责计算机系统中软硬件资源的管理,合理地组织计算机的工作流程,并为用户提供良好的工作环境和友好的使用界面。操作系统由一系列程序组成,它是直接运行在裸机上的最基本的系统软件,是系统软件的核心。操作系统是整个计算机系统的控制和管理中心,是计算机和用户之间的接口,任何其他软件必须在操作系统的支持下才能运行。
语言处理程序:程序是计算机语言的具体体现。对于用高级语言编写的程序,计算机是不能直接识别和执行的。要执行高级语言编写的程序,首先要将高级语言编写的程序通过语言处理程序翻译成计算机能识别和执行的二进制机器指令,然后才能供计算机执行。
数据库管理系统:数据库管理系统的作用是管理数据库,具有建立、编辑、维护和访问数据库的功能,并提供数据独立、完整和安全的保障。按数据模型的不同,数据库管理系统可以分为层次型、网状型和关系型3种类型。如Oracle、Access都是典型的关系型数据库管理系统。
网络管理软件:是指网络通信协议及网络操作系统。其主要功能是支持终端与计算机、计算机与计算机以及计算机与网络之间的通信,提供各种网络管理服务,实现资源共享和分布式处理,并保障计算机网络的畅通无阻和安全使用。

  1. 应用软件
    除了系统软件以外的所有软件都称为应用软件,它们是由计算机生产厂商或软件公司为支持某一应用领域、解决某个实际问题而专门研制的应用程序。例如,Office套件、标准函数库、计算机辅助设计软件、各种图形处理软件、解压缩软件和反病毒软件等,用户通过这些应用程序完成自己的任务。例如,利用Office套件创建文档,利用杀毒软件清理计算机病毒,利用解压缩软件解压缩文件,利用Outlook收发电子邮件,利用图形处理软件绘制图形等。

在使用应用软件时一定要注意系统环境,也就是说运行应用软件需要系统软件的支持。在不同的系统软件下开发的应用程序只有在相应的系统软件下才能运行。例如,EDIT编辑程序、Debug调试程序是运行在DOS环境下;Office套件和WinZip解压缩程序运行在Windows环境下。
近些年来,随着计算机应用领域越来越广,辅助各行各业应用开发的软件层出不穷,如多媒体制作软件、财务管理软件、大型工程设计、服装裁剪、网络服务工具以及各种各样的管理信息系统等。这些应用软件不需要用户学习计算机编程而直接使用,即能够得心应手地解决本行业中的各种问题。

2.5.3 软件的社会形态

软件自从诞生以来,随着应用的普及逐渐产生出多种社会形态。

  1. 商业软件
    商业软件(commercial software)是在计算机软件中,被作为商品进行交易的软件。请注意这些软件不仅仅用于商业,只是其以商品形式通过市场进行交流,使用软件的用户需要向开发软件的作者支付费用。直到现在,大多数的软件都属于商业软件。相对于商业软件,有非商业的、可供分享使用的自由软件(free software)、共享软件(shareware)、免费软件(freeware)等。

8ed4884370fb398ea8f06ee8b76c07281947eaba

软件作为商品,不仅对社会发展起了积极作用,在相当时期内,对软件产业自身的发展也起到了非常重要的作用。
然而商品有其自私的属性。为了保护自己的商业利益,商业软件所使用的技术被视为商业秘密,严格保护,在一定程度上阻碍了全社会对新技术、新方法的运用。当商业软件发展到一定时期,技术和社会形态发展到一定程度,就出现了多种非商业软件或非纯商业软件。
与商业软件相关的软件类型为闭源软件(closed source software),也就是封闭源代码软件,是指源代码在获取、使用、修改上受到特定限制的软件。此外,有些软件也有复制和分发的限制,它也属于专有软件的范畴,是与开源软件相对立的一个概念。通常这些限制是由软件的所有者制定的,这些限制通过法律或者技术上的手段实现,有时这两种手段被同时采用。最常见的技术限制方式是保留能够被大家读懂的源代码,而只发布只有计算机才能读懂的程序(如二进制格式)。法律上的限制包括使用版权(附带软件许可证)和专利。这些程序的源代码往往被其持有者视为商业机密,如果第三方要查看源代码,往往需要签署保密协议。有些闭源软件会以某种形式公布源代码,但公布源代码与“开放源代码”并不是相同的概念,公布只是让用户能够看到源代码而已,但用户没有其他权利。

  1. 开源软件
    开源软件(Open Source Software,OSS),亦称为开放源代码软件,即一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。开源协议通常符合开放源代码的定义的要求。一些开源软件被发布到公有领域,常被公开和合作地开发。如图2-11所示是开源软件的标识。

开源软件同时也是一种软件散布模式。一般的软件仅可取得已经编译过的二进制可执行文档,通常只有软件的作者或著作权所有者等拥有软件的源代码。
公开源代码的软件并不一定都能称为开放源代码软件。有些软件的作者只将源代码公开,同时作者可能设定公开源代码的条件限制,诸如限制可阅读源代码的对象、限制衍生产品等,这样就不符合“开放源代码”的定义及条件,这类软件只能称为“公开”源代码软件。
开源软件促进组织OSI(Open Source Initiative)定义开源软件有如下10个条件:
自由再散布(Free Distribution):允许获得源代码的人可自由地再将此源代码散布。
源代码(Source Code):程序的可执行文档在散布时,必须随附完整源代码或是可让人方便的事后取得源代码。
衍生著作(Derived Works):让人可依此源代码修改后,在依照同一授权条款的情形下再散布。
原创作者程序源代码的完整性(Integrity of The Author’s Source Code):即修改后的版本,须以不同的版本号码与原始的程序代码区别开来,保障原始的程序代码完整性。
不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设定限制,但若是因为法律规定的情形则为例外(如美国政府限制高加密软件的出口)。
对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):即不得限制商业使用。
散布授权条款(Distribution of License):若软件再散布,必须以同一条款散布之。
授权条款不得专属于特定产品(License Must Not Be Specific to a Product):若多个程序组合成一套软件,则当某一开放源代码的程序单独散布时,也必须要符合开放源代码的条件。
授权条款不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光碟片),不得限制其他软件的授权条件也要遵照开放源代码的授权。
授权条款必须技术中立(License Must Be Technology-Neutral):即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
人们通常把能够自由地获取、修改和重新发布源代码的软件称为开源软件。但是企业用户需要清楚使用开源软件和参与开源软件开发的相关法律因素,才能尊重他人的合法权益并合法有效地保护自身利益,促进事业的发展。
开源软件的基本原则:
1)坚持开放,鼓励最大化地参与和协作。
2)尊重作者的权利,同时保证程序的完整性。
3)保持独立和中立,避免任何可能影响这种独立性的事物。
许多人将开放源代码与自由软件视为相同,这种认识有一定的局限性。以定义条件而言,自由软件仅是开放源代码的一种,也就是自由软件的定义较开放源代码更为严格,并非开放源代码的软件就可称为自由软件,要视该软件的授权条件是否合乎自由软件基金会对自由软件所下的定义。
开放源代码软件就是在GNU通用公共许可证(GPL)下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。简言之:所有公布软件源代码的程序,都可以称为开放源代码软件。
开放源代码有时不仅仅指开放源代码软件,它同时也是一种软件开发模式的名称。使用开放源代码开发模式的软件代表就有Linux操作系统。开放源代码开发模式的名称及其特点最早是由美国计算机黑客埃里克?斯蒂芬?雷蒙在他的著作《大教堂和市集》(The Cathedral and the Bazaar)等一系列论文集中提出并探讨的。
开放源代码软件运动是一个主要由程序工程师及其他计算机用户参与的声势浩大的运动。它是自由软件运动的一个分支,但两者的差别并不明显。一般而言,自由软件运动是基于政治及哲学思想(有时被称为黑客文化)的理想主义运动,而开放源代码运动则主要注重程序本身的质量提升。目前最成功的开源软件要算是Android系统,本书后面的操作系统部分将介绍该系统。

  1. 其他形态
    (1)自由软件

自由软件是指遵循通用公共许可证(General Public License,GPL)规则,保证使用上的自由、获得源程序的自由、修改的自由和复制与推广的自由,也可以有收费的自由的一种软件。自由软件是指软件的开发者赋予使用者自由地运行、复制、修改、发布等权利的软件。
自由软件的出现意义深远。众所周知,科技是人类社会发展的阶梯,而科技知识的探索和积累是组成这个阶梯的一个个台阶。人类社会的发展以知识积累为依托,不断地在前人获得知识的基础上发展和创新才得以一步步地提高。软件产业也是如此,如果能把已有的成果加以利用,避免每次都重复开发,将大大提高目前软件的生产率,借鉴他人的开发经验,互相利用,共同提高。带有源程序和设计思想的自由软件对学习和进一步开发起到极大促进作用,自由软件的定义就确定了它是为了人类科技的共同发展和交流而出现的。free指的是自由,但并不是免费。自由软件之父Richard Stallman先生将自由软件划分为若干等级:
0级:指对软件的自由使用。
1级:指对软件的自由修改。
2级:指对软件的自由获利。
自由软件赋予人们极大的自由空间,但并不意味自由软件是完全无规则的,如GPL 就是自由软件必须遵循的规则。由于自由软件是“贡献型”而不是“索取型”的,只有人人贡献出自己的一份力量,自由软件才能得以健康发展。Bill Gates早在20世纪80年代,曾大声斥责“软件窃取行为”,警告世人这样会破坏整个社会享有好的软件,而自由软件的出现就是软件产业的一个分水岭。在拥戴自由软件的人们眼中,微软的做法实质是阻止帮助邻人,抑制了软件对社会的作用,剥夺了人们“共享”与“修改”软件的自由。
GPL协议可以看成是一个伟大的协议,是征求和发扬人类智慧和科技成果的宣言书,是所有自由软件的支撑点,没有GPL 就没有今天的自由软件。
(2)免费软件
免费软件泛指一切不需金钱购买就可以获得和使用的软件。开发者一般是因兴趣或以分享性质而发放,亦有部分是因为不满或希望改善现存软件而自行开发另一个或优化程序。需要注意的是自由软件或开放源码软件并不一定是免费软件,反之很多免费软件也不是开源的。事实上大多数自由软件或开放源码软件皆是免费软件,而免费软件则只有部分是自由软件或开放源码软件。
(3)绿色软件
绿色软件,或称可携式软件(英文称为Portable Application、Portable Software或Green Software),指一类小型软件,多数为免费软件。最大特点是软件无须安装便可使用,可存放于可移除式存储媒体中(如移动硬盘、优盘等),移除后也不会将任何记录(登录信息等)留在本机。
绿色软件的优点是占用存储空间较小、不用安装、删除方便和只占用少量系统资源,故此大部分都可以存放在可移除式存储媒体(如闪存盘等卸载式存储装置)中读取。部分绿色软件更以开放源代码的形式发布,欢迎任何人参与改进或增加功能,并以相关的自由软件授权(如GPL)允许在网络上自由修改、发布。
最初,人们把“绿色软件”定义为“不会在使用者的计算机上留下难以清除的冗余资讯的软件”,特别受中国大量被恶意软件荼毒的人们的欢迎,因其一如爱好环保般不弃置污染物,所以冠上“绿色”之名。绿色软件后来的意义变得宽阔而模糊,不同性质的小容量软件如捐款软件(donationware)、开放源代码软件、免费软件等也被纳入绿色软件的意义之内。亦有对绿色软件定义为:所有不需安装的免费软件。
现在,绿色软件的定义和可携式软件十分接近,一般指可以连同设定资料一并置于可移除式存储媒体内转移至不同计算机使用或可在网络硬盘上运行的应用软件。由于设定文档(如ini文档或xml文档)是置于程序资料夹内而非写入登录或其他位置,因此转移到不同计算机后仍可正常执行;移除存储装置后记录也不会将资料留在本机。这种设计架构的软件可存取即用,使很多人都把程序“带着走”,以便自己在不同地方使用相同的设定,尤其是具备人性化设定的浏览器软件,这使得可携式软件得到普及。
绿色软件最典型的特性有以下两个:不需要安装;不需要建立或更改任何在该程序所在资料夹以外的档案。
(4)共享软件
共享软件或试用软件是商业软件的一种特定形式。共享软件可以免费地获取和安装,并使用一段时间;但使用期限到后,用户应当停止使用并卸载,如果想继续使用则需支付相应的费用。共享软件可以算是商业软件的一种营销方式。“共享软件”一词首见于20世纪80年代,由Bob Wallace所创,1983年他离开了微软并自立门户,开创了QuickSoft,随后他写了一个文书处理软件,名为“PC-Write”,并称这是一个“shareware”,由此“PC-Write”成为首个“共享软件”。共享软件一般不会开放源代码。
了解了这些软件类别后,大家在日常使用软件时应当仔细区分辨别。在没有充分理解软件许可之前,就随意下载、使用、分发一个软件或者将其用于商业用途,可能会引起严重的法律纠纷,必要时请咨询有关部门明确自己的责任和义务。

相关文章
|
6月前
|
分布式计算 安全 网络协议
【大学计算机技术】第七章 测试 4
【大学计算机技术】第七章 测试
97 0
|
6月前
|
存储 安全 网络协议
【大学计算机技术】第七章 测试 3
【大学计算机技术】第七章 测试
35 0
|
6月前
|
安全 Java 网络安全
【大学计算机技术】第七章 测试 1
【大学计算机技术】第七章 测试
22 0
|
6月前
|
网络协议 安全 网络架构
【大学计算机技术】第七章 测试 5
【大学计算机技术】第七章 测试
59 0
|
6月前
|
安全 网络协议 网络安全
【大学计算机技术】第七章 测试 2
【大学计算机技术】第七章 测试
35 0
|
存储 大数据
团体程序设计天梯赛(下)
团体程序设计天梯赛(下)
340 0
团体程序设计天梯赛(下)
|
算法 安全 定位技术
团体程序设计天梯赛(上)
团体程序设计天梯赛
391 0
团体程序设计天梯赛(上)
计算机应用基础——计算机软件(二)
计算机应用基础——计算机软件(二)
77 0
计算机应用基础——计算机软件(二)
计算机应用基础——计算机软件(一)
计算机应用基础——计算机软件(一)
401 0
|
算法
计算机应用基础——计算机软件(三)
计算机应用基础——计算机软件(三)
127 0