《软件系统(精)课件》由会员分享,可在线阅读,更多相关《软件系统(精)课件(65页珍藏版)》请在金锄头文库上搜索。
1、1计算机软件系统主要内容3.1 计算机软件概述计算机软件概述3.2 操作系统操作系统3.3 办公软件办公软件3.4 程序设计基础程序设计基础3.5 软件工程软件工程2计算机软件系统一、什么是软件一、什么是软件 软件软件:计算机系统中的程序及其文档。:计算机系统中的程序及其文档。 程序程序:计算任务的处理对象和处理规则:计算任务的处理对象和处理规则的描述。的描述。 文档文档:为了便于了解程序所需的阐明性:为了便于了解程序所需的阐明性资料。资料。3.1 计算机软件概述程序必须装入机器内部才能工作程序必须装入机器内部才能工作文档是给人看的,不一定装入机器文档是给人看的,不一定装入机器3计算机软件系统
2、 IEEEIEEE对软件的定义对软件的定义(1983)(1983): 软件是计算机程序、方法、规则、相关软件是计算机程序、方法、规则、相关的文档资料以及在计算机上运行的程序时所的文档资料以及在计算机上运行的程序时所必需的数据的必需的数据的集合集合。3.1 计算机软件概述程序程序:是计算机需要遵照执行的一系列指令,它作为一:是计算机需要遵照执行的一系列指令,它作为一种具有逻辑结构的信息,精确而完整地描述计算任务中种具有逻辑结构的信息,精确而完整地描述计算任务中的处理对象和处理规则。的处理对象和处理规则。方法、规则方法、规则:通常是在文档中说明并在程序中实现的。:通常是在文档中说明并在程序中实现的
3、。文档文档:开发、使用和维护程序所需要的图文资料。:开发、使用和维护程序所需要的图文资料。数据数据:向一个程序提供的输入。:向一个程序提供的输入。4计算机软件系统3.1 计算机软件概述 软件有三层含义软件有三层含义: 个体个体含义:即指计算机系统中的程序含义:即指计算机系统中的程序及其文档;及其文档; 整体整体含义:即指在特定计算机系统中含义:即指在特定计算机系统中所有上述个体含义下的软件的总体;所有上述个体含义下的软件的总体; 学科学科含义:即指在研究、开发、维护含义:即指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、以及使用前述含义下的软件所涉及的理论、原则、方法和技术所构成的学
4、科。原则、方法和技术所构成的学科。5计算机软件系统二、发展过程二、发展过程 软件的发展受到软件的发展受到应用和硬件应用和硬件发展的推动发展的推动和制约,其发展过程大致可分为三个阶段:和制约,其发展过程大致可分为三个阶段:第一阶段第一阶段1946-19581946-1958第二阶段第二阶段1956-19681956-1968第三阶段第三阶段19681968以后以后第一个程序出现第一个程序出现实用的高级程序设实用的高级程序设计语言出现,这期计语言出现,这期间重点考虑程序本间重点考虑程序本身,尚未出现软件身,尚未出现软件一词。一词。实用的高级程序设实用的高级程序设计语言出现计语言出现软件软件工程出现
5、,这期间工程出现,这期间出现软件一词,融出现软件一词,融程序及其有关的文程序及其有关的文档于一体。档于一体。软件危机软件危机软件工程出现软件工程出现现现在,在,19681968年大西洋年大西洋公约学术会议提出公约学术会议提出软件工程。软件工程。3.1 计算机软件概述6计算机软件系统三、软件的分类三、软件的分类 系统软件系统软件:居于计算机系统中最靠近硬:居于计算机系统中最靠近硬件的一层,其他软件一般通过系统软件发挥件的一层,其他软件一般通过系统软件发挥作用。如操作系统、编译程序、网络软件系作用。如操作系统、编译程序、网络软件系统、数据库系统、人机交互软件系统等。统、数据库系统、人机交互软件系统
6、等。 支撑软件支撑软件:支撑软件的开发与维护的软:支撑软件的开发与维护的软件工具和软件开发环境。如环境数据库、各件工具和软件开发环境。如环境数据库、各种接口软件和工具组等。种接口软件和工具组等。 应用软件应用软件:特定应用领域专用的软件。:特定应用领域专用的软件。3.1 计算机软件概述7计算机软件系统四、软件与硬件的关系四、软件与硬件的关系 硬件硬件:构成计算机系统的物理装置。:构成计算机系统的物理装置。 软件软件:用计算机指令和算法语言编写的:用计算机指令和算法语言编写的程序以及运行程序所需的文档、数据。程序以及运行程序所需的文档、数据。 关系关系:硬件是软件运行的:硬件是软件运行的基础基础
7、 软件是对硬件功能的软件是对硬件功能的扩充和完善扩充和完善 软件的运行最终被转换为对硬件的操作软件的运行最终被转换为对硬件的操作3.1 计算机软件概述计算机:硬件、软件计算机:硬件、软件人工生命人工生命 人:躯体、灵魂人:躯体、灵魂自然生命自然生命8计算机软件系统3.2 操作系统 操作系统是所有从事计算机应用、开发操作系统是所有从事计算机应用、开发和研究的人经常使用的系统软件。和研究的人经常使用的系统软件。一、什么是操作系统一、什么是操作系统 管理硬件资源、控制程序运行、改善人管理硬件资源、控制程序运行、改善人机界面、为应用软件提供支持的系统软件。机界面、为应用软件提供支持的系统软件。 特征特
8、征:并发性并发性同时执行多个程序同时执行多个程序 共享性共享性多个并发程序共同使用系统资源多个并发程序共同使用系统资源 随机性随机性程序运行顺序、完成时间以及程序运行顺序、完成时间以及运行结果都是不确定的运行结果都是不确定的9计算机软件系统二、操作系统的功能二、操作系统的功能 1.1.主要作用主要作用 管理各种软硬件资源;管理各种软硬件资源; 提供良好的用户界面。提供良好的用户界面。 2.2.基本功能基本功能 进程进程管理管理:对处理机进行管理。通过进:对处理机进行管理。通过进程管理协调多道程序间的关系,解决对处理程管理协调多道程序间的关系,解决对处理机实施分配调度策略、进行分配和回收等。机实
9、施分配调度策略、进行分配和回收等。 进程状态进程状态( (就绪、运行、挂起就绪、运行、挂起/ /等待等待) )。 3.2 操作系统10计算机软件系统 存储管理存储管理:管理内存资源。:管理内存资源。 主要包括内存分配、地址映射、内存保主要包括内存分配、地址映射、内存保护和内存扩充。护和内存扩充。 设备管理设备管理:对硬件设备进行管理。:对硬件设备进行管理。 主要包括缓冲区管理、设备分配、设备主要包括缓冲区管理、设备分配、设备驱动和设备无关性。驱动和设备无关性。 用户接口用户接口:用户操作计算机的界面。:用户操作计算机的界面。3.2 操作系统命令接口命令接口通过交互命令方式通过交互命令方式, ,
10、对计算机进行操作对计算机进行操作程序接口程序接口通过通过APIAPI调用例行程序实现既定的操作调用例行程序实现既定的操作11计算机软件系统 文件管理文件管理:对信息资源的管理,操作系:对信息资源的管理,操作系统将这些资源以统将这些资源以文件文件的形式存储在外存上。的形式存储在外存上。 文件文件:按一定格式建立在存储设备上的:按一定格式建立在存储设备上的一批相关信息的有序集合。一批相关信息的有序集合。 文件名文件名:每个文件必须起一个名字。:每个文件必须起一个名字。 主文件名主文件名. .扩展名扩展名/ /文件类型文件类型 目录目录:文件的存放通过目录形式来实现:文件的存放通过目录形式来实现 一
11、个目录一个目录可以有子目录可以有子目录 可以存放一组文件可以存放一组文件3.2 操作系统12计算机软件系统 多级目录结构多级目录结构:3.2 操作系统盘符盘符:子目录子目录11子目录子目录22 子目录子目录nn文件名文件名C:Program FilesMicrosoft OfficeOFFICE11C:Program FilesMicrosoft OfficeOFFICE11 winword.exewinword.exe13计算机软件系统三、操作系统的分类三、操作系统的分类 1.1.批处理操作系统批处理操作系统 特点特点:用户脱机使用计算机,作业成批:用户脱机使用计算机,作业成批处理,多道程序
12、运行,但无交互手段。处理,多道程序运行,但无交互手段。 2.2.分时操作分时操作系统系统 特点特点:多路性,交互性,独占性。:多路性,交互性,独占性。 3 3. .实时操作实时操作系统系统 特点特点:及时性,高可靠性和完整性。:及时性,高可靠性和完整性。3.2 操作系统14计算机软件系统 4. 4.嵌入式操作系统嵌入式操作系统 特点特点:运行在嵌入式环境中。:运行在嵌入式环境中。 5. 5.个人计算机操作系统个人计算机操作系统 特点特点:单用户,单任务:单用户,单任务(DOS)(DOS) 多任务多任务(Windows)(Windows) 6.6.网络操作系统网络操作系统 特点特点:基于计算机网
13、络基于计算机网络(Netware(Netware,WindowsNTWindowsNT) ) 7.7.分布式操作系统分布式操作系统 特点特点:统一性,共享性,透明性,自治性统一性,共享性,透明性,自治性3.2 操作系统15计算机软件系统四、常用的操作系统四、常用的操作系统 操作系统是现代计算机必不可少的系统操作系统是现代计算机必不可少的系统软件,它是计算机的灵魂所在。软件,它是计算机的灵魂所在。 1.1.操作系统的诞生操作系统的诞生-盘古开天地盘古开天地 最初的操作系统出现在最初的操作系统出现在IBM704IBM704大型机上大型机上 微型计算机的操作系统则诞生于微型计算机的操作系统则诞生于2
14、020世纪世纪7070年代年代-CP/M-CP/M。它能够进行文件管理,具有。它能够进行文件管理,具有磁盘驱动装置,可控制磁盘的磁盘驱动装置,可控制磁盘的I/O,I/O,显示器的显示器的显示以及打印的输出。显示以及打印的输出。3.2 操作系统16计算机软件系统 2.2.操作系统早期霸主操作系统早期霸主-DOS-DOS 19811981年年IBMIBM公司首次推出公司首次推出IBM PC,IBM PC,就采用就采用了了MicrosoftMicrosoft公司开发的公司开发的DOSDOS操作系统。操作系统。 DOSDOS是在是在CP/MCP/M的基础上进行了较大扩充的基础上进行了较大扩充, ,增加
15、了许多内部和外部命令,使该操作系统增加了许多内部和外部命令,使该操作系统具有较强的功能及性能优良的文件系统。具有较强的功能及性能优良的文件系统。 由于由于MicrosoftMicrosoft软件有向下兼容的特点软件有向下兼容的特点, ,因此决定了因此决定了WindowsWindows出问题时出问题时, ,很多时候需要很多时候需要在在DOSDOS下才能得到解决。下才能得到解决。3.2 操作系统17计算机软件系统 DOSDOS的发展历史的发展历史: DOSDOS的组成的组成:3.2 操作系统用户用户命令处理程序命令处理程序文件管理程序文件管理程序I/OI/O管理程序管理程序COMMAND.COMC
16、OMMAND.COMMSDOS.SYSMSDOS.SYSIO.SYSIO.SYSROMBIOSROMBIOS引导程序引导程序用户程序用户程序键盘命令键盘命令18计算机软件系统 3. 3.操作系统当代大亨操作系统当代大亨-Windows-Windows 19811981年,微软公司内部制定了年,微软公司内部制定了发展界面发展界面管理者管理者的计划。到的计划。到19831983年年5 5月月, ,微软公司决定微软公司决定把这一计划命名为把这一计划命名为Microsoft WindowsMicrosoft Windows。 19831983年年1111月,月,BillBill宣布推出宣布推出Wind
17、ows1.0Windows1.0版本,但不成功。直到版本,但不成功。直到19851985年才正式发布。年才正式发布。 19871987年,微软公司推出年,微软公司推出Windows2.0Windows2.0。直。直到到19901990年,微软公司推出年,微软公司推出Windows3.0Windows3.0,才逐,才逐渐取代渐取代DOSDOS成为主流操作系统。成为主流操作系统。3.2 操作系统19计算机软件系统WindowsWindows内核系列发布表内核系列发布表 日期日期 版本版本 日期日期 版本版本1983.11 Windows1983.11 Windows宣布诞生宣布诞生1985.11
18、Windows 1.01985.11 Windows 1.01987.4 Windows 2.01987.4 Windows 2.01990.5 Windows 3.01990.5 Windows 3.01992.4 Windows 3.11992.4 Windows 3.11994.2 Windows 3.111994.2 Windows 3.111995.8 Windows 951995.8 Windows 951998.6 Windows 981998.6 Windows 981999.5 Windows 981999.5 Windows 98 SESE2000.9 Windows Me
19、2000.9 Windows Me2001.1 Win9x2001.1 Win9x内核宣告停止内核宣告停止1993.8 Windows NT 3.11993.8 Windows NT 3.11994.9 Windows NT 3.51994.9 Windows NT 3.51995.6 Windows NT 3.511995.6 Windows NT 3.511996.8 Windows NT 4.01996.8 Windows NT 4.01997.9 Windows NT 5.0 Beta 11997.9 Windows NT 5.0 Beta 11998.8 Windows NT 5.0
20、 Beta 21998.8 Windows NT 5.0 Beta 21999.4 Windows 2000 Beta 31999.4 Windows 2000 Beta 32000.2 Windows 20002000.2 Windows 20002000.7 Windows 2000 SP12000.7 Windows 2000 SP12001.10 Windows XP2001.10 Windows XP2001.11 Windows XP 2001.11 Windows XP 中文版中文版3.2 操作系统20计算机软件系统Windows NT/2000/XPWindows NT/200
21、0/XP总体结构总体结构3.2 操作系统环境子系统环境子系统集成子系统集成子系统用户用户用户态用户态核心态核心态对象管对象管理程序理程序安全调用安全调用监视程序监视程序进程管进程管理程序理程序本地过程本地过程调用程序调用程序虚拟内存虚拟内存管理程序管理程序输入输出设输入输出设备管理程序备管理程序系统服务系统服务内核内核硬件抽象层硬件抽象层21计算机软件系统 4 4. .天皇巨星天皇巨星-UNIX-UNIX UNIXUNIX是使用比较广泛、影响比较大的主是使用比较广泛、影响比较大的主流操作系统之一。流操作系统之一。UNIXUNIX结构简练、功能强,结构简练、功能强,可移植性和兼容性都比较好,因而
22、它被认为可移植性和兼容性都比较好,因而它被认为是开放系统的代表。是开放系统的代表。 UNIXUNIX是是19691969年贝尔实验室开发的多用户年贝尔实验室开发的多用户操作系统,最早用于操作系统,最早用于PDP-7PDP-7和和PDP-11PDP-11小型机小型机, ,并很快得到普及。迄今已成为跨越从微型机并很快得到普及。迄今已成为跨越从微型机到巨型机范围的唯一操作系统。到巨型机范围的唯一操作系统。3.2 操作系统22计算机软件系统UNIXUNIX发展简图发展简图3.2 操作系统23计算机软件系统UNIXUNIX系统的框架结构系统的框架结构3.2 操作系统24计算机软件系统 5. 5.诱人的小
23、企鹅诱人的小企鹅-Linux-Linux 19911991年,芬兰赫尔辛基大学的年,芬兰赫尔辛基大学的2121岁学生岁学生LinusLinus TorvoldsTorvolds在学习操作系统时,将自己在学习操作系统时,将自己开发的开发的LinuxLinux系统源程序完整地上传到系统源程序完整地上传到FTPFTP服服务器上,供大家下载测试。务器上,供大家下载测试。3.2 操作系统Operating Systems: Design and ImplementationAndrew S. Tanenbaum & Albert S. Woodhull25计算机软件系统3.2 操作系统流行的流行的Lin
24、uxLinux版本版本 LinuxLinux内核版本内核版本:测试版、稳定版:测试版、稳定版2.6.82.6.8主版本号主版本号次版本号:奇数次版本号:奇数测试版测试版 偶数偶数稳定版稳定版 当前版本错误修改次数当前版本错误修改次数Red Hat LinuxMandrake LinuxTurbo Linux红旗红旗Linux中软中软Lwww.redflag-26计算机软件系统3.2 操作系统LinuxLinux操作系统的组成操作系统的组成用户应用程序用户应用程序操作系统服务操作系统服务LinuxLinux内核内核硬件控制器硬件控制器用户应用程序用户应用程序直接提供用户使用的应用程序,如文字处理
25、、浏览器直接提供用户使用的应用程序,如文字处理、浏览器操作系统服务操作系统服务用户与操作系统低层功能交互的接口程序用户与操作系统低层功能交互的接口程序 如如ShellShell、编译器、程序库等编译器、程序库等LinuxLinux内核内核用户及较高子系统与底层硬件的交互接口,实现对用户及较高子系统与底层硬件的交互接口,实现对CPUCPU、内存、文件系统、内存、文件系统、I/OI/O设备等的控制和管理设备等的控制和管理硬件控制器硬件控制器直接完成对各种硬件设备的识别和驱动直接完成对各种硬件设备的识别和驱动27计算机软件系统3.2 操作系统 6.6.天使的化身天使的化身-Mac OS X-Mac
26、OS X Apple / Apple /LisaMacintoshLisaMacintosh198419841985198519871987198819881991199119941994199719971998.101998.101999.51999.51999.101999.10System 1.0System 1.0System 2.0System 2.0System 5.0System 5.0System 6System 6System 7System 7System 7.5System 7.5System 7.6System 7.6MAC OS 8MAC OS 8MAC OS 8.5
27、MAC OS 8.5MAC OS 8.6MAC OS 8.6MAC OS 9MAC OS 92000.12000.12001.32001.32001.92001.9200220022004200420052005MAC OS XMAC OS XMAC OS X 10.0MAC OS X 10.0MAC OS X 10.1MAC OS X 10.1MAC OS X 10.2MAC OS X 10.2MAC OS X 10.3MAC OS X 10.3MAC OS X 10.4MAC OS X 10.419761983198428计算机软件系统一、办公软件概述一、办公软件概述 Microsoft
28、Office 2003Microsoft Office 2003: : WordWord、ExcelExcel PowerPointPowerPoint、AccessAccess FrontPageFrontPage、Outlook ExpressOutlook Express WPS Office 2003 WPS Office 2003: : 金山文字、金山金山文字、金山表格表格 金山演示、金山金山演示、金山邮件邮件3.3 办公软件29计算机软件系统二、文字处理二、文字处理 文字处理软件是指在计算机上辅助人们文字处理软件是指在计算机上辅助人们制作文档的系统。制作文档的系统。 通用的文字处理
29、软件通用的文字处理软件: 1979 1979:WordStarWordStar 1983 1983:WordPerfectWordPerfect 1988 1988:WPSWPS 1990 1990:Word 1.0 for WindowsWord 1.0 for Windows 1994 1994:Word 6.0Word 6.0Excel 5.0Excel 5.0Office 4.xOffice 4.x3.3 办公软件30计算机软件系统三、电子表格三、电子表格 电子表格软件是利用计算机来处理带数电子表格软件是利用计算机来处理带数值计算的表格软件。值计算的表格软件。 通用的电子表格软件有通用
30、的电子表格软件有: 1979 1979:VisicalcVisicalc 19821982:Lotus1-2-3Lotus1-2-3 198x198x:Excel for MacintoshExcel for Macintosh 19941994:Word 6.0Word 6.0Excel 5.0Excel 5.0Office 4.xOffice 4.x3.3 办公软件31计算机软件系统四、演示文稿四、演示文稿 演示文稿制作软件可以创建美观、实用演示文稿制作软件可以创建美观、实用的幻灯片,并以简洁的方式表达出文稿内容的幻灯片,并以简洁的方式表达出文稿内容 1987.4 1987.4:Power
31、Point 1.0(Windows PowerPoint 1.0(Windows 2.0)2.0) 1990.5 1990.5:PowerPoint 2.0(Windows PowerPoint 2.0(Windows 3.0)3.0) 1992.5 1992.5:PowerPoint 3.0(Windows PowerPoint 3.0(Windows 3.1)3.1) 1994.2 1994.2:PowerPoint 4.0PowerPoint 4.0 1995.2 1995.2:PowerPoint 7.0(Windows 95)PowerPoint 7.0(Windows 95) Po
32、werPoint 97/2000/2002/ PowerPoint 97/2000/2002/200320033.3 办公软件32计算机软件系统一、程序设计的概念一、程序设计的概念 程序设计程序设计:指利用计算机解决具体问题:指利用计算机解决具体问题的全过程。的全过程。 程序设计的基本过程程序设计的基本过程: 分析所求解的问题分析所求解的问题 抽象数学模型抽象数学模型 设计合适的算法设计合适的算法 编写程序编写程序 调试运行调试运行 3.4 程序设计基础33计算机软件系统二、程序设计方法二、程序设计方法 1.1.结构化程序设计结构化程序设计 基本思想基本思想:顺序结构:顺序结构 选择结构选择结
33、构 循环结构循环结构 设计原则设计原则:自顶向下:自顶向下 逐步求精逐步求精 模块化模块化3.4 程序设计基础程序模块程序模块1程序模块程序模块2程序模块程序模块2条件条件程序模块程序模块1成立成立不成立不成立条件条件程序模块程序模块成立成立不成立不成立34计算机软件系统 2.2.面向对象程序设计面向对象程序设计 对象对象:用来描述客观事物的实体,反映:用来描述客观事物的实体,反映系统为之保存信息和与之交互的能力。每个系统为之保存信息和与之交互的能力。每个对象有各自的内部属性和操作方法。对象有各自的内部属性和操作方法。3.4 程序设计基础属性:属性:频道频道颜色颜色音量音量方法:方法:调节频道
34、调节频道调节颜色调节颜色调节音量调节音量电视机电视机电视机对象电视机对象 整个程序是由一系列相互作用的对象构成整个程序是由一系列相互作用的对象构成的,对象之间的交互通过发送消息来实现。的,对象之间的交互通过发送消息来实现。35计算机软件系统 类类:具有相同的属性和操作方法,并遵:具有相同的属性和操作方法,并遵守相同规则的对象的集合。守相同规则的对象的集合。 类是对象集合的抽象,规定了这些对象类是对象集合的抽象,规定了这些对象的公共属性的公共属性( (即数据结构即数据结构) )和方法和方法( (操作数据操作数据的函数的函数) )。对象是类的一个实例。对象是类的一个实例。3.4 程序设计基础例如例
35、如:一个面向对象的图形程序,在屏幕的左下角显示一个半径为:一个面向对象的图形程序,在屏幕的左下角显示一个半径为2cm2cm的红色圆,在屏幕的中部显示一个半径为的红色圆,在屏幕的中部显示一个半径为3cm3cm的黄色圆,在屏幕的右下的黄色圆,在屏幕的右下角显示一个半径为角显示一个半径为4cm4cm的蓝色圆。这三个圆的圆心位置、半径大小和颜的蓝色圆。这三个圆的圆心位置、半径大小和颜色均不相同,是三个不同的对象。但是它们有相同的属性色均不相同,是三个不同的对象。但是它们有相同的属性( (圆心坐标、圆心坐标、半径、颜色半径、颜色) )和相同的操作和相同的操作( (显示图形、移动、缩放等显示图形、移动、缩
36、放等) ),因此它们是同,因此它们是同一类事物,可以用一类事物,可以用“CircleCircle类类”来定义。来定义。OOPOOP特点特点:封装、继承、多态性:封装、继承、多态性36计算机软件系统3.4 程序设计基础三、程序设计语言三、程序设计语言文章文章汉语、英语汉语、英语字、词、语法结构字、词、语法结构写文章写文章程序程序计算机语言计算机语言数据表示、表达式、语句结构数据表示、表达式、语句结构编程序编程序 计算机语言计算机语言:计算机所能够识别的语言:计算机所能够识别的语言 程序程序:利用计算机语言编写的能够完成:利用计算机语言编写的能够完成一定功能的一组代码。一定功能的一组代码。 程序设
37、计程序设计:利用计算机语言编写程序的:利用计算机语言编写程序的过程。过程。程序设计语言计算机语言程序设计语言计算机语言37计算机软件系统 1.1.语言的分类语言的分类应用范围应用范围通用语言、专用语言通用语言、专用语言系统程序设计语言、科学计算语言系统程序设计语言、科学计算语言事务处理语言、实时控制语言事务处理语言、实时控制语言程序设计程序设计方法方法结构化语言结构化语言模块化语言模块化语言面向对象语言面向对象语言与硬件的与硬件的联系程度联系程度机器语言机器语言汇编语言汇编语言高级语言高级语言与计算机硬件基本无关与计算机硬件基本无关依赖于计算机硬件依赖于计算机硬件( (低级语言低级语言) )3
38、.4 程序设计基础38计算机软件系统 机器语言机器语言 从本质上说,计算机只能识别从本质上说,计算机只能识别0 0和和1 1两个两个数字,因此,计算机能够直接识别的指令是数字,因此,计算机能够直接识别的指令是由一连串的由一连串的0 0和和1 1组合起来的二进制编码。组合起来的二进制编码。机器指令操作码操作数机器指令操作码操作数 机器语言机器语言:指计算机能够直接识别的指:指计算机能够直接识别的指令的集合。即以二进制代码表示的机器指令令的集合。即以二进制代码表示的机器指令集合,它是计算机能够直接识别和执行的语集合,它是计算机能够直接识别和执行的语言。言。 3.4 程序设计基础39计算机软件系统优
39、点优点:占用内存少,执行速度快;:占用内存少,执行速度快;缺点缺点:面向机器语言,通用性差,不易阅读:面向机器语言,通用性差,不易阅读和记忆,编程工作量大,难以维护。和记忆,编程工作量大,难以维护。3.4 程序设计基础 例题例题 用用Intel 8086Intel 8086指令系统来编写机器语指令系统来编写机器语言程序,要求完成言程序,要求完成 9+8=9+8=?40计算机软件系统 优点优点:比机器语言程序容易阅读和修改:比机器语言程序容易阅读和修改 缺点缺点:面向机器语言,通用性差。:面向机器语言,通用性差。3.4 程序设计基础 汇编语言汇编语言 汇编语言汇编语言:用符号代替机器指令所产生:
40、用符号代替机器指令所产生的语言。例如,的语言。例如,80868086汇编语言对汇编语言对9+8=?9+8=?编程编程41计算机软件系统 源程序源程序:用汇编语言编写的程序。:用汇编语言编写的程序。 汇编程序汇编程序:负责翻译的软件。:负责翻译的软件。 主要作用主要作用源程序转换成用二进制代码源程序转换成用二进制代码表示的目标程序。表示的目标程序。 连接程序连接程序:将目标程序与库文件或其他:将目标程序与库文件或其他目标程序连接起来形成可执行程序。目标程序连接起来形成可执行程序。3.4 程序设计基础汇编语言源程序汇编语言源程序目标程序目标程序可执行程序可执行程序汇编程序汇编程序连接程序连接程序4
41、2计算机软件系统 高级语言高级语言 高级语言高级语言:用接近自然语言和数学语言:用接近自然语言和数学语言的语法、符号描述基本操作的程序设计语言的语法、符号描述基本操作的程序设计语言 BASICBASIC、FORTRANFORTRAN、PascalPascal、COBOLCOBOL、C C VBVB、VC+VC+、DelphiDelphi、JavaJava、C#C# 例如前面例如前面9+8=?9+8=?,用,用C C语言编程:语言编程: main()main() intint al; al; al=9+8; al=9+8; 3.4 程序设计基础43计算机软件系统 优点优点:符合人类习惯,简单易学
42、:符合人类习惯,简单易学 通用性强,便于维护通用性强,便于维护 源程序源程序:用高级语言编写的程序。:用高级语言编写的程序。 翻译程序翻译程序:将源程序翻译成用二进制代:将源程序翻译成用二进制代码表示的目标程序。码表示的目标程序。 翻译程序的工作方式翻译程序的工作方式: 解释方式:边解释边执行解释方式:边解释边执行 编译方式:写程序、编译程序编译方式:写程序、编译程序 运行程序运行程序3.4 程序设计基础44计算机软件系统高级语言源程序高级语言源程序执行结果执行结果解释程序解释程序解释方式解释方式3.4 程序设计基础编译方式编译方式可执行程序可执行程序高级语言源程序高级语言源程序编译程序编译程
43、序目标程序目标程序连接程序连接程序45计算机软件系统 2.2.程序设计语言的选择程序设计语言的选择 选择编程语言涉及很多因素:选择编程语言涉及很多因素: 人的因素:编程小组精通这门语言吗人的因素:编程小组精通这门语言吗 任务需要:选择的语言能否实现任务任务需要:选择的语言能否实现任务的全部功能?能跨平台吗?有数据库接口功的全部功能?能跨平台吗?有数据库接口功能吗?能直接控制声卡等硬件吗?能吗?能直接控制声卡等硬件吗? 客户指定,或要通过串行口控制一个客户指定,或要通过串行口控制一个外部设备,外部设备,C+C+汇编语言是最明智的选择。汇编语言是最明智的选择。了解一些流行的语言,对于做出合理选择会
44、有帮助。了解一些流行的语言,对于做出合理选择会有帮助。3.4 程序设计基础46计算机软件系统3.4 程序设计基础8086808680868086汇汇汇汇编语言编语言编语言编语言用它编写的程序只能运行在装有用它编写的程序只能运行在装有80x8680x86计算机上。现在汇编计算机上。现在汇编语言仅用于那些要求程序尽可能短或速度要求很高的场合,语言仅用于那些要求程序尽可能短或速度要求很高的场合,如为了控制硬件在操作系统、多媒体底层控制时使用它。如为了控制硬件在操作系统、多媒体底层控制时使用它。FORTRANFORTRANFORTRANFORTRAN19541954年出现,其他的高级语言几乎都直接或间
45、接地从它发展年出现,其他的高级语言几乎都直接或间接地从它发展而来。而来。FORTRANFORTRAN对于数值类型和计算功能支持较强,一般科对于数值类型和计算功能支持较强,一般科学家用来编制科学计算程序,应用面较窄。学家用来编制科学计算程序,应用面较窄。BasicBasicBasicBasicBasicBasic是为初学者设计的,开发于是为初学者设计的,开发于19641964年。它从年。它从FORTRAN FORTRAN 和和ALGOL 60ALGOL 60改造而来。目前流行的是改造而来。目前流行的是VBVB,它的集成开发环境,它的集成开发环境支持调试时解释执行和对最终版本的编译。开发商业软件。
46、支持调试时解释执行和对最终版本的编译。开发商业软件。PascalPascalPascalPascalPascalPascal最初是最初是7070年代为帮助学生学习编程而开发的编译型语年代为帮助学生学习编程而开发的编译型语言。它最先提出结构化程序设计,但很少用于商业开发。言。它最先提出结构化程序设计,但很少用于商业开发。DelphiDelphiDelphiDelphiDelphiDelphi是是InpriseInprise公司于公司于19951995年推出的可视化编程语言。它年推出的可视化编程语言。它以以PascalPascal为基础,扩充了面向对象和可视化的开发手段,使为基础,扩充了面向对象和
47、可视化的开发手段,使得得DelphiDelphi有能力与有能力与VBVB相抗衡。相抗衡。DelphiDelphi适用于应用软件、数据适用于应用软件、数据库系统、系统软件等软件的开发。库系统、系统软件等软件的开发。47计算机软件系统3.4 程序设计基础C C C CC C语言是美国电报与电话公司为了实现语言是美国电报与电话公司为了实现UNIXUNIX系统的设计思想系统的设计思想而发展起来的语言工具。其特点是兼顾了高级语言和汇编而发展起来的语言工具。其特点是兼顾了高级语言和汇编语言,既提供了结构化程序设计,又带有低级语言的接口语言,既提供了结构化程序设计,又带有低级语言的接口C+C+C+C+C+C
48、+语言是在语言是在C C语言的基础上为支持面向对象的程序设计而语言的基础上为支持面向对象的程序设计而研制的一个通用目的的程序设计语言。它可以用于编写从研制的一个通用目的的程序设计语言。它可以用于编写从简单的交互程序到高度成熟和复杂的工程科学中的任何程简单的交互程序到高度成熟和复杂的工程科学中的任何程序,目前流行的版本是序,目前流行的版本是MS VC+MS VC+、Borland C+ BuilderBorland C+ BuilderJavaJavaJavaJavaJavaJava语言于语言于19911991年在年在Sun MicrosystemsSun Microsystems公司设计出来,
49、源公司设计出来,源于对独立平台的语言需求。这种语言可创建嵌入各种于对独立平台的语言需求。这种语言可创建嵌入各种( (具有具有不同不同CPUCPU的的) )电器设备电器设备( (如微波炉等如微波炉等) )的软件,其特点是可移的软件,其特点是可移植、跨平台,正好迎合了植、跨平台,正好迎合了InternetInternet的需要。的需要。标记语言标记语言标记语言标记语言HTML(HyperTextHTML(HyperText Markup Language) Markup Language)、XML(eXtensibleXML(eXtensible Markup Language)Markup La
50、nguage)都属于语言,但它们都没有传统语言的都属于语言,但它们都没有传统语言的基本控制结构和复杂的数据结构定义以及子程序定义,其基本控制结构和复杂的数据结构定义以及子程序定义,其主要用途是描述网页的数据和格式。主要用途是描述网页的数据和格式。48计算机软件系统四、数据结构与算法四、数据结构与算法程序数据结构算法程序数据结构算法 1.1.数据结构数据结构 数据数据:对客观事物的符号表示,指所有:对客观事物的符号表示,指所有能输入到计算机中并被处理的符号的总和。能输入到计算机中并被处理的符号的总和。 数据元素数据元素:由若干个数据项组成,而数:由若干个数据项组成,而数据项是具有独立含义的数据最
51、小单位。据项是具有独立含义的数据最小单位。3.4 程序设计基础数据元素数据元素记录、结点记录、结点 数据项数据项字段、域字段、域49计算机软件系统 数据结构数据结构:研究数据及数据元素之间的:研究数据及数据元素之间的关系的一门学科。关系的一门学科。 基本内容基本内容:数据的逻辑结构数据的逻辑结构数据元数据元素之间的逻辑关系素之间的逻辑关系( (集合、线性、树形、网状结构集合、线性、树形、网状结构) ) 数据的存储结构数据的存储结构数据元素及其关系数据元素及其关系在计算机存储器中的存储方式在计算机存储器中的存储方式( (顺序、顺序、) )。 数据的运算数据的运算施加在该数据上的操作施加在该数据上
52、的操作3.4 程序设计基础50计算机软件系统 2. 2.算法及其复杂性分析算法及其复杂性分析 求解一个给定的可计算问题,不同的人求解一个给定的可计算问题,不同的人常常编写出不同的正确程序。常常编写出不同的正确程序。 与计算方法相关的算法问题;与计算方法相关的算法问题; 程序设计的技术问题。程序设计的技术问题。 例例66给定两个整数,求它们的最大公因数给定两个整数,求它们的最大公因数算法算法A A:计算函数:计算函数gcd(x,ygcd(x,y) ) A A1 1:输入:输入x x、y y,z z为临时变量;为临时变量; A A2 2:重复执行如下操作步骤:重复执行如下操作步骤:3.4 程序设计
53、基础51计算机软件系统若若y y0 0,则输出则输出|x|x|,算法停止;算法停止;若若y0y0,则,则zx mod yzx mod y,xyxy,yzyz。#include main() int x,y,z; printf(Input x,y=); scanf(%d,%d,&x,&y); while (y!=0) z=x%y; x=y; y=z; printf(gcd(x,y)=%dn,abs(x);3.4 程序设计基础52计算机软件系统问题问题计算方法计算方法算法算法程序程序同一算法同一算法不同程序员不同程序员程序差别大程序差别大 例例77用程序变换技术设计用程序变换技术设计gcd(x,y
54、gcd(x,y) )的程序的程序#include main() int x,y,z=0; printf(Input x,y=); scanf(%d,%d,&x,&y); x=abs(x); y=abs(y); gcd(x,y,z);int gcd(int x1,int y1,int z1) if (x1=0) z1=y1; printf(gcd(x,y)=%dn,z1); else if (x1=y1) gcd(x1,y1-x1,z1); else gcd(y1,x1,z1);上述两例都反映辗转相除计算方法。上述两例都反映辗转相除计算方法。3.4 程序设计基础53计算机软件系统 问题问题不同计
55、算方法、算法不同计算方法、算法不同程序不同程序 怎样判断程序和算法的好坏呢?这涉及怎样判断程序和算法的好坏呢?这涉及到到算法的存在性算法的存在性和和算法的复杂性算法的复杂性。 算法复杂性分析算法复杂性分析:对算法计算所需要的:对算法计算所需要的时间和空间的一种度量。时间和空间的一种度量。 类型类型:时间复杂性、空间复杂性:时间复杂性、空间复杂性 算法复杂性的高低体现在运行该算法所算法复杂性的高低体现在运行该算法所需要的计算机资源上,所需资源越多,该算需要的计算机资源上,所需资源越多,该算法的复杂性越高;反之,所需资源越少。法的复杂性越高;反之,所需资源越少。3.4 程序设计基础54计算机软件系
56、统 例例 计算第计算第n个素数。个素数。 所谓素数是指恰有所谓素数是指恰有1 1和本身两个自然数和本身两个自然数为其因数的大于为其因数的大于1 1的整数。的整数。 除除2 2为偶素数外,其余素数都是奇数。为偶素数外,其余素数都是奇数。算法算法A(A(简单算法简单算法) ): A A1 1. .从素数定义出发,对自然数从小到大从素数定义出发,对自然数从小到大一个一个去试。一个一个去试。 A A2 2. .当当n很大时很大时, ,算法所需要的计算时间非算法所需要的计算时间非常大。常大。3.4 程序设计基础55计算机软件系统算法算法B(B(筛法,快速算法筛法,快速算法) ): B B1 1. .输入
57、输入n,输出第一个素数输出第一个素数2 2; B B2 2.M2.M2,NM2NM2; B B3 3. .从从2 2开始,依次筛除开始,依次筛除M+1M+1到到N N之间所有之间所有2 2的倍数,的倍数,3 3的倍数,的倍数,直到某个已求得的,直到某个已求得的素数的平方大于素数的平方大于N N为止;为止; B B4 4. .依小到大输出依小到大输出N+1N+1到到M M之间剩下的数;之间剩下的数; B B5 5. .若已求得第若已求得第n个素数个素数, ,则输出第则输出第n个素个素数数; ;否则否则,M,M当前最大素数当前最大素数,NM2,NM2,转转B B3 33.4 程序设计基础56计算机
58、软件系统 算法定义算法定义:一个算法就是一个有穷规则:一个算法就是一个有穷规则的集合,其中的规则确定了一个解决某一特的集合,其中的规则确定了一个解决某一特定类型问题的运算序列。定类型问题的运算序列。 算法的规则序列应满足五个重要条件:算法的规则序列应满足五个重要条件: 有穷性:算法必须执行有穷步后结束有穷性:算法必须执行有穷步后结束 确定性:算法的每一步必须是确定的确定性:算法的每一步必须是确定的 输输 入:算法有零个或多个输入入:算法有零个或多个输入 输输 出:算法有一个或多个输出出:算法有一个或多个输出 能行性:算法原则上能精确进行能行性:算法原则上能精确进行3.4 程序设计基础57计算机
59、软件系统3.5 软件工程一、软件危机与软件问题一、软件危机与软件问题 1.1.软件危机软件危机 观点观点1 1:软件产品的生产总是超出预算:软件产品的生产总是超出预算, ,落后于进度表,而且产品质量不可靠。落后于进度表,而且产品质量不可靠。 观点观点2 2:在软件的开发和维护过程中所:在软件的开发和维护过程中所遇到的一系列严重问题。遇到的一系列严重问题。 软件的生产过程不像硬件那样规范,受人的因素和软件的生产过程不像硬件那样规范,受人的因素和外界影响很大,因此在软件生产的各阶段都会引入不同外界影响很大,因此在软件生产的各阶段都会引入不同程度的错误,致使成本上升,甚至导致软件失败。程度的错误,致
60、使成本上升,甚至导致软件失败。58计算机软件系统 2. 2.软件危机的表现软件危机的表现n软件开发和维护费用急剧上升软件开发和维护费用急剧上升n不重视文档资料不重视文档资料n产品质量不可靠产品质量不可靠n软件产品成本高于硬件产品软件产品成本高于硬件产品3.5 软件工程59计算机软件系统 3. 3.软件开发中的问题软件开发中的问题n软件生产技术进展缓慢软件生产技术进展缓慢n软件成本和质量难以控制软件成本和质量难以控制n对软件开发的错误认识对软件开发的错误认识n难以准确、全面把握用户需求难以准确、全面把握用户需求n不重视阶段审查和复审不重视阶段审查和复审n软件复杂且规模庞大软件复杂且规模庞大n软件
61、维护费用上升软件维护费用上升3.5 软件工程60计算机软件系统二、软件工程与开发准则二、软件工程与开发准则 1.1.软件工程概念软件工程概念 软件工程软件工程:在软件开发与维护过程中采:在软件开发与维护过程中采用工程的原理、方法、技术并使用正确的管用工程的原理、方法、技术并使用正确的管理方法来指导软件生产的全过程。理方法来指导软件生产的全过程。 主要内容主要内容:软件开发方法:软件开发方法 软件过程软件过程 软件工具软件工具3.5 软件工程61计算机软件系统 2. 2.软件开发的基本准则软件开发的基本准则 B.W.BoehmB.W.Boehm综合各方意见,于综合各方意见,于19831983年提
62、年提出了软件工程的基本准则。出了软件工程的基本准则。n严格阶段管理严格阶段管理n坚持阶段评审坚持阶段评审n加强产品控制加强产品控制n采纳新技术采纳新技术n产品结果应能审查产品结果应能审查n开发人数要适当开发人数要适当3.5 软件工程62计算机软件系统三、软件生命周期三、软件生命周期 软件生命周期是从时间的角度出发,从软件生命周期是从时间的角度出发,从软件目标的提出、定义、开发、维护,直到软件目标的提出、定义、开发、维护,直到最终被丢弃的整个过程。最终被丢弃的整个过程。 计划时期计划时期开发时期开发时期运行时期运行时期 1.1.计划时期计划时期 问题定义问题定义:提出软件项目的目标和规模:提出软
63、件项目的目标和规模 可行性研究可行性研究:对项目进行可行性调研和:对项目进行可行性调研和论证,确定项目是否能或者值得开发论证,确定项目是否能或者值得开发3.5 软件工程63计算机软件系统 2. 2.开发时期开发时期 开发时期要具体分析、设计和实现计划开发时期要具体分析、设计和实现计划时期定义的软件。时期定义的软件。 需求分析需求分析:做什么:做什么 概要设计概要设计:建立目标系统的总体结构:建立目标系统的总体结构 详细设计详细设计:怎样做:怎样做 编码编码:选择程序设计语言进行描述。:选择程序设计语言进行描述。 测试测试:单元测试、综合测试、确认测试:单元测试、综合测试、确认测试和系统测试或者验收测试。和系统测试或者验收测试。3.5 软件工程64计算机软件系统 3. 3.运行时期运行时期 交付使用交付使用维护工作维护工作 维护的主要任务维护的主要任务:通过各种必要的维护:通过各种必要的维护活动延长系统的生命周期。活动延长系统的生命周期。四、软件开发模型四、软件开发模型 1.1.瀑布模型瀑布模型 2. 2.原型模型原型模型 3. 3.螺旋模型螺旋模型 4. 4.面向对象开发模型面向对象开发模型3.5 软件工程65