1、 4 计算机软件系统n计算机软件的分类与发展n操作系统n程序设计语言及其处理程序n算法和数据结构n软件工程n数据库及其应用 4 计算机软件系统 n 计算机软件也是计算机系统重要的组成部分,如果把计算机硬件看成是计算机的躯体,那么计算机软件就是计算机系统的灵魂。没有软件支持的计算机称为“裸机”,只是一些物理设备的堆砌,几乎是不能工作的。 计算机软件及分类一、什么是计算机软件n 计算机软件是指计算机程序及其相关文档的总和。与传统观念不同的是,程序软件,软件的定义更加强调文档的重要性,文档为软件的设计、开发、维护提供了重要的依据和支持。二、软件的分类 n 计算机软件可以分为系统软件和应用软件两大类。
2、 系统软件 n 系统软件是负责管理、控制、维护、开发计算机的软硬件资源,提供给用户一个便利的操作界面,也提供编制应用软件的资源环境。n 系统软件主要包括操作系统,另外还有程序设计语言及其处理程序和数据库管理系统等。n 操作系统在软件系统中居于核心地位,负责对所有的软、硬件资源进行统一管理、调度及分配。它是用户和计算机的一个接口。n 程序设计语言是供程序员编制软件,实现数据处理的特殊语言,语言处理程序提供对程序进行编辑、解释、编译、连接的功能。 数据库管理系统(DBMS)也是十分重要的一个系统软件。因为大量的应用软件都需要数据库的支持,如信息管理系统、电子商务系统等。而目前比较流行的数据库管理系
3、统有Micsosoft SQL Server、Oracle、Sybase和Informix等。 应用软件 n 应用软件是指为解决某一领域的具体问题而编制的软件产品,比如办公软件、图像处理程序、各类信息管理系统等。应用软件因其应用领域的不同而丰富多彩。 计算机软件的发展 软件的发展大致经历了三个阶段:n 第一阶段(20世纪40年代到50年代中)。发展初期。在这个阶段,软件开发采用低级语言,效率低下,应用领域基本局限于科学和工程的数值计算。人们不重视软件文档的编制,注重考虑代码的编写。n 第二阶段(20世纪50年代中期到60年代后期)。相继诞生了大量的高级语言,程序开发的效率显著提高,并产生了成熟
4、的操作系统和数据库管理系统。在后期,由于软件规模不断扩大,复杂度大幅提高,产生了“软件危机”,也出现了有针对性地进行软件开发方法的理论研究和实践。n 第三阶段(20世纪70年代至今)。软件应用领域和规模持续扩大,大型软件的开发成为一项工程性的任务,由此产生了“软件工程”并得到长足发展。同时软件开发技术继续发展,并逐步转向智能化、自动化、集成化、并行化和开发化。 2.操作系统n 操作系统(Operating System,简称OS)是给计算机系统中最重要的系统软件,它的主要功能是负责管理计算机系统中的硬件资源和软件资源,提高资源利用率,同时为计算机用户提供各种强有力的使用功能和方便的服务界面。只
5、有在操作系统的支持下,计算机系统才能正常运行,如果操作系统遭到破坏,计算机系统就无法正常工作。 操作系统的功能 n 操作系统通过内部命令和外部命令提供5中主要功能:任务管理、存储管理、文件管理、设备管理和作业管理。 任务管理 n 操作系统提供的任务管理有三种不同的方式:进程管理、分时和并行处理。 (1)进程管理 n 进程是CPU调度和资源分配的基本单位,它可以反映程序的一次执行过程。进程管理主要是对处理机资源进行管理。由于CPU是计算机系统中最宝贵的资源,为了提高CPU的利用率,一般采用多进程技术。操作系统的进程管理就是按照一定的调度策略,协调多道程序之间的关系,解决CPU资源的分配和回收等问
6、题,以使CPU资源得到最充分的利用。 (2)分时 n 在较大的计算机系统中,如有多个用户同时执行存取操作,操作系统就会采用分时的策略进行处理。分时的基本思想是把CPU时间划分为多个“时间片”,轮流为多个用户服务。如果一个程序在一个时间片内没有完成,它将挂起,到下一次轮到时间片时继续处理。由于CPU速度很快,用户并不会感觉到与他人分享CPU,好像个人独占CPU一样。 (3)并行处理 n 在某些多处理器系统中,操作系统可以把没有关联的多个任务分配给多个处理器同时运行,以提高处理效率。显然,实现并行处理需要操作系统合理的分析和调度。 存储管理 n 存储管理的基本任务是为程序运行提供良好的环境,方便用
7、户使用存储器,提高存储器的利用率。n 尽管内存容量不断增加,但是受到价格、CPU寻址能力等因素的制约,内存的容量终究是有限的。尤其是多个程序共享内存时,就需合理分配它们的内存空间,既要互不干扰,又要实现必要的共享。内存不够时,还要实现内存的扩充。操作系统就是通过存储管理来完成内存分配、内存保护、内存回收、地址映射和内存扩充等功能。 文件管理 n 计算机中的信息多以文件的形式存放在外存储器中,需要时才载入内存。文件管理的任务就是有效支持文件的存储、检索、修改等操作,解决文件的共享、保密和保护功能,使用户能够安全、方便地访问他所需要的文件。 设备管理 n 设备管理是指计算机系统中除了CPU和内存以
8、外的所有I/O设备的管理。从内部看,设备管理就是按照一定的算法、策略,分配、管理I/O设备,以保证设备高效地、有条不紊地工作。从外部看,设备管理要提供良好的操作界面,使用户在不涉及设备物理特性的前提下方便、灵活地使用这些设备。 作业管理 n 作业是指用户在一次计算或一个事务处理中,要求计算机系统所做全部工作的集合,即计算机完成的某项任务。作业管理包括作业调度和作业控制,目的就是为用户使用系统提供良好的环境,让用户有效组织作业的工作流程。 操作系统的类型 多道批处理系统多道批处理系统 n 在多道批处理系统控制下,用户作业逐批地进入、处理、离开系统。作业与作业之间的过渡不需要用户的干预。多道即在主
9、存内同时有几道相互独立的作业在单CPU情况下交替地运行或在多CPU情况下并行运行。批处理系统的优点在于提高了系统资源的利用率和作业的吞吐量,缺点是无交互性。这类操作系统主要装配在用于科学计算的大型计算机上。 分时系统 n 分时系统一般连接多个终端,用户通过相应的终端使用计算机。它为每个用户提供适当大小的时间片,采用轮转的方法为用户服务。若能保证足够快的响应时间并提供交互会话功能,则每个用户都感觉到好像独占1台计算机一样。在分时系统中必须注意响应时间的改善。减少用户数目和减少时间片的大小无疑会改善响应时间,但这会损害系统的性能。所以往往采用多种技术减少内外存之间的对换信息量,从而使CPU有更多的
10、时间去处理终端用户作业,缩短响应时间。 实时系统 n 实时操作系统能够及时响应随机发生的外部事件,并在规定的时间范围内完成事件的处理。实时系统广泛运用于军事指挥、武器系统、电力系统、证券系统等。n 实时系统分为两类,一类是实时控制系统,主要用于自动控制系统,比如军事、制造、电力等。另一类是实时信息处理系统,主要用于情报检索、证券交易等领域。 网络操作系统 n 计算机网络中的各台计算机配置各自的操作系统,而网络操作系统则把它们有机地联系起来,用统一的方法管理整个网络中的共享资源。因此,网络操作系统除了具备存储管理、处理机管理、设备管理、信息管理和作业管理外,还具有高效可靠的网络通信能力和多种网络
11、服务能力。网络用户只有通过网络操作系统才能享受网络所提供的各种服务。 常见的操作系统 nWindows操作系统操作系统nUNIX操作系统操作系统 nLINUX操作系统操作系统 Windows操作系统 n Windows系列操作系统由美国微软公司开发,是目前应用最广泛的操作系统。它的特点是:v1、界面图形化:使计算机操作生动有趣,所见即所得。v2、多任务:允许多个应用程序同时运行。v3、良好的网络支持:内置TCP/IP协议,轻松上网,同时对局域网支持良好。v4、多媒体功能:提供了出色的多媒体功能支持。v5、可以支持几乎所有常用硬件,即插即用的技术简化了硬件安装。v6、众多应用程序支持:有大量程序
12、员基于Windows系统进行软件开发,这些软件的应用领域广泛,几乎涉及所有的行业。 n 但是Windows也存在大量不足,Windows体积庞大,是一个非常脆弱的系统,自身的修复能力比较弱,更主要的是Windows系统漏洞百出,这些漏洞为病毒和黑客对系统的非法入侵和攻击创造了机会。 UNIX操作系统 n UNIX操作系统是贝尔实验室于六十年代末用C语言研制开发的,是一个多用户多任务的分时系统。经过几十年的发展,已经成为国际上目前使用最广泛、影响最大的操作系统之一。从大型机、小型机到工作站甚至微机都可以看到它的身影,很多操作系统都是它的变体,比如惠普公司的HP-UX、SUN公司的Solaris、
13、IBM公司的AIX等,也包括著名的LINUX。n UNIX具有结构紧凑、功能强、效率高、使用方便和可移植性好等优点,尤其在网络功能方面,UNIX表现稳定,网络性能好,负载吞吐力大,易于实现高级网络功能配置,是Internet中服务器的首选操作系统。相对Windows 2000,UNIX的用户界面略有不足,操作设置不便。 LINUX操作系统 n LINUX是由芬兰赫尔辛基大学的一个大学生Linus B. Torvolds在1991年首次编写的,Linux是一个免费的操作系统,用户可以免费获得其源代码,并能够随意修改。LINUX是一种类Unix系统,具有许多Unix系统的功能和特点。 n Linu
14、x凭借出色的性能和完全免费的特性,受到越来越多用户的关注,在短时间内异军突起,对Windows构成了强有力的威胁,并被寄予突破Windows垄断地位的厚望。n 但是,微软的Windows系统仍然占据个人电脑的主导地位,绝大多数的软件公司都支持Windows。这使得Windows平台的应用软件应有尽有。相对而言,Linux最大的缺憾在于应用软件的不足,同时硬件厂商对Linux的支持也稍稍落后于Windows。但随着Linux的发展,越来越多的软件厂商会支持Linux,它应用的范围也会越来越广。 3.程序设计语言及其处理程序程序设计语言分类 程序设计语言按其级别可以分为机器语言、汇编语言和高级语言
15、三大类 。机器语言 n 机器语言采用二进制代码形式,是计算机唯一可以直接识别、直接运行的语言。机器语言依赖于计算机的指令系统,因此不同型号的计算机,其机器语言是不同的,存在互不兼容的问题。n 机器语言的执行效率高,但是不易记忆和理解,编写的程序难以修改和维护,所以很少有直接用机器语言编写程序。汇编语言 n 为了提高编程效率,人们设计了汇编语言。汇编语言用助记符来代替机器语言的操作数、操作码,比如ADD表示加法。相对机器语言,汇编语言更加直观,容易记忆。但是汇编语言和机器语言存在对应关系,所以仍然依赖于计算机的指令系统,兼容性问题依然存在。同时汇编程序代码的结构不清晰,仍然较难理解。 高级语言
16、n 为了进一步提高效率,人们设计了接近自然语言的程序设计语言,这就是高级语言,因为它可以描述具体的算法,又称算法语言。n 用高级语言编写代码接近于解决问题的表示方法,具有通用性,一定程度上与机器无关。由此可见,高级语言易学、易用、易维护,对软件开发的效率和普及都起到了重要的作用。n 高级语言尽管接近于自然语言,但相互之间仍有较大差距,每种语言都有极为严格的语法规范,对采用的符号、语句格式等都有专门的规定。n 常见的高级语言有C、BASIC、Pascal、C+、C#、Java等。还有一类语言,本质上仍然是高级语言,但在语句格式等方面的限制比较少,显得更加“智能化”如SQL(结构化查询语言)等。
17、语言处理程序 n 除了机器语言之外,任何其它语言编写的程序都不能直接在计算机上执行,需要先对它们进行适当的变换,而这个任务就是由语言处理程序承担。n 语言处理程序通常都包含一个翻译程序,它把一种语言的程序翻译成等价的另一种语言的程序。被翻译的语言和程序称为源语言和源程序,翻译生成的语言和程序则称为目标语言和目标程序。按照不同的翻译处理方法,翻译程序分为以下三类:v(1)汇编程序:从汇编语言到机器语言的翻译程序。v(2)解释程序:将源程序中的语句逐条翻译,并立即执行这条语句的翻译程序。v(3)编译程序:从高级语言到机器语言的翻译程序。 解释程序 n 解释程序对源程序的语句从头到尾逐句扫描,逐句翻
18、译,逐句执行。解释程序实现简单,但是运行效率比较低,对反复执行的语句,它也同样要反复翻译、解释和执行。 编译程序 n 编译程序对源程序进行一次或几次扫描后,最终形成可以直接执行的目标代码。编译程序实现的过程比较复杂,但是编译产生的目标代码可以重复执行,不需要重新编译,因此,执行效率更高、更快。 程序的整个处理过程 除了翻译程序外,语言处理系统通常还包括正文编辑程序、连接程序和装入程序。其中正文编辑程序用于建立和修改源程序文件,而连接程序能将多个编译或汇编过的目标程序和库文件进行组合,装入程序则负责将连接好的可执行程序装入内存并启动执行。图1.32显示了编译型高级语言程序的整个处理过程。 图图1
19、.32程序的整个处理过程程序的整个处理过程 (1)C语言和C+语言 n C语言是1972年至1973年间由ATT公司Bell实验室的D.M.Ritchie在BCPL语言基础上设计而成的,著名的UNIX操作系统就是用C语言编写的。n C语言特点包括:语言与运行支撑环境分离、可移植性好、语言规模小且具有指针类型等。C语言本身简洁,高度灵活,程序运行效率高。此外,C语言还有不少操作是直接对应实际机器所执行的动作,在许多场合可以代替汇编语言。是当前使用最为广泛的通用程序设计语言之一。n 在C的基础上,一九八三年由贝尔实验室又推出了C+,它是由Bjarne Strou-strup设计的。 C+进一步扩充
20、和完善了语言,使之成为一种面向对象的程序设计语言。nC+目前流行的最新版本是Borland C+、Symantec C+和Microsoft Visual C+。(2)Java语言 n Java是一个由Sun公司开发而成的新一代完全面向对象的编程语言。它的最大特点是可以支持跨平台开发,使用它可在各式各样的,不同种类的机器和操作平台上开发软件。由于Java基本上采用的是C语言的语法,所以学过C语言的人,再学Java会相对容易一些。 高级语言的控制结构 n 高级语言千差万别,但是其基本成分可以归纳为三种:(1)数据成分,用来描述程序处理的数据对象;(2)运算类型,用来说明程序所包含的运算;(3)控
21、制结构,用来描述程序中语句的执行顺序。下面就控制结构作一简单介绍。n 从理论上已经证明,求解任何问题的程序框架都可以用顺序、选择、循环这三种控制结构的组合来描述。 (1)顺序结构 n 顺序结构就是按照语句的书写顺序依次执行的控制结构,比如下一段C 程序代码,先执行A语句,接着执行B语句如图1.33所示:nnA;nB;n图图1.33 顺序结构顺序结构 (2)选择结构 n 选择结构就是根据给定的条件决定某些语句执行或不执行的控制结构,典型的一段C程序代码如下:qqif PqA;qElseqB;qn 在执行过程中,首先判断条件P是否成立,如果成立,执行代码A,否则执行代码B(如图1.34所示)。选择
22、结构可以嵌套,因此可以实现二选一或多选一的功能。 图图1.34 选择结构选择结构 (3)循环结构 循环结构为重复执行某一段程序代码提供了控制手段,循环结构有多种形式,如while型循环结构,Until型循环结构等。C语言中While型循环的一般形式为: qWhile PqqA;q 存储结构 n 我们研究数据结构的目的是为了在计算机中实现对它的操作,为此还需要研究如何在计算机中表示一个数据结构。数据结构在计算机中的标识(又称映像)称为数据的物理结构,或称存储结构。它所研究的是数据结构在计算机中的实现方法,包括数据结构中元素的表示及元素间关系的表示。n 数据的存储结构可采用顺序存储或链式存储的方法
23、。n 顺序存储方法是把逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构(图1.37)。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。 图图1.37 1.37 顺序存储结构示意图顺序存储结构示意图 图1.38链式存储 链式存储方法对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附设的指针字段来表示,由此得到的存储表示称为链式存储结构(图1.38),链式存储结构通常借助于程序设计语言中的指针类型来实现。 除了通常采用的顺序存储方法和链式存储方法外,有时为了查找的方便还采用索引存储方法和散列存储方法。 5.软件工程n软件危
24、机 n软件工程的方法要点 n软件工程的传统途径 n面向对象软件工程 软件危机 n 软件是程序再加上程序实现和系统维护时所必需的文档的总称。计算机的应用领域越来越广,对软件的要求也越来越高。由于软件开发本身又是一个“思考”的过程,很难进行管理,开发人员以“手工作坊”的开发方式来开发软件,没有统一的标准和规范可以遵循,导致了软件开发中各种问题的出现或失败:产品错误百出,拖延开发进度,大大超出预算等。软件开发的高成本与软件产品的低质量之间的尖锐矛盾,终于导致了软件危机的发生。n软件危机产生的主要原因有三个:软件危机产生的主要原因n(1)对软件需求分析的重要性认识不够。忽略用户的应用需求。n(2)软件
25、开发过程是开发人员的思考过程,对这样的过程进行质量管理和进度控制有很大的难度。n(3)人们处理问题的效率随着问题复杂度的增加而下降,开发软件所需时间和费用则随之增加。n 软件危机的发生,一方面与软件本身的特点有关,另一方面也与软件开发、维护方法不正确有关,在这样的背景之下,软件工程产生了。软件工程是运用工程、数学、计算机等学科的概念、方法和原理来指导软件开发、管理和维护的一门学科。软件工程的方法要点 n 软件工程学的基本目标在于研究一套科学的工程方法,设计一套方便的工具系统,以达到投资少、效率高、质量优的目的。 v(1)软件开发技术。对开发的策略、原则、步骤和文档做出规定,使软件开发规范化和工
26、程化,克服手工式方式分析和设计软件的随意性。v(2)软件工程管理。对软件生产中的重要环节,要按预先制定的计划、进度和预算执行,以实现预期的经济效益和社会效益。v(3)软件开发方法。主要有结构化生命周期方法、原型法以及面向对象的分析设计方法等。v(4)软件开发工具。软件开发工具的发展促进了软件开发的高质量和高速度。它可支持软件开发生命周期的各个阶段和各项任务的完成。 软件工程的传统途径 n 软件工程的传统途径是生命周期方法学。n 所谓软件的生命周期,是指一个软件从问题提出到最终被废弃的时间间隔。生命周期方法学即从时间的角度对软件开发和维护的复杂问题进行分解,把软件生命周期划分为若干个阶段,每个阶
27、段都有相对独立的任务,每个阶段任务的结束就是下一阶段的开始。但是,在每个阶段结束之前,都需要按照标准对这个阶段的工作进行严格的技术审查和管理审查,只有审查通过后,这个阶段的任务才算完成,否则必须返工 。生命周期法n 一般把软件生命周期划分为软件定义、软件开发和软件维护三个时期,其中软件定义进一步划分为问题定义、可行性研究、需求分析三个阶段,软件开发通常由总体设计、详细设计、编码和单元测试、综合测试四个阶段组成(如图1.40)。 图1.40软件生命周期面向对象软件工程 n 传统的生命周期方法学取得了一定的成功,但是它仍然有不足之处。其中一个最重要问题是它在每个阶段所采用的表示法都是相互独立的,所
28、以相互之间的映射会出现问题。传统的软件工程并不能完全消除软件危机。因此软件工程同样需要不断发展和完善,面向对象软件工程就是其中一个最重要的成果。 面向对象技术的基本概念 (1)对象(Object)、属性和方法n 对象是面向对象方法的核心。世界上任何一个事物都可以看成是一个对象。在面向对象方法中,对象是系统的一个基本成分,是具有特殊属性和行为方式的实体。n 属性是指对象具有的某种特性,也可以理解为用来描述对象特征的参数;方法是指对象能够执行的操作。n 比如,我们可以把一架电视机看作是一个对象,它具有一些基本的性能参数,比如屏幕大小、外壳颜色、型号等,我们把这些称为电视机的属性;它还可以响应用户的
29、一些操作,比如开机,关机,频道搜索等,我们称之为电视机的方法。面向对象软件工程的基本内容 n 面向对象软件工程是面向对象方法在软件工程领域的全面应用。它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容(如图1.41)。 图图1.41面向对象软件工程面向对象软件工程 6.数据库及其应用n数据库技术的产生n数据库系统的组成 图1.42数据库系统阶段应用程序与数据的对应关系 数据库系统的组成 n 数据库系统是指具有管理和控制数据库功能的计算机系统,它一般由计算机支持系统,数据库、数据库管理系统和相关人
30、员组成(如图1.43)。 图图1.43数据库系统组成数据库系统组成 关系数据库 n 一般来说,数据库的类型主要是按照数据库所采用的数据模型来划分的。所谓数据模型,简单地说,就是数据库的数据结构形式,它是对数据库如何组织的一种模型化表示。数据库采用的数据模型常见的主要有三种:层次模型、网状模型和关系模型。其中图1.44和1.45分别是层次模型和网状模型的例子,但这两种模型目前已很少使用了,现在使用最多的数据模型是关系数据模型。n 关系数据模型是以集合论中的关系概念为基础发展起来的数据模型。由于这种数据模型建立在严格的数学理论基础上,其概念清晰、简洁,能够用统一的结构表示数据及数据之间的联系,因此,当今大多数数据库都支持关系数据模型。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。