专转本计算机演示文档.ppt
第3章 计算机软件,软件则决定了计算机能具有怎样的功能。一台没有软件的计算机仅仅是一台没有任何功能的机器(硬件),计算机利用软件才呈现出强大的多种功能。,3.1 软件概述,3.1.1 软件的定义IEEE(Institute of Electrical and Electronic Engineers美国电气与电子工程师协会组织)在1983年给软件下了一个明确的定义:软件是计算机程序、方法、规则、相关的文档以及在计算机上运行它时所必需的数据。其中更为重要的是程序,所以在不太严格的情况下,可直接把程序认为是软件。软件和硬件的概念在很多领域都有体现,比如乐器是硬件,乐谱就属于软件;录音机是硬件,录音磁带上的歌曲就是软件。硬件离不开软件,而软件则依赖于硬件作为物质基础。,3.1.2 软件的分类,软件内容丰富、种类繁多,通常根据软件用途可将其分为系统软件和应用软件两大类,如图3.1所示:,1、系统软件,系统软件是指管理、控制和维护计算机系统资源的程序集合,这些资源包括硬件资源与软件资源。(1)操作系统(2)语言处理程序(3)数据库管理系统(4)网络管理软件,2、应用软件,应用软件,是由计算机生产厂家或软件公司为支持某一应用领域、解决某个实际问题而专门研制的应用程序。例如Office套件、标准函数库、计算机辅助设计软件、图形处理软件、解压缩软件、反病毒软件等。用户通过这些应用程序完成自己的任务。例如,利用Office套件创建文档、利用反病毒软件清理计算机病毒、利用Outlook收发电子邮件、利用图形处理软件绘制图形、利用解压缩软件打包和解压文件、利用计算机辅助设计软件进行工程设计等。,3.2操作系统,计算机中的系统软件和应用软件的关系不是并列的,而是有层次的。系统软件是最基本的软件,而操作系统是最重要的系统软件,是计算机系统不可分割的重要组成部分。3.2.1 操作系统概述操作系统是计算机系统资源的管理者,从其自身的功能来讲是用来控制和管理计算机系统的硬件资源和软件资源;从用户使用的角度来说是用户与计算机之间通信的桥梁,为用户提供访问计算机资源的工作环境,用户通过使用操作系统提供的命令和交互功能实现访问计算机的操作。,1、操作系统的定义,为了合理组织计算机工作流程,协调计算机系统各部分之间的关系,必须要有一个程序来实施管理工作,这个程序就是操作系统(Operation System,简称OS)。操作系统是计算机系统的一个系统软件,其定义有很多种,很难精确定义。概括地说,操作系统就上为了实现对计算机系统的硬件资源和软件资源进行控制和有效地管理,合理地组织计算机工作流程,以充分发挥计算机系统的工作效率和方便用户充分而有效地使用计算机资源而配置的一种系统软件。,2、操作系统的发展与分类,(1)人工操作阶段(2)批处理阶段(3)单用户单任务的操作系统(4)多用户多道作业和分时操作系统(5)实时操作系统(6)网络操作系统(7)分布式操作系统,3.2.2 操作系统功能,操作系统的功能可以分别从资源管理和用户使用两个角度进行。从用户使用的角度来看,操作系统对用户提供访问计算机资源的接口。从资源管理的角度看,操作系统对计算机资源进行控制和管理的功能主要分为CPU的控制与管理、内存的分配与管理、外部设备的控制与管理、文件的控制与管理以及作业的控制与管理等5部分。,3.2.3 常见操作系统介绍,1、Windows操作系统微软公司从1983年开始研制开发Windows。目前Windows已发展成为一个大家族,使用广泛的主要有Windows NT/2000/XP/2003等。2、UNIX操作系统 UNIX是一个交互式的多用户、多任务的操作系统自1974年问世以来,迅速地在世界范围内推广。3、Linux操作系统 Linux操作系统是目前全球最大的一个自由软件,它具有完备的网络功能,且具有稳定性、灵活性和易用性等特点。,3.3 程序设计基础,自然语言是人们交流的工具,不同的语言描述的形式各不相同,如汉语、英语等;而程序是人与计算机交流的工具,如果没有程序,计算机什么也不会做。程序是计算机的一组指令,是程序设计的最终结果。程序经过编译和执行才能最终完成程序的动作。,3.3.1 程序的概念,计算机程序是对计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务;而处理对象指数据,如数字、文字、图像、声音等多媒体以及如温度、电压等物理状态;处理规则指处理动作和步骤。计算机程序是计算机为解决某个问题或完成某项任务的一组指令序列,主要由两部分组成:(1)说明部分说明部分包括程序名、类型、参数及参数类型说明(2)程序体程序体为程序的执行部分。在程序执行部分按照事先的设计,由计算机的输入得到预期的结果,并输出给用户。,3.3.2 程序设计方法,对于规模较大的应用开发,需要有工程的思想知道程序设计。由于“软件危机”,计算机程序设计方法的迅速发展,新的程序设计方法也应运而生。程序设计技术主要包括结构化程序设计方法和面向对象程序设计方法。,1、结构化程序设计方法,结构化程序设计方法主要包括三个方面,分别为:自顶向下设计、程序流程图、伪代码:(1)自顶向下设计按照结构程序设计的思想,一个程序中的每一个程序均服从“一个入口,一个出口”的原则,这是从程序的某一个局部来考虑的。(2)程序流程图 流程图是一种使用几何图形描述程序逻辑关系的程序设计方法。(3)伪代码伪代码是一种描述语言。它只是一种描述程序执行过程的工具,是面向读者的,不能直接用于计算机,实际使用时还需要转换成某种计算机语言来表示。,2、面向对象程序设计方法,(1)对象和类所谓对象就是现实世界中的客观事物,是实体,是某个抽象数据类型的值。(2)方法和消息消息可以激活对象上的方法,对对象的实例变量进行计算、存取,也可以向另外的对象发送消息。(3)面向对象技术的基本特征面向对象技术的基本特征主要有:抽象性、封装性、继承性和多态性。(4)面向对象程序设计方法的思想面向对象方法是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。,3.3.3 程序设计语言,目前,常见的程序设计语言是高级程序设计语言,如Pascal、C、VB、VC、C#、java等。与高级程序设计语言相对应的是低级语言,如机器语言和汇编语言。1、机器语言2、汇编语言,3、高级语言,1、FORTRAN语言2、ALGOL语言3、COBOL语言4、C 语言5、PASCAL语言6、C+语言7、可视化编程语言8、LISP语言9、PROLOG语言,3.4 算法与数据结构,计算机能够为人们服务的前提是要编写程序告知计算机所要做的工作。要编写程序,程序员必须首先找到完成这个任务的步骤,即计算机科学中所谓的“算法”。,3.4.1 算法的概念,一个能在计算机上实现的算法必须同时满足以下5个重要特性:1、有穷性。2、确定性。3、有效性。4、有输入(有零个或多个输入数据)。5、有输出(有一个或读个输出数据)。,3.4.2 数据结构的基本知识,1、数据结构的定义数据结构是相互之间存在一种或多种特定关系的数据元素的集合。2、数据结构的分类数据的逻辑结构按数据元素之间的相互关系可以分为4种基本结构。,3、数据的存储结构,数据的存储结构通常分为线性和非线性存储结构,而非线性存储结构主要有树形和图形存储结构。(1)线性存储结构线性存储结构有顺序、链接、索引和散列四种。(2)树形存储结构树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很像自然界中的树。(3)图形存储结构图是比线性和树形更为复杂的一种数据结构,在这种数据结构中,数据元素之间的联系是任意的。,3.4.3 常见的数据结构介绍,1、线性表2、栈和队列3、串4、数组5、树6、图,1、线性表,线性表(Linear_List)是最常用且简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列。在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称为文件。线性表采用线性存储结构,存储方式有:顺序存放和链式存放。,2、栈和队列,(1)栈对线性表的插入和删除操作仅限于在表的末端进行,则这样的线性表称为栈。通常将这个末端位置称为栈顶,起始位置称为栈底。栈也有两种存储方式:顺序栈和链栈。(2)队列如果只允许从线性表的终端插入数据元素,从始端删除数据元素,则称这样的线性表为队列。在队列中,允许插入的一端叫队尾,允许删除的一端则称为队头。,3.串,3、串串是由零个或多个字符组成的有限序列,一般记为:S=a1 a2 a3 an(n0),数组、树、图,4、数组数组是一种常用的数据类型,几乎所有的程序设计语言都设定数组类型为固有的数据类型。5、树和二叉树树是n(n0)个结点的有限集。在任意一棵树中:有且仅有一个特定的称为根的结点;当n1时,其余结点可分为m个互不相交的有限集,其中每一集合本身又是一棵树,并且称为根的子树。二叉树是另一种树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。6、图在树型结构中,数据元素之间具有层次关系,即每个结点只能与上层中的一个结点(即其父结点)以及下层的若干结点(即子结点)相关联。而在图型结构中,结点之间的关系可以是任意的,图中任意两个元素之间都可能相关。,3.5 软件设计方法,概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,1、软件工程的定义,人们曾给软件工程下许多定义,下面给出两个典型的定义。1968年在第一届NATO会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”这个定义不仅指出了软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,它应该建立并使用完善的工程原理。1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是:(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。”,2、软件工程的本质特性,虽然软件工程的不同定义使用了不同词句,强调的重点也有差异,但是,人们普遍认为软件工程具有下述的本质特性:(1)软件工程关注大型程序的构造(2)软件工程的中心课题是控制复杂性(3)软件经常变化(4)开发软件的效率非常重要(5)和谐地合作是开发软件的关键(6)软件必须有效地支持它的用户(7)在软件工程领域中是由具有一种文化背景的人替另一种文化背景的人创造产品,3、软件工程的基本原理,著名的软件工程专家于1983年在一篇论文中提出了软件工程的7条基本原理。他认为这7条原理是确保软件产品质量和开发效率的原理的最小集合。这7条原理是互相独立的,其中任意6条原理的组合都不能代替另一条原理,因此,它们是缺一不可的最小集合,然而这7条原理又是相当完备的。(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性,3.5.2 软件开发方法,软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码实现软件设计,对软件代码进行测试,并签署确认它可以投入运行使用的过程。从工程的角度出发,软件开发过程包括:计划、分析、设计、编码、测试和维护几个阶段,每个阶段都包含相应的文档编制工作。当前主要采用的软件开发方法有:结构化方法、面向对象方法和专家系统方法。,1、结构化方法,结构化软件开发方法采用结构分析技术对问题进行分析建模,它将问题表述为“数据流图+实体联系图”的形式。其中,数据流图描述问题空间中的数据变换处理之间的逻辑关系,实体联系图描述问题空间中数据存储之间的逻辑关系,同时,借用数据词典、结构化语言、判定表、判定树等工具对它们进行详细说明。因此,结构化分析工作主要包括分析确定数据流图和分析确定实体联系图。,2面向对象方法,(1)分析建模面向对象软件开发方法采用面向对象分析对问题进行分析建模,它将问题表述为“对象+关联”的形式,。(2)设计解决方案面向对象软件开发方法采用面向对象设计技术进行问题解决方案的设计工作,它将问题的解决方案表述为“类+关联”的形式。3、专家系统方法采用专家系统方法进行软件开发的主要目的是为了解决需要借助人类专家知识和经验以及推理分析手段才能解决的问题。,3.5.3 软件生存周期,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。软件生命周期每个阶段的基本任务。1问题定义2、可行性分析3、需求分析4、总体设计5、详细设计6、编码和单元测试7、综合测试8、软件维护,3.5.4 软件开发工具,1、数据流图数据流图(DFD,Data Flow Diagram)是一种常用的结构化分析工具,它从数据传递和加工角度,以图形的方式刻画出系统内的数据运行情况。某工厂采购部的定货系统数据流图如图3.24所示。画数据流图时,需要注意如下几个问题:(1)画数据流图而不是画程序框图(2)数据流及加工的命名2、实体联系图实体联系图(ERD,Entity-Relationship Diagram)是分析和设计软件系统中使用的工具,它是关于系统中的信息项(实体)以及这些信息之间关系的图示描述。,3、面向对象开发工具,软件工程的发展和软件技术的发展使软件工具、语言、软件开发环境的区别越来越模糊。例如Microsoft Visual Studio,它提供了在Windows下的开发语言,如VB,VC+,ASP VFP等,同时它们也是一套开发工具,可以提高开发的效率和质量。此外,还提供了在Windows下进行数据集成、过程集成(窗口、交互、命令集成)的工具和方法。其中,Visual SourceSafe还是支持团队开发的管理工具。,4、CASE工具,CASE(计算机辅助软件工程)工具是为软件工程服务的工具。它是一组工具和方法的集合,可以支持软件生命周期的各个活动,它把软件工程的方法、开发环境和工具集成到统一的框架中。一个比较重要的CASE工具是Rational Rose,它是一个面向对象技术的CASE工具和建模语言。Rational Rose是Rational公司开发的一个适用于大型系统开发的面向对象的可视化分析、设计建模工具。在Rose工具中,可以通过用例视图、逻辑视图、构件视图和配置视图4种视图来描述系统的模型。通过这些视图可以对系统需求、处理过程、对象、构件、系统结构等进行可视化建模。该软件支持统一建模语言(UML),OOSE及OMT。,