1、计算机软件技术基础计算机软件技术基础第第1章章 概述概述 本章简介本章简介 计算机软件技术是计算机技术的一个重要组成部分,是计计算机软件技术是计算机技术的一个重要组成部分,是计算机技术领域中最为活跃的领域之一,是衡量计算机技术算机技术领域中最为活跃的领域之一,是衡量计算机技术发展阶段的重要标志。发展阶段的重要标志。计算机软件技术与计算机技术的应用密切相关。目前,在计算机软件技术与计算机技术的应用密切相关。目前,在我们的日常生活、工作、学习、娱乐等领域中,处处都可我们的日常生活、工作、学习、娱乐等领域中,处处都可以看到计算机软件技术的应用。以看到计算机软件技术的应用。登录网站、浏览各种信息,网站
2、就是一种计算机软件技术登录网站、浏览各种信息,网站就是一种计算机软件技术的应用;去银行办理业务,离不开计算机程序的支持;写的应用;去银行办理业务,离不开计算机程序的支持;写年终工作报告、给客户发送电子邮件,同样离不开计算机年终工作报告、给客户发送电子邮件,同样离不开计算机软件工具。软件工具。本章将对计算机软件技术的概念、类型、体系架构等内容本章将对计算机软件技术的概念、类型、体系架构等内容进行概述。进行概述。本章提要本章提要1.1 什么是计算机软件技术?什么是计算机软件技术?1.2 软件的分类软件的分类1.3 软件架构软件架构1.1 什么是计算机软件技术?什么是计算机软件技术?1.1 什么是计
3、算机软件技术?什么是计算机软件技术?为了理解什么是计算机软件技术,给出计为了理解什么是计算机软件技术,给出计算机软件技术的定义,本节将研究以下几算机软件技术的定义,本节将研究以下几个问题:个问题:什么是计算机软件,什么是计算机软件,什么是计算机程序,什么是计算机程序,计算机软件和计算机程序的关系,计算机软件和计算机程序的关系,计算机软件和计算机硬件的关系。计算机软件和计算机硬件的关系。软件的一般定义软件的一般定义 由商务印书馆出版的现代汉语词典中,对软件的由商务印书馆出版的现代汉语词典中,对软件的解释如下:解释如下:计算机系统的组成部分,是指挥计算机进行计计算机系统的组成部分,是指挥计算机进行
4、计算、判断、处理信息的程序系统或设备。包括汇算、判断、处理信息的程序系统或设备。包括汇编程序、操作系统、编译程序、诊断程序、控制编程序、操作系统、编译程序、诊断程序、控制程序、数据管理系统等。程序、数据管理系统等。借指生产、科研、经营等过程中的人员素质、借指生产、科研、经营等过程中的人员素质、管理水平、服务质量等。管理水平、服务质量等。在这个定义中,软件不仅仅是指计算机软件,还在这个定义中,软件不仅仅是指计算机软件,还包括其他广义上的含义。包括其他广义上的含义。计算机软件计算机软件 在计算机领域中,计算机软件在计算机领域中,计算机软件(computer software),简称为软件,是指在计
5、算机系,简称为软件,是指在计算机系统中执行特定任务的计算机程序、算法和统中执行特定任务的计算机程序、算法和文档的集合。文档的集合。本书中的软件,如果没有特别强调,均指本书中的软件,如果没有特别强调,均指计算机软件。计算机软件。程序程序 软件包含了程序。软件包含了程序。计算机程序计算机程序(computer programs),简称程序,是指计算机,简称程序,是指计算机的指令序列。的指令序列。计算机工作时离不开程序,当计算机的中央处理器执行计计算机工作时离不开程序,当计算机的中央处理器执行计算机指令时,就是程序在运行。算机指令时,就是程序在运行。程序通常分为源代码和可执行程序两大类。程序通常分为
6、源代码和可执行程序两大类。源代码是指以程序设计语言编写的、可读的语句和声明的源代码是指以程序设计语言编写的、可读的语句和声明的集合,程序设计人员的工作就是使用程序设计语言编写源集合,程序设计人员的工作就是使用程序设计语言编写源代码,源代码经过编译后转变为计算机可以执行的程序;代码,源代码经过编译后转变为计算机可以执行的程序;可执行程序是指包含了计算机可以直接执行的指令的文件。可执行程序是指包含了计算机可以直接执行的指令的文件。为了与源代码相区别,可执行程序又被称为二进制代码。为了与源代码相区别,可执行程序又被称为二进制代码。算法算法 软件也离不开算法。软件也离不开算法。算法算法(algorit
7、hm)是数学、计算机等学科领域是数学、计算机等学科领域中的一个重要概念,是指一种有限指令的中的一个重要概念,是指一种有限指令的序列,是解决特定问题的明确的详细步骤,序列,是解决特定问题的明确的详细步骤,通常用于计算和数据处理。通常用于计算和数据处理。软件的目的就是完成特定的任务,由程序软件的目的就是完成特定的任务,由程序和算法具体来承担。和算法具体来承担。软件文档软件文档 文档也是软件的重要内容。文档也是软件的重要内容。软件文档是指伴随软件存在的文本文档,软件文档是指伴随软件存在的文本文档,用于解释软件的工作原理、使用方法、技用于解释软件的工作原理、使用方法、技术特点等内容。术特点等内容。在软
8、件的设计、开发和使用过程中,常见在软件的设计、开发和使用过程中,常见的文档包括需求分析、系统设计、算法描的文档包括需求分析、系统设计、算法描述、用户手册、技术服务、市场推广计划述、用户手册、技术服务、市场推广计划等。等。软件和硬件软件和硬件 计算机软件与计算机硬件是相互协同工作的。计算机软件与计算机硬件是相互协同工作的。计算机硬件指计算机系统的物理部分,包括主板、显视器、计算机硬件指计算机系统的物理部分,包括主板、显视器、CPU、RAM内存、硬盘、键盘、鼠标、电源等,用于存储内存、硬盘、键盘、鼠标、电源等,用于存储和运行计算机软件。和运行计算机软件。如果缺少了计算机软件,计算机硬件是毫无用途的
9、。如果缺少了计算机软件,计算机硬件是毫无用途的。从计算视角来看,计算机软件的有序指令可以按照某种顺从计算视角来看,计算机软件的有序指令可以按照某种顺序改变计算机硬件的状态,实现用户的需要。序改变计算机硬件的状态,实现用户的需要。从形状上来看,计算机硬件是指有形的、可触摸的实际物从形状上来看,计算机硬件是指有形的、可触摸的实际物体,而计算机软件则是无形的、不可触摸的抽象实体。体,而计算机软件则是无形的、不可触摸的抽象实体。计算机软件技术计算机软件技术 软件是一种产品,涉及到像操作系统、程序设计软件是一种产品,涉及到像操作系统、程序设计语言、算法等许多不同的技术。语言、算法等许多不同的技术。计算机
10、软件技术是与软件的设计、实施和使用相计算机软件技术是与软件的设计、实施和使用相关的多种技术的统称。关的多种技术的统称。软件的设计与实施涉及到程序设计语言、算法和软件的设计与实施涉及到程序设计语言、算法和数据结构、数据库系统、多媒体、软件工程等技数据结构、数据库系统、多媒体、软件工程等技术术 软件的使用涉及到质量、可靠性、专利、知识产软件的使用涉及到质量、可靠性、专利、知识产权、道德、法律等管理和技术。权、道德、法律等管理和技术。1.2 软件的分类软件的分类1.2 软件的分类软件的分类 对软件进行分类是深入认识和理解软件的一种方对软件进行分类是深入认识和理解软件的一种方式。式。软件的分类方式有很
11、多种,例如,可以根据软件软件的分类方式有很多种,例如,可以根据软件的功能进行分类,也可以根据软件的不同开发方的功能进行分类,也可以根据软件的不同开发方式进行划分,还可以从软件的使用方式进行分类。式进行划分,还可以从软件的使用方式进行分类。根据软件的功能来划分是一种主要的分类方式,根据软件的功能来划分是一种主要的分类方式,可以把软件分为系统软件、编程软件和应用软件可以把软件分为系统软件、编程软件和应用软件3大类型。大类型。下面,我们将详细分析这些软件类型的特点,最下面,我们将详细分析这些软件类型的特点,最后再讨论一下其他分类方式的软件类型的特点。后再讨论一下其他分类方式的软件类型的特点。1.2.
12、1 系统软件系统软件 系统软件系统软件(system software)指管理和控制计算机硬件、使指管理和控制计算机硬件、使计算机工作的软件。计算机工作的软件。系统软件是一种非常重要的软件类型,它为用户提供了一系统软件是一种非常重要的软件类型,它为用户提供了一种操作计算机硬件的便捷方法,为其他程序提供了运行的种操作计算机硬件的便捷方法,为其他程序提供了运行的基础。基础。对应用程序编程人员来讲,系统软件可以屏蔽计算机硬件对应用程序编程人员来讲,系统软件可以屏蔽计算机硬件例如打印机、显示器、键盘的访问细节,减轻编程人员的例如打印机、显示器、键盘的访问细节,减轻编程人员的工作负担。工作负担。另外,系
13、统软件还可以增强计算机内存管理、处理器管理另外,系统软件还可以增强计算机内存管理、处理器管理的安全性和稳定性等。的安全性和稳定性等。根据系统软件的功能特点,可以继续划分为操作系统、设根据系统软件的功能特点,可以继续划分为操作系统、设备驱动程序、实用工具以及其他系统软件。备驱动程序、实用工具以及其他系统软件。操作系统操作系统 操作系统操作系统(operating system,OS)是位于计算机系统中的是位于计算机系统中的硬件和软件之间的接口,硬件和软件之间的接口,负责管理和协调计算机硬负责管理和协调计算机硬件的操作和计算机有限资件的操作和计算机有限资源的共享。源的共享。各种应用程序都是通过宿各
14、种应用程序都是通过宿主在操作系统中在计算机主在操作系统中在计算机上运行。上运行。操作系统的主要功能操作系统的主要功能 操作系统可以完成程序的执行,其主要功操作系统可以完成程序的执行,其主要功能包括能包括 进程管理、内存管理进程管理、内存管理 设备管理、文件管理设备管理、文件管理 网络支持、安全管理等。网络支持、安全管理等。主要的操作系统主要的操作系统 当前,主要的操作系统包括当前,主要的操作系统包括 微软公司的微软公司的Windows系列操作系统系列操作系统 Unix和类和类Unix操作系统操作系统 苹果公司的苹果公司的Mac OS X操作系统操作系统 Linux操作系统等。操作系统等。Uni
15、x操作系统操作系统 Unix最早是由最早是由AT&T贝尔实验室于贝尔实验室于1969年开发出来的,主要年开发出来的,主要开发人员包括开发人员包括Ken Thompson、Dennis Ritchie、Douglas McIlroy等人。等人。Unix最初是用汇编语言编写的。最初是用汇编语言编写的。1973年,年,Ken Thompson等人用等人用C语言重新编写了语言重新编写了Unix,使,使得得Unix的可移植性大大增强。的可移植性大大增强。Unix是一个可移植的、多任务、多用户的操作系统。是一个可移植的、多任务、多用户的操作系统。Unix操作系统有许多特点,例如采用纯文本存储数据、层次性操
16、作系统有许多特点,例如采用纯文本存储数据、层次性文件系统、把设备看作是文件、包含了许多软件工具等。文件系统、把设备看作是文件、包含了许多软件工具等。目前,目前,Unix操作系统有许多不同的系列,主要包括操作系统有许多不同的系列,主要包括Free BSD、Net BSD、Sun OS、AIX、OpenServer、Solaris、HP/UX等。等。设备驱动程序设备驱动程序 设备驱动程序设备驱动程序(device driver)是一个允许高级计算是一个允许高级计算机软件与硬件进行交互的程序。机软件与硬件进行交互的程序。高级计算机软件一般独立于特定的计算机硬件,高级计算机软件一般独立于特定的计算机硬
17、件,只是具备与硬件交互的功能框架。只是具备与硬件交互的功能框架。每种特定的设备例如打印机、网卡,都有具备功每种特定的设备例如打印机、网卡,都有具备功能框架要求的操作该设备的具体命令,这些具体能框架要求的操作该设备的具体命令,这些具体的命令称为设备驱动程序。的命令称为设备驱动程序。设备驱动程序从高级计算机软件处接受一般的命设备驱动程序从高级计算机软件处接受一般的命令,然后把这些命令分解成一系列低级的、与特令,然后把这些命令分解成一系列低级的、与特定设备相关的命令,从而驱动该设备的运行。定设备相关的命令,从而驱动该设备的运行。实用工具实用工具 实用工具实用工具(utility software)是
18、一种计算机系统软件,是一种计算机系统软件,其作用是在执行计算任务的过程中有助于管理和其作用是在执行计算任务的过程中有助于管理和优化计算机硬件、操作系统或应用软件。优化计算机硬件、操作系统或应用软件。目前,许多实用工具都已经被整合到操作系统中目前,许多实用工具都已经被整合到操作系统中了。了。典型的实用工具包括磁盘存储管理工具、系统配典型的实用工具包括磁盘存储管理工具、系统配置和诊断工具、反病毒软件、文本编辑器、加密置和诊断工具、反病毒软件、文本编辑器、加密和解密工具、应用程式启动器、注册表优化工具、和解密工具、应用程式启动器、注册表优化工具、网络管理程序等。网络管理程序等。其他工具其他工具 除了
19、操作系统、设备驱动程序和实用工具之外,除了操作系统、设备驱动程序和实用工具之外,系统软件还包括服务器、窗口化系统等。系统软件还包括服务器、窗口化系统等。服务器服务器(server)是指向客户端提供服务的计算机硬是指向客户端提供服务的计算机硬件或服务器软件或是他们的组合。有时,服务器件或服务器软件或是他们的组合。有时,服务器是指运行了服务器操作系统的计算机硬件;有时,是指运行了服务器操作系统的计算机硬件;有时,服务器是指能够提供服务的软件程序。服务器是指能够提供服务的软件程序。窗口化系统窗口化系统(windowing system)是图形化用户界面是图形化用户界面(graphical user
20、interface,GUI)的组成部分,支持的组成部分,支持窗口管理器,并且为图形化硬件、定位设备窗口管理器,并且为图形化硬件、定位设备(例如例如鼠标鼠标)、键盘提供基本的支持。、键盘提供基本的支持。1.2.2 编程软件编程软件 编程软件编程软件(programming software)又称为编程工具又称为编程工具(programming tool)或软件开发工具或软件开发工具(software development tool),是一种软件开发人员用于创,是一种软件开发人员用于创建、调试、维护其他程序和应用软件的软件工具。建、调试、维护其他程序和应用软件的软件工具。一般地,这些软件工具包括
21、程序设计语言以及编一般地,这些软件工具包括程序设计语言以及编译程序、调试程序、解释程序、链接程序、文本译程序、调试程序、解释程序、链接程序、文本编辑程序等。编辑程序等。这些软件工具的集合称为集成开发环境这些软件工具的集合称为集成开发环境(integrated development environment,IDE)编译程序编译程序 编译程序编译程序(compiler)是一种把用某种计算机是一种把用某种计算机语言编写的源代码程序转变成另一种计算语言编写的源代码程序转变成另一种计算机语言机语言(目标语言,通常是二进制形式,被目标语言,通常是二进制形式,被称为目标代码称为目标代码)的计算机程序。的计
22、算机程序。这种编译的目的是使得源代码成为一种可这种编译的目的是使得源代码成为一种可执行的程序。执行的程序。调试程序调试程序 调试程序调试程序(debugger)是一种测试和诊断其他程序的是一种测试和诊断其他程序的计算机程序。计算机程序。在集成开发环境中,当发现了程序的错误时,对在集成开发环境中,当发现了程序的错误时,对于源代码级的错误,调试程序将显示出错误在源于源代码级的错误,调试程序将显示出错误在源代码中的位置。代码中的位置。如果是针对低级语言或机器语言的调试,则错误如果是针对低级语言或机器语言的调试,则错误位置会以反汇编的形式显示出来。位置会以反汇编的形式显示出来。另外,调试程序还有其他一
23、些功能,例如逐步运另外,调试程序还有其他一些功能,例如逐步运行程序、在设置的断点处中止程序的执行、跟踪行程序、在设置的断点处中止程序的执行、跟踪特定变量的值等。特定变量的值等。解释程序解释程序 一般地,解释程序一般地,解释程序(interpreter)是指执行某是指执行某种编程语言编写的指令的计算机程序。种编程语言编写的指令的计算机程序。解释和编译是程序设计语言实现计算的两解释和编译是程序设计语言实现计算的两种主要方式。种主要方式。但是,这两种计算方式并非是绝对不同的,但是,这两种计算方式并非是绝对不同的,原因是大多数的解释程序也像编译程序一原因是大多数的解释程序也像编译程序一样执行一些翻译工
24、作。样执行一些翻译工作。链接程序链接程序 链接程序链接程序(linker)是指把一个或多个由编译程序生成的对象是指把一个或多个由编译程序生成的对象合并成为一个可执行程序的计算机程序。合并成为一个可执行程序的计算机程序。计算机程序通常由多个部分或模块组成。这些并不包含在计算机程序通常由多个部分或模块组成。这些并不包含在一个对象文件中的部分或模块也被称为符号。一个对象文件中的部分或模块也被称为符号。一般地,对象文件包含一般地,对象文件包含3种符号:已定义的符号、未定义种符号:已定义的符号、未定义的符号和本地符号。已定义的符号允许其他模块调用,未的符号和本地符号。已定义的符号允许其他模块调用,未定义
25、的符号可以调用其他已定义的符号,本地符号则是指定义的符号可以调用其他已定义的符号,本地符号则是指对象文件内部使用的重定位符号。对象文件内部使用的重定位符号。当程序由多个对象文件组成时,链接程序把这些文件合并当程序由多个对象文件组成时,链接程序把这些文件合并成一个统一的可执行程序,实现符号之间的调用。成一个统一的可执行程序,实现符号之间的调用。文本编辑程序文本编辑程序 文本编辑程序文本编辑程序(text editor)也称为文本编辑器,是用于编辑也称为文本编辑器,是用于编辑纯文本文件的计算机程序。纯文本文件的计算机程序。很多情况下,文本编辑程序由操作系统或软件开发环境提很多情况下,文本编辑程序由
26、操作系统或软件开发环境提供,用于对配置文件、源代码进行编辑和修改。供,用于对配置文件、源代码进行编辑和修改。例如,例如,Unix操作系统中的操作系统中的vi就是一个文本编辑器,微软的就是一个文本编辑器,微软的Windows系列操作系统中的记事本也是文本编辑器。系列操作系统中的记事本也是文本编辑器。文本编辑程序的一般功能包括:搜索、替换功能;剪切、文本编辑程序的一般功能包括:搜索、替换功能;剪切、复制、粘贴功能;文本格式化功能;撤销、重做功能;导复制、粘贴功能;文本格式化功能;撤销、重做功能;导入其他功能;过滤等。入其他功能;过滤等。IDE IDE是一种为计算机编程人员提供的、具备软件开是一种为
27、计算机编程人员提供的、具备软件开发需要的编辑、编译、调试、链接以及自动化工发需要的编辑、编译、调试、链接以及自动化工具的多种功能的计算机软件。具的多种功能的计算机软件。IDE也被称为集成设计环境、集成调试环境等。有也被称为集成设计环境、集成调试环境等。有时,版本控制系统和工具也被集成到时,版本控制系统和工具也被集成到IDE中。中。目前,许多目前,许多IDE还有类浏览器、对象审查器、类图还有类浏览器、对象审查器、类图等面向对象软件开发功能。等面向对象软件开发功能。1.2.3 应用软件应用软件 应用软件应用软件(application software)是指在计算机上运行的、支是指在计算机上运行的
28、、支持或改进软件用户工作的计算机程序。持或改进软件用户工作的计算机程序。或者说,应用软件可以直接完成终端用户的工作。或者说,应用软件可以直接完成终端用户的工作。从某种意义上来讲,系统软件和编程软件都是为应用软件从某种意义上来讲,系统软件和编程软件都是为应用软件服务的,应用软件才是真正直接提高用户工作的。服务的,应用软件才是真正直接提高用户工作的。从目前的计算机应用现状来看,有各种各样的应用软件,从目前的计算机应用现状来看,有各种各样的应用软件,许多专家也从不同的角度提出了多种不同的应用软件分类许多专家也从不同的角度提出了多种不同的应用软件分类方式。方式。一般地,常见的应用软件类型包括:工业自动
29、化软件、业一般地,常见的应用软件类型包括:工业自动化软件、业务软件、内容访问软件、教育软件、仿真软件、多媒体开务软件、内容访问软件、教育软件、仿真软件、多媒体开发软件、产品工程软件等。发软件、产品工程软件等。工业自动化软件工业自动化软件 工业自动化工业自动化(industrial automation)是指对工是指对工业生产线、工艺过程、机器进行控制以便业生产线、工艺过程、机器进行控制以便减少人工干预的控制系统。减少人工干预的控制系统。工业自动化软件是指用于工业控制系统的工业自动化软件是指用于工业控制系统的应用软件,包括数字化控制、可编程逻辑应用软件,包括数字化控制、可编程逻辑控制器以及其他工
30、业控制系统等。控制器以及其他工业控制系统等。业务软件业务软件 业务软件业务软件(business software)是有助于提高是有助于提高业务生产效率或者度量业务生产效率的应业务生产效率或者度量业务生产效率的应用软件。用软件。业务软件又可以细分成多种类型,包括企业务软件又可以细分成多种类型,包括企业软件、企业基础设施软件、信息工作者业软件、企业基础设施软件、信息工作者软件等。软件等。需要指出的是,各种类型的软件之间的界需要指出的是,各种类型的软件之间的界限并不是很清晰,有时某种业务软件可能限并不是很清晰,有时某种业务软件可能同时属于多种不同的类型。同时属于多种不同的类型。企业软件企业软件 企
31、业软件企业软件(enterprise software)是指解决分布式环境中企业是指解决分布式环境中企业级管理流程和数据流程需求的软件。级管理流程和数据流程需求的软件。常见的企业软件包括财务管理软件常见的企业软件包括财务管理软件(financial management,FM)、企业资源计划、企业资源计划(enterprise resource planning,ERP)、客户关系管理客户关系管理(customer relationship management,CRM)、供应链管理供应链管理(supply chain management,SCM)、执行信息、执行信息系统系统(executi
32、ve information system,EIS)、管理驾驶舱、管理驾驶舱(dashboard)等。等。与此相对的是部门软件。部门软件是企业软件的子类,主与此相对的是部门软件。部门软件是企业软件的子类,主要用于解决小型组织或大型组织的业务部门的业务管理需要用于解决小型组织或大型组织的业务部门的业务管理需求,例如差旅费管理、呼叫中心管理等。求,例如差旅费管理、呼叫中心管理等。企业基础设施软件企业基础设施软件 企业基础设施软件企业基础设施软件(enterprise infrastructure software)是指是指具有支持企业软件运行的通用功能的应用软件。具有支持企业软件运行的通用功能的应
33、用软件。常见的企业基础设施软件包括常见的企业基础设施软件包括 业务流程软件业务流程软件(business workflow software)、数据库管理系统数据库管理系统(database management system,DBMS)、数字资产管理数字资产管理(digital asset management,DAM)、内容管理系统内容管理系统(content management system,CMS)、文档管理系统文档管理系统(document management system)、地理信息系统地理信息系统(geographic information system,GIS)等。等。信
34、息工作者软件信息工作者软件 信息工作者软件信息工作者软件(information worker software)是一种满足部门内单个人创建和是一种满足部门内单个人创建和管理信息需要的应用软件。管理信息需要的应用软件。这些软件又可以分为时间管理、资源管理、这些软件又可以分为时间管理、资源管理、数据管理、文档、分析、协同工作软件、数据管理、文档、分析、协同工作软件、预订系统、金融软件等。预订系统、金融软件等。内容访问软件内容访问软件 内容访问软件内容访问软件(content access software)是一种用于是一种用于访问内容而不是编辑内容的计算机软件。访问内容而不是编辑内容的计算机软件
35、。但是,也有些内容访问软件允许用户对内容进行但是,也有些内容访问软件允许用户对内容进行编辑。这种软件主要是满足对数字化娱乐、出版编辑。这种软件主要是满足对数字化娱乐、出版产品的消费需求。产品的消费需求。例如,例如,Web浏览器、媒体播放器、数字宠物、屏浏览器、媒体播放器、数字宠物、屏幕保护程序、视频游戏等都是典型的内容访问软幕保护程序、视频游戏等都是典型的内容访问软件。件。教育软件教育软件 教育软件教育软件(educational software)是一种用于是一种用于教学或自学的计算机软件教学或自学的计算机软件 主要包括儿童学习软件、居家学习软件、主要包括儿童学习软件、居家学习软件、教学课件
36、、教学管理软件、娱乐教育软件、教学课件、教学管理软件、娱乐教育软件、教育参考软件、教育软件定制平台、公司教育参考软件、教育软件定制平台、公司培训软件以及特殊教育软件等。培训软件以及特殊教育软件等。仿真软件仿真软件 仿真软件仿真软件(simulation software)是一种以研是一种以研究分析、操作培训、娱乐等为目的,模仿究分析、操作培训、娱乐等为目的,模仿真实情景的物理仿真系统或数据仿真系统真实情景的物理仿真系统或数据仿真系统的计算机软件。的计算机软件。仿真软件又可以分为科学仿真、社会仿真、仿真软件又可以分为科学仿真、社会仿真、战场仿真、应急响应仿真、飞行驾驶仿真、战场仿真、应急响应仿真
37、、飞行驾驶仿真、汽车驾驶仿真、仿真游戏等。汽车驾驶仿真、仿真游戏等。多媒体开发软件多媒体开发软件 多媒体开发软件多媒体开发软件(media development software)是指用于图形、图像、音频、视是指用于图形、图像、音频、视频等多媒体开发的计算机软件。频等多媒体开发的计算机软件。多媒体开发软件又可以分为三维计算机图多媒体开发软件又可以分为三维计算机图像软件、计算机动画、图形艺术软件、光像软件、计算机动画、图形艺术软件、光栅图形编辑软件、矢量图型编辑软件、视栅图形编辑软件、矢量图型编辑软件、视频编辑软件、音频编辑软件、音乐生成器、频编辑软件、音频编辑软件、音乐生成器、Web超媒体开
38、发软件等。超媒体开发软件等。产品工程软件产品工程软件 产品工程软件产品工程软件(product engineering software)是指是指辅助相关制造产品的设计、研发、装配的计算机辅助相关制造产品的设计、研发、装配的计算机软件。软件。产品工程的主要活动包括成本活动、生产能力、产品工程的主要活动包括成本活动、生产能力、产品质量、产品性能、可靠性、可服务性、用户产品质量、产品性能、可靠性、可服务性、用户特征等。特征等。产品工程软件主要包括计算机辅助设计产品工程软件主要包括计算机辅助设计(computer-aided design,CAD)、计算机辅助工程、计算机辅助工程(computer-
39、aided engineering,CAE)、测试工具、测试工具、游戏创建软件、许可管理程序等。游戏创建软件、许可管理程序等。1.3 软件架构软件架构1.3 软件架构软件架构 软件架构软件架构(software architecture)有时也称为软件体系结构,有时也称为软件体系结构,是对软件系统总体结构的抽象表示,主要描述软件系统的是对软件系统总体结构的抽象表示,主要描述软件系统的组件、组件的接口特征以及这些组件之间的关系。组件、组件的接口特征以及这些组件之间的关系。软件架构的研究内容主要包括软件架构设计模式、软件架软件架构的研究内容主要包括软件架构设计模式、软件架构描述语言、软件架构文档以
40、及形式化方法。构描述语言、软件架构文档以及形式化方法。ANSI/IEEE 1471-2000是描述软件架构的第一个标准,是描述软件架构的第一个标准,2007年该标准被年该标准被ISO采纳为采纳为ISO/IEC 42010:2007标准。标准。下面介绍下面介绍ANSI/IEEE 1471-2000标准的主要内容。标准的主要内容。ANSI/IEEE 1471-2000标准标准本章提要本章提要1.1 什么是计算机软件技术?什么是计算机软件技术?1.2 软件的分类软件的分类1.3 软件架构软件架构思考题思考题1.收集微软公司的资料,讨论微软公司提供了哪些收集微软公司的资料,讨论微软公司提供了哪些类型的
41、软件产品。类型的软件产品。2.分组讨论,你每天接触到哪些计算机软件?分组讨论,你每天接触到哪些计算机软件?3.收集资料,讨论收集资料,讨论Unix和类和类Unix操作系统的特点。操作系统的特点。4.收集资料,研讨收集资料,研讨Linux操作系统的主要应用领域有操作系统的主要应用领域有哪些?哪些?5.收集资料,讨论企业软件的主要类型和典型产品收集资料,讨论企业软件的主要类型和典型产品的特点。的特点。计算机软件技术基础计算机软件技术基础第第2章章 程序设计语言程序设计语言 本章简介本章简介 程序设计语言是一种重要的计算机软件技术。没有程序设程序设计语言是一种重要的计算机软件技术。没有程序设计语言,
42、就没有计算机程序,自然也就谈不上计算机软件。计语言,就没有计算机程序,自然也就谈不上计算机软件。在计算机软件领域,程序设计语言种类众多,不同的程序在计算机软件领域,程序设计语言种类众多,不同的程序设计语言有不同的应用特点。设计语言有不同的应用特点。但是,不同的程序设计语言在语法上,有许多共同之处。但是,不同的程序设计语言在语法上,有许多共同之处。本章不是研究某一种具体的程序设计语言的语法,而是讲本章不是研究某一种具体的程序设计语言的语法,而是讲述这些程序设计语言的共同特点。述这些程序设计语言的共同特点。通过本章的学习,使读者对程序设计语言的特点、发展历通过本章的学习,使读者对程序设计语言的特点
43、、发展历史、基本语法、典型语言的特点以及程序设计语言的发展史、基本语法、典型语言的特点以及程序设计语言的发展趋势有一个全面地概括性了解。趋势有一个全面地概括性了解。本章提要本章提要2.1 典型示例典型示例2.2 程序设计语言的演变简史程序设计语言的演变简史2.3 程序设计语言的分类程序设计语言的分类2.4 程序设计语言的基本元素程序设计语言的基本元素2.1 典型示例典型示例2.1 典型示例典型示例 下面,给出一些典型程序设计语言的程序下面,给出一些典型程序设计语言的程序片断,以便读者能对程序设计语言的特点片断,以便读者能对程序设计语言的特点有一个初步的感性认识。有一个初步的感性认识。BASIC
44、语言和语言和VB语言语言 C语言语言 C#语言语言 COBOL语言语言 Java语言语言BASIC语言和语言和VB语言语言C语言语言C#语言语言COBOL语言语言Java语言语言2.2 程序设计语言的演变简史程序设计语言的演变简史2.2 程序设计语言的演变简史程序设计语言的演变简史 第一代语言第一代语言 第二代语言第二代语言 第三代语言第三代语言 第四代语言第四代语言 第五代语言第五代语言第一代语言第一代语言 最早的程序设计语言是机器语言,出现在最早的程序设计语言是机器语言,出现在20世纪世纪50年代初。年代初。机器语言机器语言(machine language)也称为机器代码指令也称为机器代
45、码指令(machine code instruction)。直接用二进制的机器代码指令编写的、由处理器执行的程直接用二进制的机器代码指令编写的、由处理器执行的程序就是机器语言程序。序就是机器语言程序。这是早期的程序设计语言,虽然计算机可以直接执行这种这是早期的程序设计语言,虽然计算机可以直接执行这种语言编写的程序,而且效率高、速度快,但是这种程序的语言编写的程序,而且效率高、速度快,但是这种程序的可读性较差、难以记忆、与计算机处理器硬件紧密相关导可读性较差、难以记忆、与计算机处理器硬件紧密相关导致可移植性差。致可移植性差。第一个商用计算机第一个商用计算机UNIVAC就使用了机器语言编程。就使用
46、了机器语言编程。有人把这种语言称为第一代语言有人把这种语言称为第一代语言(first generation language,1GL)。第二代语言第二代语言 机器语言很快被称为第二代语言机器语言很快被称为第二代语言(2GL)的汇编语言所代替。的汇编语言所代替。汇编语言汇编语言(assembly language)是指用符号代替数字机器代是指用符号代替数字机器代码指令和其他常量进行编程的程序设计语言。码指令和其他常量进行编程的程序设计语言。汇编语言通常由计算机硬件制造商定义,使用的符号是有汇编语言通常由计算机硬件制造商定义,使用的符号是有助于程序设计人员记忆的机器代码的缩写。助于程序设计人员记忆
47、的机器代码的缩写。被称为汇编程序的实用工具把汇编语言符号翻译成目标计被称为汇编程序的实用工具把汇编语言符号翻译成目标计算机的机器指令代码。算机的机器指令代码。这种语言依然是低级程序设计语言,因为一条汇编语言编这种语言依然是低级程序设计语言,因为一条汇编语言编写的语句只能翻译成一条机器指令代码。写的语句只能翻译成一条机器指令代码。第三代语言第三代语言 第三代语言第三代语言(3GL)是从是从2GL精炼而来的。精炼而来的。2GL侧重于改进语言的逻辑结构,侧重于改进语言的逻辑结构,3GL主要是提主要是提高了语言的用户友好性。高了语言的用户友好性。许多常见的语言都是许多常见的语言都是3GL,例如,例如F
48、ORTRAN、COBOL、BASIC、C、C+、Visual Basic、Java、C#等,都是典型的等,都是典型的3GL。下面,介绍一下这些典型语言的演变过程下面,介绍一下这些典型语言的演变过程及其特点。及其特点。第四代语言第四代语言 第四代语言第四代语言(4GL)是从是从3GL演变而来的,具有更高抽象级别演变而来的,具有更高抽象级别程序设计语言或程序设计环境。程序设计语言或程序设计环境。虽然说虽然说3GL是更加自然的、块结构的语言,但是是更加自然的、块结构的语言,但是3GL的开发的开发方法依然比较缓慢、容易出错。方法依然比较缓慢、容易出错。与与3GL相比,相比,4GL是针对特定目的的、面向
49、问题和系统工程是针对特定目的的、面向问题和系统工程的程序设计语言。的程序设计语言。目前,目前,4GL可以分为一般作用的语言可以分为一般作用的语言(例如例如Clipper、Foxpro、PowerBuilder等等)、数据库查询语言、数据库查询语言(例如例如SQL语言语言)、报表生、报表生成语言成语言(例如例如Metafont、Oracle Report、NATURAL等语言等语言)、数据操纵和统计分析语言数据操纵和统计分析语言(例如例如MATLAB、SAS、SPSS、Stata等语言等语言)、Web开发语言开发语言(例如例如ColdFusion)等。等。第五代语言第五代语言 目前,有关第五代语
50、言目前,有关第五代语言(5GL)的话题正处于的话题正处于讨论中。讨论中。一般地认为,一般地认为,5GL关注的是约束条件和逻辑,关注的是约束条件和逻辑,而不是如何去实现算法。而不是如何去实现算法。例如,对于一个给定的问题,例如,对于一个给定的问题,5GL侧重于写侧重于写出解决这种问题需要的条件和约束,而不出解决这种问题需要的条件和约束,而不是关注如何编写算法来解决这种问题。是关注如何编写算法来解决这种问题。5GL主要用于解决人工智能领域中的问题。主要用于解决人工智能领域中的问题。2.3 程序设计语言的分类程序设计语言的分类2.2 程序设计语言的分类程序设计语言的分类 程序设计语言有许多分类方式,