第 3 章 计算机软件系统本章学习目标本章主要讲解计算机软件的层次结构,系统软件操作系统的功能和基本概念以及常用操作系统的主要特征,
软件生存周期和面向对象方法的开发过程 。 通过本章的学习,主要掌握以下内容:
计算机软件的层次结构
操作系统的概念、功能
常用操作系统 (Windows,Unix)主要特征
软件生存周期和面向对象方法的开发过程第 3 章 计算机软件系统
3.1 计算机软件的层次结构
3.2 操作系统
3.3 程序设计语言翻译系统
3.4 软件开发与软件工程
3.1 计算机软件的层次结构计算机软件是指计算机中的程序、数据及其文档。计算机软件是计算机系统的灵魂,
计算机用户是通过软件来管理和使用计算机的,一般计算机软件可分为 3类:系统软件、
支撑软件和应用软件,如右图所示。
1、系统软件系统软件是计算机系统中最靠近硬件层次的软件,系统软件用于管理、控制和维护计算机系统资源的程序集合,如:操作系统、
汇编程序、编译程序等都是系统软件,系统软件与具体的应用领域无关,解决任何领域的问题一般都要用到系统软件。
2,支撑软件支撑软件是支撑其他软件的开发与维护的软件,如:各种接口软件、软件开发工具和环境、网络软件、数据库管理系统等都是支撑软件。
3、应用软件应用软件是为解决特定应用领域问题而编制的应用程序,
如:财务管理软件、火车订票系统、交通管理系统等都是应用软件。
系统软件、支撑软件和应用软件三者既有分工,又相互结合,而且相互有所覆盖、交叉和变动,并不能截然分开。 如操作系统是系统软件,但它也支撑了其他软件的开发,也可看作是支撑软件。在现代计算机软件层次结构中,操作系统是最基础的软件。面对复杂的计算机硬件结构,操作系统使用户真正成为计算机的主人。操作系统是对计算机硬件功能的第一次扩展,使得用户可以很方便地管理和使用系统资源,并在其上开发各类应用软件,进一步扩展计算机系统的功能。
返回
3.2 操作系统
3.2.1 操作系统的概念
3.2.2 操作系统的功能
3.2.3 操作系统的分类
3.2.4 几种常用的操作系统简介返回
3.2.1 操作系统的概念操作系统( Operating System,缩写成 OS) 是现代计算机系统中一种必不可少的系统软件,它经过了从简单到复杂的很长的发展过程,目前已成为计算机系统的最基础最重要的系统软件。随着计算机技术的飞速发展,计算机软、硬件资源越来越丰富,用户要求能更方便、更灵活地使用计算机系统,因此现代计算机系统中至少要配置一种操作系统。
1.什么是操作系统操作系统是一种系统软件,它统一地管理和控制计算机系统中的软、硬件资源,合理地组织计算机工作流程,并为用户提供一个良好的、易于操作的工作环境,使得用户能够灵活、方便、有效地使用计算机。
操作系统是计算机系统的核心,是用户和其他软件与计算机裸机之间的桥梁,是用户与计算机之间的接口 。
不同计算机使用者看待操作系统有所不同,长期以来有两种观点,一种是虚拟机的观点,另一种是资源管理的观点 。
虚拟机观点 也称为扩展机的观点,操作系统是直接配置在计算机硬件之上的第一层软件,它对硬件的功能进行了首次扩充,装有操作系统的计算机极大地扩展了原计算机的功能,把用户对包含有各种硬件部件的计算机系统的操作和使用由复杂变得简单,从低级操作上升为高级操作,把基本功能扩展为多种功能 。
资源管理的观点 是目前操作系统描述的主要观点,上述虚拟机观点是一种自顶向下的观点,从相反的方向即以自底向上的观点看,操作系统是计算机系统的,大管家,,管理着这个复杂系统的所有资源,资源是指系统硬件资源和软件资源,包括 CPU,内存,时钟,磁盘,打印机,文件,程序,
数据等 。 操作系统的任务是合理分配和控制系统资源,使系统资源得到充分合理的使用,提高系统资源的使用效率 。
操作系统负责监视跟踪资源的使用状况,满足资源请求,决定谁得到资源,何时得到,获得多少,并按一定方式调度和分配资源,在资源使用完毕后,再回收资源,充当着计算机系统资源管理器的作用 。
综上所述,对于操作者来说,操作系统是一个用户环境,
一个工作平台,一个人与机器进行交互操作的界面;对系统设计者而言,它是一种强功能的系统资源管理程序,是用以控制,管理计算机软,硬件资源和程序执行的集成软件系统 。
2,为什么要学习和研究操作系统操作系统是用户与计算机之间的交互界面,用户只有理解了操作系统,才能更方便,更灵活地使用计算机,掌握了操作系统提供给用户的各种系统服务 ( 如命令操作,系统调用,视窗环境等 ),才能更好地利用系统资源,更好地在操作系统的基础上建立用户自己的应用系统,开发自己的应用软件 。 打破操作系统的神秘性,了解操作系统的内部结构,
掌握操作系统的设计方法,熟悉操作系统的操作和使用是学习操作系统的目的 。 返回
3.2.2 操作系统的功能操作系统的主要目的有两个方面:一是方便用户使用;二是最大限度地发挥计算机系统资源的使用效率。为实现这两个目标,从系统资源管理的观点出发,通用操作系统应该具备 处理器管理、内存管理、设备管理、文件管理、作业管理 等五个方面的功能。
1.处理器管理在单处理器的计算机系统中,存在着用户作业争用处理器的情况。如何对使用处理器的请求做出适当的分配,这就是操作系统处理器管理功能模块要解决的问题。在实际工作中,操作系统将以进程和作业的方式进行管理。因此,处理器管理的主要工作是进行处理器的分配调度,尤其是在多道程序或多用户的情况下,为用户合理地分配处理器的时间,
尽可能地使处理器处于忙状态,提高处理器的工作效率。
2,为什么要学习和研究操作系统由于硬件的限制,内存储器的容量是有限的,此外,
如果有多个用户程序共享内存,他们彼此间不能相互冲突和干扰 。
内存管理就是按一定的策略为用户作业和进程分配存储空间和实现重定位,记录内存的使用情况 。 同时,还将保护用户存放在内存中的程序和数据不被破坏,必要时提供虚拟存储技术,逻辑扩充内存空间,为用户提供比实际容量大的虚拟存储空间,并进行存储空间的优化管理 。
3,设备管理操作系统设备管理模块的主要任务是:如何有效地分配和使用设备,如何协调处理器与设备操作之间的时间差异,
提高系统总体性能 。
由于输入输出设备的工作速度远远低于 CPU的速度,操作系统应按设备的输入输出性能分类,并根据不同种类设备的特点采用不同的策略分配和回收外设以及控制外设按用户程序要求进行操作 。 为提高设备使用效率,还实现虚拟设备 。
4,文件管理逻辑上具有完整意义的信息集合称为文件,计算机系统中的信息,如系统程序,标准子程序,应用程序和各种类型的数据,通常都以文件的形式保存在外存中 。 每个文件都有自己特定的名字,称为文件名 。
现代计算机系统中都由操作系统提供文件管理模块,来管理文件的存储,检索,更新,共享和保护 。
操作系统的文件管理功能:是对存放在计算机中的文件进行逻辑组织和物理组织,面向用户实现按名存取 。 实现从逻辑文件到物理文件间的转换;有效地分配文件的外存;建立文件目录;提供合适的存取方法;实现文件的共享,保护和保密;
提供一组文件操作 。
5,作业管理作业管理为用户提供一个良好的人机交互界面,实现作业调度和控制作业的执行 。 作业调度从等待处理的作业中选择可以装入内存的作业,对已经装入内存中的作业用按用户的意图控制其运行 。 返回
3.2.3 操作系统的分类不同类型的计算机,其操作系统是不同的。操作系统的分类有许多方法,按用户数目的多少,可分为单用户操作系统和多用户操作系统;按依赖的硬件规模分,可分为大型机、
中型机、小型机和微型机操作系统;按操作系统提供的性能分,可分为批处理操作系统、分时操作系统、实时操作系统,
以及近几年来发展起来的网络操作系统和分布式操作系统。
下面简要地介绍常见的几类操作系统
1.单用户操作系统单用户操作系统面对单一用户,用户对系统有绝对的控制权。一般是为微机和简单小型机而设计的操作系统。
单用户操作系统又细分为单用户单任务操作系统和单用户多任务操作系统 。 单用户单任务操作系统的主要特点:只能服务于单个用户,而且一次仅能运行一个用户程序,此用户独立享用系统的全部硬,软件资源 。
单用户单任务操作系统的主要特点:只能服务于单个用户,而且一次仅能运行一个用户程序,此用户独立享用系统的全部硬,软件资源 。
早期微机配置的操作系统就是单用户单任务操作系统,
例如,MS-DOS,CP/ M等 。
单用户多任务操作系统也是为单个用户服务的,但它允许一次执行多项任务,如用户可以在编译程序的同时开始下一个程序的编译工作 。 常用有 OS/2,Windows 95/98等 。
2,多用户操作系统对高档微机,小型机和大型机,由于内,外存容量大,
外设多,计算速度快,为了充分发挥计算机资源丰富的优势,
提高使用效率,这类计算机多数使用多用户操作系统 。 它除具有一般操作系统的功能外,还提供多用户分时功能,在一台计算机中安装多个用户终端,多人在不同的终端上同时使用一台计算机,使计算机资源为大家所共享 。 同时,它还提供多任务功能,每个用户可同时进行几项工作,允许多用户按照自己的要求给每项任务设置不同的优先权 。 因此,多用户操作系统是一个多用户,多任务,分时的操作系统 。
3,批处理操作系统把用户要求计算机系统进行处理的一个计算问题称为一个,作业,。 用户为作业准备好程序和数据后,
再写一份控制作业执行的说明书 。 然后把作业说明书,相应的程序和数据一起交给操作员 。 操作员将收到的一批作业的有关信息输入到计算机系统中等待处理,由操作系统选择作业并按其作业说明书的要求自动控制作业的执行 。 采用这种批量化处理作业的操作系统称为,批处理操作系统,。
批处理操作系统将作业成批地提交给系统,由计算机顺序自动完成后再给出结果,作业执行时无需人为干预,从而实现了计算机操作的自动化 。
批处理操作系统可分为单道批处理系统和多道批处理系统 。 单道批处理系统是一种早期的,基本的批处理操作系统 。
,单道,的意思是指一次只有一个作业装入计算机系统的主存运行,因而它也是一个单用户操作系统 。 这种系统的主要目标是一批作业能自动,顺序地运行 。
随着硬件技术的发展,尤其是,中断,和通道技术的出现,使得输入输出设备与中央处理器可以并行工作 。 操作系统的设计者观察到:一个作业启动了输入输出设备等待信息传送时,暂时不使用中央处理器,这时,
其它作业可以去占用中央处理器运行;反之,有作业在使用中央处理器时,其它作业可以使用各种外设 。 于是,让几个作业同时执行的话,能使计算机系统的资源更充分,更合理被使用 。 因此,操作系统设计者提出了,多道程序设计,的概念,并且设计了 多道批处理操作系统 。
在多道批处理操作系统控制下,允许多个作业同时装入主存,使中央处理器轮流地执行各个作业,各个作业可以同时使用各自所需的外设 。 因此,在宏观上看,计算机中有多个作业在运行,但在微观上看,对于单 CPU的计算机而言,在某一个瞬间实际上只有一道作业在 CPU上运行 。
显然,多道批处理系统能极大地提高计算机系统的工作效率,提高系统设备的利用率,但用户不能干预作业的运行 。
一般适用于大型计算机 。
4,分时操作系统分时操作系统是指多个用户通过终端与计算机相连,
共享使用一台计算机,多个用户同时与计算机系统进行一系列的交互,并使得每个用户感到好像自己独占一台支持自己请求服务的计算机系统 。
在分时操作系统中,为了使一台计算机系统能同时为多个终端用户服务,系统采用了分时技术 。 即把 CPU时间划分成许多 时间片,每个终端用户每次可以使用一个由时间片规定的 CPU时间 。 这样,多个终端用户就能轮流地使用 CPU时间,
如果某个用户在规定的一个时间片内还没有完成他的全部工作,这时也要把 CPU让给其它用户,等待下一轮再使用一个时间片的时间,循环轮转,直到结束 。
分时操作系统具有如下的基本特征:
(1) 同时性若干用户通过各自的终端同时使用一台计算机 。 从宏观上看,所有用户是在同一时间并行工作,但从微观上看,各个用户是轮流使用计算机 。
( 2) 独立性用户在各自的终端上请求系统服务,彼此独立,
互不干扰 。 用户从终端上输入命令的速度相对较慢,
而 CPU的执行速度极快 。 所以,当某用户在输入命令时,操作系统将快捷地把 CPU分配给其它用户使用,而不让 CPU处于空闲;当用户输入命令结束时又能让他使用 CPU。 好像每个用户只有自己在单独使用计算机系统,而实际上计算机系统正在被许多用户分享 。
( 3) 及时性系统保证对每一用户的输入请求在较短时间内给出应答,
使用户觉得系统及时响应了他的请求而感到满意 。
( 4) 交互性采用人 —— 机对话的方式工作 。 用户在终端上可以直接输入,调试和运行自己的程序,能及时修改程序中的错误且直接获得结果 。
分时操作系统设计的主要目标是提高对用户响应的及时性 。 它一般适用于带有多个终端的小型机 。
5,实时操作系统实时操作系统是实时控制系统和实时处理系统的统称 。 所谓实时,就是要求系统及时响应外部事件的请求,在规定的时间内完成对该事件的处理并控制所有实时设备和实时任务协调一致地运行 。 实时操作系统一般应用于专门的应用系统,例如,控制科学实验的系统,控制生产流水线系统等等 。
实时操作系统是较少有人为干预的监督和控制系统,仅当计算机系统识别到了违反系统规定的限制或本身发生故障时,才需要人为干预 。 设计实时操作系统时有两点必须特别注意,第一,是要及时响应,快速处理 。 这里的时间要求不同于分时操作系统,分时操作系统中的快速响应只是保证用户满意就行,即使超过一些时间也只是影响用户的满意程度 。
而实时操作系统中的时间要求是强制性严格规定的,仅当在限定时间内返回一个正确结果时,才能认为系统的功能是正确的 。 第二,实时操作系统要求高可靠性和安全性,不强求系统资源的利用率 。
6,网络操作系统用通信线路将物理位置各异的多台计算机相互连接起来且依据某种网络协议组成的系统称为计算机网络 。 发展计算机网络的目的,在于使网络用户共享计算机网络中的各种资源,充分发挥资源的效益,实现相互通信 。
为计算机网络配置的操作系统称为网络操作系统 。 网络操作系统远比通常单机的操作系统复杂 。 这是因为:首先,
网中各台计算机都有各自的操作系统,而这些操作系统在种类和功能上又不尽相同,因此,为了在不同计算机之间正确地实现通信,就必须确定一套全网共同遵守的约定称之为通信协议;其次,为方便用户,网络操作系统必须提供多种网络服务,如远程登录,文件传输,电子邮件,信息检索等服务,它们使网络用户能够方便地利用网络上各种资源 。 最后,
网络操作系统还应有一套确保网络可靠性,安全性的措施 。
总之,网络操作系统除了应具有通常操作系统所具有的处理器管理,内存管理,设备管理和文件管理之外,还应该能够提供高效,可靠的网络通信以及多种网络服务功能 。
7,分布式操作系统在通用计算机系统中,其处理和控制功能都高度地集中在一台主机上,所有的任务都由主机处理,这样的系统称为 集中式处理系统 。
为了提高计算机的性能,一方面,人们努力提高处理器的处理速度和优化系统结构,另一方面,人们又试图让多个处理器联合作业提高整个系统的性能 。 对于多处理器系统,
有两种类型的配置,一种是多个处理器共享存储器的紧耦合系统,另一种是分布式存储器 。 各处理器有独占的存储器,
实际上就是多台有独立功能的计算机的互联而成为一个统一的计算资源 。 在用户看来,整个系统跟一台计算机是一样的,
只是性能有了很大的提升,称之为 集群 (C1uster),又称为分布式处理系统 。
在分布式计算机系统上配置的操作系统,称为分布式操作系统 。 分布式操作系统,能使系统中若干台计算机相互协作完成一个共同的任务 。
在分布式操作系统控制下,使各台计算机组成了一个完整的,功能强大的计算机系统,用户感觉不到多台计算机的存在 。
分布式操作系统在资源管理功能上主要实现了 并行任务分配,并行进程通信,分布控制机构,分散资源管理,并且逐渐向智能化方向发展 。 这种把复杂的任务按功能分布在多个计算机上执行的体系结构是当代计算机系统结构的重要研究方向之一 。
应用于集群的分布式操作系统虽然与网络操作系统有许多相似之处,如资源共享,相互通信,但两者是有区别的,
各有其特点 。 下面从五个方面对两者进行比较 。
(1) 分布性分布式操作系统不是集中地驻留在某个站点中,而是较均匀地分布在系统的各个站点上,因此,分布式操作系统的处理和控制功能是分布式的 。 而计算机网络虽然具有分布处理的功能,然而网络的控制功能,则大多是集中在某个 ( 些 )
主机或网络服务器中,或者说控制方式是集中式 。
(2) 并行性在分布式处理系统中,具有多个处理单元,因此,
分布式操作系统的任务分配程序可将多个任务分配到多个处理单元上,使这些任务并行执行,从而加速了任务的执行 。 而在计算机网络中,每个用户的一个或多个任务通常都在本地的计算机上处理,因此,在网络操作系统中通常无任务分配功能 。
(3) 透明性分布式操作系统让用户感觉到面对的多台计算机就像面对一台计算机一样,或者说让用户感觉不到多台计算机的存在 。 分布式操作系统能很好地隐藏系统内部的实现细节 。 如对象的物理位置,并发控制,系统故障等对用户都是透明的 。
例如,当用户要访问某文件时,只需提供文件名而无须知道所要访问的对象是驻留在那个站点上,即可对它进行访问,
亦即具有物理位置的透明性 。 对于网络操作系统,虽然它也具有一定的透明性,但主要是指在操作实现上的透明性 。
(4) 共享性在分布式操作系统中,分布在各个站点上的软,硬件资源,可供系统中的所有用户共享,并能以透明方式对它们进行访问 。 而网络操作系统虽然也能提供资源共享,
但所共享的资源大多是设置在主机或网络服务器中 。 而在其它机器上的资源,则通常由使用该机的用户独占 。
(5) 可靠性由于分布式系统的处理和控制功能是分布的,因此,任何站点上的故障,都不会给系统造成太大的影响 。 当某设备出现故障时,可通过容错技术实现系统重构,从而仍能保证系统的正常运行,因而系统具有健壮性,即具有较好的可用性和可靠性 。 而现在的网络操作系统,其控制功能大多集中在主机或服务器中,这使系统具有潜在的不可靠性,此外,
系统的重构功能也较弱 。
返回
3.2.4 几种常见的操作系统简介世界上每一类、每一种计算机上都配置有操作系统,
在巨型机、大型机上的操作系统功能是极其强大的。不过,对大多数用户来说,通常接触的还是配置在小型机和微型机上的操作系统,下面我们仅对微型计算机上常用的几种操作系统作以简单介绍。
1,MS-DOS操作系统
MS-DOS是美国 Microsoft公司为 IBM PC微型计算机开发的一个单用户、单任务磁盘操作系统。
DOS曾经是 IBM PC微型计算机及其兼容机上的主流操作系统,风靡一时,虽然现在 DOS的辉煌时期已经过去,但处于 Wind_ows9x下,DOS仍然举足轻重,要真正用好 Window9x,
就需要全面了解 DOS。
MS-DOS的功能有以下三个方面:
(1) 磁盘文件管理 (2) 输入输出管理
(3) 命令处理
MS-DOS取得巨大成功的主要原因是它最初的设计思想正确及追求的目标恰当 。 作为微机上使用的操作系统,注重,个人,特性,强调使用方便,为用户的上机操作和应用软件开发提供了良好的外部环境 。
DOS是微型计算机上使用最广,很受用户欢迎的一种操作系统,然而,随着计算机技术突飞猛进的发展,特别是硬件的飞跃发展和 DOS本身存在的限制问题,使得 DOS不能适应当今需要,其原因是它具有以下的局限性 。
(1) 内存寻址空间的限制:常规内存仅能使用 640KB。
(2) 缺乏系统保护机制:系统内部机制公开,缺乏系统的自我保护和安全机制 。 这也是 PC机上计算机病毒泛滥的主要原因 。
(3) 缺乏对多任务的支持,DOS不是支持,多任务,的操作系统,只是一个单任务的操作系统 。
2,Windows操作系统遵照用户对操作更方便,直接和灵活的要求,
Microsoft公司推出了一种采用图形用户界面的新颖的操作系统,称为视窗 ( Windows) 操作系统 。 Windows操作系统是一系列基于图形界面,多任务操作系统,用户通过窗口直接使用,控制和管理计算机 。
(1) Windows版本的发展
Windows操作系统是 Microsoft公司从 1983年开始研制,
1985年推出了 Windows1.x版本,1987年又推出了 Windows2.0
版,1990年推出的 Windows3.0,在计算机界引起了强烈的反响,使得微型计算机的操作方法和软件的开发过程产生了革命性的变化,Windows3.0是一个里程碑,它在市场上的成功奠定了 Windows操作系统在 IBM PC系列微机领域的垄断地位。
1992年推出的 Windows3.1版,1993年推出的 Windows NT和
1995年推出的 Windows95,更完善了系统的性能,更确立了
Windows在 IBM-PC系列微机中的主导地位。之后又推出了
Windows98,Windows2000,Windows XP,Windows2003。
(2) Windows 3.x
尽管 Windows3.x工作在保护模式下,从根本上来说,它还不是一个真正的操作系统,它是一个功能强大的图形窗口式操作的系统软件,它需要在 MS-DOS3.0以上版本的支持下才能在 PC系列微机上运行,通过与 MS-DOS的密切配合,使 PC机的用户界面焕然一新 。
(3) Windows 9X
1995年 Microsoft公司推出了 Windows95,它对原来的
Windows3.0进行了全面改进,增添了许多新功能,使它成为一种不依赖 MS-DOS的,完全独立的操作系统 。 在此之后又推出了 Windows98,Windows98仍然是从 Windows95发展而来,
其最大特点是集成了 Internet外壳,可以用同一个程序来查看本机,Internet乃至其他内部网的信息 。 从 Windows3.x到
Windows9x,一 直到 Windows Me,这一 系列操 作系统 在
,Windows+DOS”的这一结构格局上均未发生变化 。
(4) Windows NT
Windows NT是 Microsof公司于 1993年推出的 32位操作系统,采用全新的设计技术,具有超强的性能 。
NT即 New Technology之义 。 初学者很容易将 Windows9X与
Windows NT操作系统混为一谈,其实这是两个不同的操作系统,虽然它们具有非常类似的用户操作界面 。
Windows NT是 Microsoft公司推出的可在 PC机和其它各种 CISC,RISC芯片上运行的真正的 32位,多进程,多道作业的操作系统,并配置了廉价的网络和组网软件,应用程序阵容强大 。 Windows NT主要是为客户机 /服务器而设计的操作系统 。
Windows NT作为新一代操作系统,体现了当前计算机界关于操作系统,软件工程,人机环境和体系结构等许多最为先进的理论和技术 。 它主要有以下一些特点:真正的 32位操作系统;脱离了 DOS+Windows模式;多任务调度可 按任务的优先级进行;较好的安全性及系统崩溃保护 。
(5) Windows2000
于 2000年推出的 Windows 2000分为专业版,服务器版,高级服务器版,数据中心服务器版等几个版本 。
它们都采用了 NT的内核,所以并不是 Windows9x的延续,其市场定位也是高端服务器,而不是个人机用户 。
其主要优点是具有 NT与 Windows98的双重优点,支持
Windows9x,NT多重启动 。
缺点是系统体积大,对硬件要求高,对外设,应用软件的支持欠佳 。
Windows 2000 Professional( 专业版 ) 功能强大,对硬 件 要 求相 对 较 低,目 的是 用 来在 商 务环 境 中替 代
Windows95/98,以及 Windows NT Workstation4.0。 该版本适用于任何规模商务环境中的桌面操作系统以及网络应用的客户端软件 。
Windows 2000 Server( 服务器版) 包含 Windows
2000专业版的所有功能和特性,并提供了简单而高效的网络管理服务,如支持 DHCP服务器,DNS服务器、
WNS服务器,WWW服务器,FTP服务器等。另外,该服务器版还提供微软新推出的终端服务( Terminal Services)。 该版本的适用范围是文件服务器、打印服务器、W eb服务器以及工作组应用等。由于它还提供远程访问服务和 Internet鉴别服务,可以用来改善分支办公室的网络访问能力。
Windows 2000 Advanced Server(高级服务器版 )包含
Windows 2000服务器版的所有功能和特性,但增强了扩展性和系统可用性 。 另外还提供了 Windows集群 (Clustering)和负载均衡功能 。 使用集群功能,可以将多台服务器连接在一起,以支持特定的任务 。 集群技术可以帮助诸如数据库的传统业务应用 。 该版本的设计目的和适用范围是用于大型企业网和需要较强数据库功能的场合 。
Windows 2000 Data Center Server(数据中心服务器版 )包含 Windows 2000高级服务器版的所有功能,
在一台计算机上它支持更多的内存和更多的 CPU,是
Windows 2000系列产品中功能最强大的操作系统。该版本的设计目的和适用范围是大型数据仓库 (Data Warehouse)应用、
在线事务处理 OLTP应用,以及大规模仿真等应用。
Windows 2000平台包括了 Windows 2000 Professional
(专业版 ),Windows 2000 Server(服务器版 )前后台的集成,
与以前的 Windows操作系统相比,具有如下新特性和新增功能,(1) 活动目录 (2) 文件服务
(3) 智能镜像 (4) 安全特性
(5) 网络和通信
(6) Windows XP
2001年 10月,Microsoft的最新操作系统 Windows
XP上市,Windows XP的推出,表明了 Microsoft要进行从软件供应商到软件服务商转型的理念。在某种意义上说,
Windows XP的功能大大超出了通常所说的,操作系统,的概念 (如即时传信,在线照片处理等 )。
3,UNIX
Unix 系统于 1969年问世,是一个多用户,多任务的分时操作系统 。 最初 Unix是美国电报电话公司 ( AT& T) 的
Bell实验室为 DEC公司的小型机 PDP-11开发的操作系统 。 后来,又凭其性能的完善和良好的可移植性,经过不断的发展,
演变,并广泛地应用在小型机,超级小型机甚至大型计算机上 。 从此 Unix名扬世界,众多的用户在不同档次的计算机上争先恐后地使用它 。
由于 PC 机硬件性能的提高,Unix操作系统又被移植到微型计算机上。可以说,Unix是在微机上使用的操作系统中功能最完善,安全性能最好的一种操作系统,它具有以下一些主要的特点:
(1) 先进完善的系统管理功能。
(2) 系统内核精悍,便于维护和扩充,核外程序功能强大。
(3) 采用具有典型的树型结构的文件系统。
(4) 良好的系统可移植性。
长期以来,初学者最头疼的是 Unix的使用界面,但随着
X-Windows的发展,Unix也可以享受功能强大的图形界面。
同时,不同的 X-Windows管理界面(如 FVWM,AfterStep、
CDM,MWM) 更让你的 X-Windows有多种选择,也使你的计算机更具有个人风格。
4,Linux操作系统
Linux是一种 Unix风格的操作系统 。 它由芬兰赫尔辛基大学的学生 Linus Torvalds在 1991年开发 。
Linus Torvalds把 Linux的源程序在 Internet上公开,
世界各地的编程爱好者自发组织起来对 Linux进行改进和编写各种应用程序,今天 Linux已发展成为功能很强的操作系统,是操作系统领域的一颗新星 。
Linux的开发以及源代码对每个人都是完全免费的 。 任何人都可以从 Internet上免费下载 Linux软件包,Linux开发者可通过 Internet进行合作开发 。 但是这并不意味着 Linux
和它的一些周边软件发行版本也是免费的 。
Linux有着广泛的用途,包括网络应用、软件开发、建立用户平台等等。 Linux被认为是一种高性能、低开支的可以替换其他昂贵操作系统的软件系统。
现在 Linux主要流行的版本有,Red HatLinux、
TurboLinux及我国自己开发的红旗 Linux,蓝点 Linux版本等。
Linux具有以下主要特点:
(1) Linux是免费的软件,可自由安装及修改源代码。
(2) Linux是一个与 Unix兼容的 32位操作系统,它能运行主要的 Unix工具软件、应用程序和网络协议,并支持 32
位和 64位的硬件。 Linux的设计继承了 Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
(3) Linux是一个提供完整网络集成的操作系统,它可以轻松的与 TCP/IP,LAN Manager,Windows for Workgroups、
Novell NetWare或 Windows NT集成在一起。 Linux可以通过
Ethernet(以太网 )或调制解调器连到 Internet上。
(4) Linux系统内核紧凑高效,对硬件要求低。
只要有计算机的地方就有人为 Linux写程序,但这也是它最大的缺点:系统缺乏严密性 。 它的另一个主要缺点是对办公,娱乐类的应用软件和外设支持不够 。
Linux与微软的 Windows NT相比较,在许多方面的性能,
如可扩展性、互操作性、易管理和网络功能,
都优于 Windows NT,特别是在网络服务器领域。 返回
3.3 程序设计语言翻译系统计算机硬件只能识别并执行机器指令,人们常用的高级语言或汇编语言编写出来的程序,计算机不能直接识别并执行,因此,必须要为它配备一个,翻译,,这就是所谓的程序设计语言翻译系统。
对于用某种程序设计语言编写的程序,通常要经过编辑处理、语言处理(翻译)、装配链接处理之后才能在计算机上运行。所谓 编辑处理 是指计算机通过编辑程序将人们编写的源程序送入计算机。编辑程序可以使用户方便地修改源程序,包括添加、删除、修改等,直到用户满意为止。所谓 语言处理 是将源程序转换成机器语言的形式,以便计算机能够运行。这一转换是由翻译程序来完成的,翻译程序除了要完成语言间的转换外,还要进行语法、语义等方面的检查。翻译程序统称为语言处理程序,共有 3种,汇编程序、编译程序和解释程序。
1,汇编程序汇编程序将用汇编语言编写的程序 (源程序 )翻译成机器语言程序 (目标程序 ),这一翻译过程称为汇编 。
2,编译程序编译程序是将用高级语言编写的程序翻译成机器语言程序 。 这个翻译过程称为编译 。 对汇编语言而言,通常是将一条汇编语言指令翻译成一条机器语言指令,但对编译而言,
往往需要将一条高级语言的语句转换成若干条机器语言指令 。
高级语言的结构比汇编语言的结构复杂得多 。
3,解释程序解释程序是边扫描边翻译边执行的翻译程序,解释过程不产生目标程序 。 解释程序将源程序一句一句读人,对每个语句进行分析和解释,有错误随时通知用户,
无错误就按照解释结果执行所要求的操作 。 程序的每次运行都要求源程序与解释程序参加 。
解释方式很灵活,方便,但因为是边解释边执行,所以程序执行速度相对较慢,而且解释方式在运行时离不开翻译程序 。 编译方式使程序的运行与翻译程序无关,因此运行速度要快得多,虽然编译过程本身比较复杂,但一旦形成目标文件,便可多次使用 。 返回
3.4 软件开发与软件工程
3.4.1 软件危机
3.4.2 软件工程
3.4.3 软件生存周期与软件开发过程
3.4.4 面向对象方法返回
3.4.1 软件危机计算机软件是一个逻辑系统,主要工作集中在定义、
开发、维护方面。软件同其它工业产品不同,有着独特的特性。
软件是一种逻辑实体,具有抽象性;软件没有明显的制造过程,对软件质量的控制,必须着重在软件开发方面下功夫。软件成为产品之后,其制造只是简单的拷贝而已。软件在使用过程中,不会因为磨损而老化,但会为了适应硬件、
环境以及需求的变化而进行修改,而这些修改又不可避免引入错误,导致软件失效率升高。软件的开发和运行往往受到计算机系统的限制,对计算机硬件和环境有着不同程度的依赖性,这导致了软件移植的问题。软件本身是复杂的,它是人类有史以来生产的复杂度最高的工业产品,软件开发常常涉及其它领域的专门知识。软件的成本相当昂贵,软件开发需要投入大量的、复杂的、高强度的脑力劳动,成本非常高,
风险也大。
早期的软件开发主要采用手工作坊式方式,编制程序完全是一种技巧,主要依赖于开发人员的素质和个人技能,没有可遵循的原理,原则和方法,缺乏有效的管理 。 开发出来的软件,在质量,可靠性,可维护性等方面较差,开发时间,成本等方面无法满足需求,无法进行复杂的,大型的软件的开发,造成软件危机 。
软件危机 指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。 概括地说,软件危机包含两方面问题:
一是如何开发软件,以满足不断增长,日趋复杂的需求;二是如何维护数量不断膨胀的软件产品。 其主要表现为:
1,不能正确估计软件开发成本和进度,开发成本比预算高。
2,软件产品不可靠、质量差、不满足用户需求、维护困难。
3,交付使用的软件不易演化,很少能够重用 。
4,软件生产率低下,远远满足不了社会发展的需求。
5,软件缺乏适当的文档资料。
软件危机的原因,一方面是与软件本身的特点有关;另一方面是与软件开发和维护的方法不正确有关 。 软件开发和维护的不正确方法主要表现为忽视软件开发前期的需求分析;开发过程没有统一的,规范的方法论的指导,文档资料不齐全,忽视人与人的交流;忽视测试阶段的工作,提交用户的软件质量差;轻视软件的维护 。
人们在认真地分析了软件危机的原因之后,开始探索用工程的方法进行软件生产的可能性 。 1968年,北大西洋公约组织 (NATO)召开计算机科学会议,FritzBauer首先提出了
,软件工程,的概念,试图建立并使用正确的工程方法开发出成本低,可靠性好并在机器上能高效运行的软件,从而解决或缓解软件危机 。 迄今为止,软件工程的研究与应用已经取得很大成就,它在软件开发方法,工具,管理等方面的应用大大缓解了软件危机造成的被动局面 。
为了消除软件危机,既要有技术措施,又要有必要的组织管理措施 。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科 。 返回
3.4.2 软件工程
1.软件工程的定义软件工程是一类求解软件的工程 。 它应用计算机科学,
数学及管理科学等原理,借鉴传统工程的原则,方法来生产软件以达到提高质量,降低成本的目的 。
软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的学科 。 软件工程的 方法,工具,过程 构成了软件工程的三要素 。 软件工程方法 是完成软件工程项目的技术手段 。 它支持项目计划和估算,系统和软件需求分析,
软件设计,编码,测试和维护 。 软件工程使用的软件工具 是人类在开发软件的活动中智力和体力的扩展和延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成 。 软件工具 最初是零散的,不系统,不配套,后来根据不同类型软件项目的要求建立了各种软件工具箱,支持软件开发的全过程 。
近年来,人们又将用于开发软件的软,硬件工具和软件工程数据库集成在一起,建立集成化的 计算机辅助软件工程 (CASE)环境 。 软件工程中的过程贯穿于软件开发的各个环节 。 管理者在软件工程过程中,要对软件开发的质量,
进度,成本进行评估,管理和控制,包括人员组织,计划跟踪与控制,成本估算,质量保证,配置管理等 。 软件工程不是一成不变的,它随着人们对软件系统的研制,开发和生产的理解而发展 。
2,软件工程的目标软件工程的目标是:在给定成本,进度的前提下,开发出具有 可修改性,有效性,可靠性,可理解性,可维护性,
可重用性,可适应性,可移植性,可追踪性和可互操作性并满足用户需求 的软件产品 。 追求这些目标有助于提高软件产品质量和开发效率,减少维护的困难 。
返回
3.4.3 软件生存周期与软件开发过程
1.软件生存周期软件生存周期是指软件产品从提出开发要求,功能确定,
设计,到开发成功投入使用,并在使用中不断地修改,增补和完善,直至被新的需要所替代而停止该软件使用的全过程 。
软件生存周期根据软件所处的状态,特征以及软件开发活动的目的,任务可划分为若干个阶段 。 通常软件生存周期包括,问题定义,可行性研究,需求分析,概要设计,详细设计,编码,测试,运行维护八个阶段 。 目前各阶段的划分尚不统一,但无论采用哪种划分方式,一般软件生存周期可分为三个时期,软件定义期,软件开发期和软件使用维护期 。
(1) 软件定义期 。 软件定义的任务是确定软件开发工程必须完成的总目标,确定工程的可行性,导出实现工程目标应该采用的策略及系统必须完成的功能,估计完成该项工程需要的资源和成本,并制定工程进度表 。
软件定义时期包括 问题定义,可行性研究和需求分析 三个阶段 。 这个时期的工作由系统分析员负责完成 。
① 问题定义,系统分析员根据用户提出的软件开发要求,
确定问题的性质,工程目标以及规模 。 系统分析员提供书面报告给用户与使用部门负责人审核 。
② 可行性研究,系统分析员明确了问题的性质,目标,
规模后,从技术,经济和社会,法律等几个方面研究并论证软件系统的可行性 。 它的主要任务是确定问题定义阶段所定义的问题是否值得解决,在预定的规模内是否有可行的解 。
主要从技术可行性,经济可行性和运行可行性三个方面论证 。
系统分析员经可行性论证后,如果问题值得解决,应推荐一个较好的解决方案,并为系统制定一个初步的开发计划 。
③ 需求分析,就是完全弄清用户对软件系统的确切要求和系统的需求,确定系统必须做什么,系统必须具备哪些功能,并制定出需求规格说明书 。 需求分析阶段应有用户参加,
软件开发人员与用户密切配合,充分交流信息,制定出经用户确定的需求规格说明书 。
( 2) 软件开发期开发时期的主要任务是具体设计和实现在前一个时期定义的软件 。 它包括 概要设计,详细设计,编码和单元测试,综合测试 四个阶段 。
① 概要设计,又称为总体设计,主要任务是要确定系统的总体结构,给出系统中各个组成模块的功能和模块间的接口关系,设计软件系统的全局数据库和主要数据结构,同时还要制定测试计划,形成概要设计说明书 。 概要设计说明书主要由模块结构图,模块说明和测试计划组成 。 概要设计通常由两个阶段组成:系统设计和结构设计 。 其中系统设计是从数据流图出发,确定系统具体实现方案 。 系统分析员使用系统流程图或其它工具描述每种可能的解决方案,估算每种方案的成本和效益,在权衡各种方案利弊的基础上,推荐一个最佳的实现方案,并为推荐的方案制定详细的实现计划 。 结构设计则是确定软件的模块结构 。 把复杂的系统功能分解成比较简单的子功能,通常一个模块完成一个适当的子功能,
分析员把模块组织成层次结构,用层次图或结构图来描述 。
② 详细设计,在概要设计的基础上,对系统中的每个模块给出精确的描述,即为每个模块设计相应的算法和模块内数据结构,同时还要设计完成测试实例,
形成详细设计说明书 。 详细设计说明书主要由每一模块的详细数据结构设计,详细流程设计和每一模块的测试实例组成 。
③ 编码和单元测试,此阶段任务是用程序设计语言写出正确的,容易理解的,容易维护的程序模块代码 。 程序员应该根据目标系统的性质和实际环境,选取一种适当的程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序,
并设计一些有代表性的数据和输入输出模型,仔细测试编写出的每一个模块代码 。
④ 综合测试,软件测试是保证软件可靠性的主要手段,测试阶段的根本任务是在软件投入运行之前,尽可能多地发现并改正软件中的错误 。 软件测试在软件生存周期中横跨两个阶段,编写出每个模块之后就对它做必要的测试,称为单元测试,在结束这个阶段之后,对软件系统还要进行各种综合测试,如:集成测试,确认测试和系统测试 。
( 3) 软件使用,维护,退役期
① 软件使用与维护,软件使用与维护即是运行维护阶段,此阶段是软件生存周期中时间最长的阶段,已交付的软件投入正式运行使用后,便进入运行维护阶段,此阶段主要任务是使软件持久地满足用户的需要 。 具体地说,
当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要 。 软件的维护不仅包括程序代码的维护,还包括文档的维护,文档有用户文档和系统文档,文档必须与程序代码同时维护 。
② 退役,软件生存周期中的最后一个阶段,终止对软件产品的支持,软件停止使用 。
2,软件开发过程把用户的要求转化成软件产品的整个过程称为软件开发过程 。 这个过程包括对用户的要求进行分析并解释成软件需求,把需求变换成设计,把设计用代码来实现,测试并调试该代码,安装代码,把软件交付运行使用 。
软件系统开发一般划分为以下阶段:可行性研究,
需求分析,系统设计 ( 概要设计,详细设计 ),程序开发 ( 编码,单元测试 ),系统测试和调试,系统维护 。
软件开发过程中要明确各阶段的工作目标,明确实现该目标所必需的工作内容 。 只有在上一个阶段的工作完成后,才能开始下一阶段的工作,在进行每一阶段时都必须编写同步文档,文档包括开发过程中的所有技术资料以及用户所需的文档 。
文档编制是软件开发过程中的一项重要工作 。
系统文档包括:开发软件系统在计划,需求分析,设计,
编制,调试,运行等阶段的有关文档 。 在对软件系统进行修改时,系统文档应同步更新,并注明修改者和修改日期,如有必要应注明修改原因 。
用户文档包括,① 系统功能描述; ② 安装文档,说明系统安装步骤以及系统的硬件配置方法; ③ 用户使用手册,说明使用软件系统方法和要求,疑难问题解答; ④ 参考手册,描述可以使用的所有系统设施,解释系统出错信息的含义及解决途径 。
3,软件开发模型实践证明,软件开发过程的各个阶段的任务和目标并不是一次就能做到尽善尽美,有必要在进行后面的阶段时反回来进行修改,也就是说,软件开发各个阶段之间的关系不可能是完全顺序的,线性的,应该是带有反馈的迭代过程 。 在整个软件开发过程中,为了能从宏观上管理软件的开发和维护,必须对软件的开发过程有总体的认识和描述,
即要对软件开发过程建模 。 因此,人们在软件开发实践过程中总结出了一些软件开发模型 。
软件开发模型是软件开发全过程,活动和任务的结构框架 。 它给出了软件开发活动各阶段之间的关系,为软件开发过程提供原则和方法 。 软件开发模型大体上可分为三种类型 。
第一种是以软件需求完全确定为前提的 瀑布模型 。 第二种是在软件开发初始阶段只能提供基本需求时采用的 渐进式开发模型,如原型模型,螺旋模型 等 。 第三种是以形式化开发方法为基础的 变换模型 。 实践中经常将几种模型组合使用以便充分利用各种模型的优点 。 返回
3.4.4 面向对象方法传统的生存周期方法学曾经给软件产业带来了巨大的进步,部分地缓解了软件危机,但这种方法仍然存在比较明显的缺点,如:软件生产率低、软件重用程序低、软件维护艰辛、软件非用户所需等。当软件规模较大或对软件需求模糊易变时,采用生存周期方法学开发往往不能成功。为克服传统方法学的缺点,人们在实践中逐步创造了面向对象方法。
面向对象方法就是在软件开发过程中把面向对象的思想运用其中并指导开发活动的系统方法。简称 OO方法。
1.面向对象方法简介面向对象的方法起源于 20世 60年代中期的仿真程序设计语言 Simula67,20世纪 80年代初,Smalltalk语言及其程序设计环境的出现成为面向对象技术发展的一个重要里程碑 。
到 80年代中后期,面向对象的软件设计和程序设计方法已发展成为一种成熟的,有效的软件开发方法,目前面向对象方法已成为软件开发的主流方法 。
面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程。
面向对象方法是将现实世界的任何事务均视为 对象,认为客观世界是由许多不同类的对象构成,每个对象都有自己内部状态、运行规律,不同对象之间的相互关系和相互作用构成了完整的客观世界。
面向对象方法具有以下四个要点:
( 1) 客观世界任何事物都是对象,复杂的对象可由较简单的对象以某种方式组合而成 。
( 2) 每个对象都定义了一组数据和一组方法,数据和方法都被封装于对象之中,数据用于表示对象的静态属性,是对象的状态信息,而方法用于定义改变对象状态的各种操作 。
( 3) 对象按其属性进行归类,类具有一定的结构,类可以有子类 ( 又称派生类 ) 与父类 ( 又称基类 ) 。
( 4) 对象彼此之间仅能通过传递消息互相联系 。
2.面向对象的概念所谓面向对象就是基于对象概念,以对象为中心,
以类,继承和消息为构造机制,来认识,理解,刻画客观世界和设计,开发相应的软件系统 。
面向对象方法学包括了以下核心概念:
( 1) 对象 。 对象是对现实世界事物的正确抽象,是其属性和相关操作的封装 。 属性表示对象的性质,属性值规定了对象所有可能的状态 。 对象的操作是指该对象可以展现的外部服务 。
( 2) 类 。 类是某些对象的共同特征 ( 属性和操作 ) 的表示,
对象是类的实例 。 也就是说,一个类定义了一组大体上相似的对象,一个类所包含的方法和数据描述一组对象的共同行为和属性 。 把一组对象的共同特征加以抽象并存储在一个类中的能力,是面向对象技术最重要的一点;是否建立了一个丰富的类库是衡量一个面向对象程序设计语言成熟与否的重要标志 。
( 3)继承 。类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系及对性和操作的共享,即子类可以沿用父类(被继承类)
的某些特征。当然,子类也可以具有自己独立的属性和操作。
继承性是面向对象程序设计语言的最主要的特点。
( 4) 消息 。 对象之间进行通信的一种构造叫做消息 。 当一个消息发送给某个对象时,包含要求接受对象去执行某些活动的信息 。 接收到消息的对象经过解释,然后予以响应 。 这种通信机制叫做消息传递 。 发送消息的对象不需要知道接收消息的对象如何对请求予以响应 。 消息传递是对象与其外部世界相互关联的唯一途径 。
简而言之,面向对象 = 对象 + 类 + 继承 + 消息 。
如果一个软件系统是使用这样四个概念设计和实现的,
那么我们认为这个软件系统是面向对象的 。 一个面向对象的程序的每一成份都应是对象,计算是通过新的对象的建立和对象之间的通信来执行的 。
3.面向对象方法的开发过程面向对象是程序设计的新范型,面向对象分析,
面向对象设计与面向对象编程结合在一起,形成一种新的系统开发模式 。
面向对象方法的开发过程可以分成 面向对象分析,面向对象设计,面向对象实现和面向对象测试 四个部分 。
( 1) 面向对象分析 ( OOA)
分析的过程是提取系统需求的过程,面向对象分析的核心是利用面向对象的概念和方法为软件需求建立模型 。 通常把分析时收集的信息构造在三类模型中,即对象模型,功能模型和动态模型 。
( 2) 面向对象设计 ( OOD)
面向对象设计是用面向对象观点建立求解空间模型的过程 。 面向对象设计的内容包括问题域,人机交互,任务管理和数据管理等四个部分的设计 。
( 3) 面向对象实现( OOR)
主要工作是把面向对象设计结果翻译成用某种程序设计语言书写的面向对象程序 。 面向对象的程序设计语言非常适合用来实现面向对象设计结果 。
( 4) 面向对象测试 ( OOT)
面向对象测试的总目标与传统软件测试的目标相同,也是用最小的工作量发现最多的错误 。
一旦完成了面向对象程序设计,就开始对每个类进行单元测试 。 测试类时使用的方法主要有随机测试,划分测试和基于故障的测试 。 每种方法都测试类中封装的操作 。 可以采用基于线程或基于使用的策略完成集成测试 。 面向对象系统的确认测试也是面向黑盒的 。
总之,面向对象的开发方法不仅为人们提供了较好的开发风范,且提高了软件的生产率,可靠性,易重用性,易维护性,已成为当代计算机界最为关注的一种开发方法 。
本章结束返回