计算机软件技术基础主讲:刘海明Email:hmliu@scut.edu.cnOffice:三号楼210第2页关于本课程选修课、双语课(2学分)英文教材、中英文课件(PPT),中文讲述基础理论课以理论介绍为主,辅以适当的实例讲解和实用技术介绍;目的:学习软件技术的基本概念、基本原理,作为将来深入学习、研究和应用的基础。学完这门课,我就会编程、能够开发软件了吗?第3页课程内容和学时安排课程内容学时数主要学习内容1.概述3软件技术简介2.数据结构与算法151、数据的逻辑结构、存储结构和定义在存储结构上的运算;2、查找和排序算法3.操作系统原理9操作系统概念及其主要功能的实现原理4.数据库系统9关系型数据库、SQL语言应用以及数据库应用程序的开发合计36详细课时安排见另一文档第4页教材英文教材:数据结构与程序设计——C++语言描述(影印版),RobertK.Cruse等编,高等教育出版社操作系统概念(第六版影印版),AbrahamSilberschatz编,高等教育出版社数据库系统概念(第四版影印版),AbrahamSilberschatz编,高等教育出版社中文参考教材:计算机软件技术导论,庞丽萍等编,高等教育出版社(旧版书名为“计算机软件技术基础”,华中理工大学出版社)其它“计算机软件技术基础”类教材(见下页)第5页其它中文参考教材计算机软件技术基础(第二版),麦中凡等编,高等教育出版社计算机软件技术基础,陈建铎编,高等教育出版社计算机软件技术基础,徐士良编,清华大学出版社计算机软件技术及应用基础,冯萍编,清华大学出版社……第6页教学内容和教材关系三个重要章节对应三本英文教材内容范畴;教材内容节选自三本英文教材(详细内容见另一专门文档),并结合中文教材进行增补和删减,相关知识点难易程度作适当调整;实际教学内容以PPT课件内容为准。请复印节选的英文教材进行阅读和学习。第7页相关知识基础计算机基础编程语言基础(C++)专业英语基础(计算机专业词汇)第8页关于教学方式教学方式:课堂讲授、随机提问、课堂测验、课后作业上机练习课件:Powerpoint讲义;可到学校教务处网页的“教学在线”网站下载课件、作业及其它有关文档;Tips:课堂学习、消化是关键,课堂测验、课后作业是检验、反馈和保证。第9页“教学在线”的使用“华工主页”-“教务处”-“教学在线”(链接在教务处主页左边栏底部)进入;页面左上角登录栏中(如右图),用学号作为帐号和密码登录(首次登录后最好修改个人密码);在同一位置出现欢迎窗口时点击“进入”按钮进入“教学在线”平台(如右下图)。在网页左上方选择“软件技术基础”课程可进入本课程教学资源网页,所有课件、作业及相关文档均放在“教学材料”目录下。第10页关于课程考核总评成绩=平时成绩(20%)+考试成绩(80%)平时成绩:考勤、课堂测验、课后作业课堂测验:课堂完成、即时提交,即时讲解。作业(2~3次):纸版,课后独立完成,按时提交,批改后再安排课时讲解。注意:测验内容、答案及作业答案均不下发!考试成绩=卷面成绩×80%考试方式:闭卷考试作业和测验题型及知识点50%为英语题型(其中至少一半要用英文作答)缺勤一半以上或缺交作业半数以上者取消考试资格!计算机软件技术基础第1章软件技术概述第12页第1章软件技术概述1.计算机系统2.软件技术概述2.1程序设计语言2.2数据结构与算法2.3操作系统2.4数据库技术2.5软件工程2.6软件开发方法第13页学习内容和学习目标了解软件技术所涵盖的主要分支及其研究内容;学习和掌握软件、程序、软件工程、软件生命周期等基本概念。第14页1.计算机系统什么是计算机?计算机是接收、处理和提供数据的装置,它由硬件和软件两大部分组成。计算机就是我们平时常用的PC机吗?PC机只是计算机的一种,计算机家族中还有很多其他的成员。第15页养在深闺的巨型计算机超过100万个处理器每个处理器每秒可运算10亿次,运算能力相当于击败国际象棋世界级棋手的超级电脑“深蓝”的1000倍;占地达两个篮球场之大,重达106吨。IBM的BlueGene/L巨型计算机国产银河、曙光第16页无处不在的嵌入式家族第17页第18页(1)计算机硬件及其发展什么是硬件?硬件是组成计算机系统的所有电子的、机械的、磁性的、光学的装置和部件。配置一台个人计算机需要购买哪些东西?CPU、内存、硬盘、主板、键鼠、显示器…冯·诺依曼:1945年,“存储程序式计算机”5大部件构成:运算器+控制器+存储器+输入设备+输出设备CPUIO设备第19页计算机硬件的发展发展历史逻辑元件:电子管→晶体管→集成电路发展规律及特点速度慢→速度快体积大容量小→体积小容量大外设少、简单→外设繁多、复杂外设速度发展慢于CPU速度的发展摩尔定律(假设价格保持不变,处理器芯片上的晶体管数每18个月翻一番)第20页世界上第一台电子计算机ENIAC诞生于1946年18800个晶体管70000个电阻器18000个电容器5百万个焊接点重量30吨耗电174千瓦/h5000次加法/s第21页PentiumIV(2000)42,000,000个晶体管时钟频率1.5GHz运算速度为1700MIPS(MIPS代表‘百万指令集每秒’)第22页双核处理器(2005)IntelPentium双核处理器AMDAthlon64X2双核处理器第23页三核、四核、六核处理器AMD三核处理器Intel四核处理器AMD六核处理器Intel六核处理器第24页(2)计算机软件软件=程序?开发软件=写程序?认识的误区!程序只是软件的一个组成部分;写程序只是软件开发的过程中的一个步骤。软件是程序、数据以及有关文档资料的集合。软件是(可运行的)思想和内容的数字化思想:算法、规律、方法→程序内容:图形、图像、数据、声音、文字等→数据第25页软件的两方面含义个体含义,表示计算机系统中具体的程序、数据和有关文档,例如操作系统软件“WindowsXP”,是从个体含义上讲的;整体含义,它相对于硬件而言,是对计算机系统中所有程序、数据及相关文档的概括。第26页软件的静态和动态属性软件有两种属性:静态属性:它由程序、数据及相关文档组成,可以存储,也可供人们阅读和交流;动态属性:它是可运行的,蕴涵着一定的操作内容和步骤,由计算机执行而产生特定的结果或动态效应。第27页软件的特征从软件的属性来看,它是一种特殊的事物,具有自身的特性,可概括如下:(1)智能性(6)依附性(2)无形性(7)非损性(3)抽象性(8)复制性(4)系统性(9)演化性(5)泛域性第28页软件的分类所有的硬件都是相似的,软件则各有各的不同。但是软件的开发过程存在很多规律和共性,找到并利用这些规律来帮助和指导软件的开发,这正是各类软件技术所研究的内容。操作系统、语言编译器、数据库管理系统文字处理软件、财务软件、用户自己开发的软件等硬件系统软件应用软件用户第29页常见软件介绍1.操作系统操作系统是对硬件的首次扩充,它管理着计算机系统的软、硬件资源,其它软件都是在操作系统的基础上运行的。2.数据库管理系统信息管理是计算机的一个重要应用领域,而信息管理的核心就是数据库管理系统。3.群件系统群件拓宽了电子邮件的内涵,涵盖很多通信协调功能,如制定会议的计划、共享项目进度表等。第30页4.办公软件组件文字处理软件、电子表格处理软件、演示制作软件、个人数据库、个人信息管理软件等。5.多媒体处理软件多媒体处理软件主要包括图形、图像处理、动画制作、音频视频处理、桌面排版等。6.程序开发工具环境集成的环境中,包含了语言编辑器(有的还包括界面和外观的编辑)、调试工具、编译工具、运行工具、图标图像制作工具等。第31页7.Internet工具软件主要有Web服务器软件,Web浏览器,文件传送工具、远程访问工具、邮件软件、新闻阅读工具、信息检索、多媒体、Web页创作工具等。8.系统工具软件帮助操作系统更有效地完成系统的管理和维护。包括杀病毒软件、文件压缩、快速复制工具、磁盘维护与诊断工具、实用工具软件等。9.其它一些常见软件学习、游戏软件、电子字典、各种小工具软件第32页(3)硬件与软件的关系软硬件独立原理和互动原理独立原理:软件理论上能实现的功能本质上与硬件是独立的(不管硬件是何种形式)互动原理:软件实际能实现的功能受制于硬件,硬件发展一个台阶,软件就能前进一大步软硬件等效定律简单的硬件+复杂的软件简单的软件+复杂的硬件最终都可以完成同一个任务,不同的只是开发时间和成本!第33页硬件是计算机系统的物质基础;软件是提高计算机系统效率和方便用户使用计算机的程序扩展;它们二者相互依赖、相互促进、共同发展。好的软件能充分发挥硬件的性能,提升计算机的价值。各类软件技术的最终目的就是设计出好的软件,以便最大限度地合理利用和发挥硬件的能力,使计算机系统更好地为用户服务。“没有软件的硬件是僵尸,没有硬件的软件是幽灵”第34页2.软件技术概述软件技术发展历程(1)程序设计时代(1946年~1955年)以硬件为中心,编程处于从属地位(2)软件行业化时代(1955年~1970年)程序需求增加;软件概念的提出;软件行业诞生(3)软件工程时代(1970年至现在)软件危机;软件工程领域的出现第一代软件技术:模块化、自顶而下结构化设计第二代软件技术:软件测试方法、技术、原理、理论第三代软件技术:软件需求定义技术软件开发集成环境——第四代软件技术?第35页软件技术的研究领域软件本质上是一种思想:利用计算机来解决某个问题的思想!软件的实现就是将这个思想数字化的过程!在这个过程中要用到各种各样的软件技术,有的是抽象的指导理论,有的是具体的实现工具。程序设计语言编译技术软件及实现技术操作系统及实用程序计算机数据库技术软件技术软件工具软件工程软件开发方法与技术程序设计方法数据结构和算法第36页2.1程序与程序设计语言程序:是使计算机完成某种任务的一组有序命令(指令语句)的集合。程序设计语言发展的三个阶段:机器语言→汇编语言→高级语言写程序就像写文章,要解决两个问题:1.明确自己要表达的是什么2.用一种语言把它表达出来程序设计语言是编写计算机程序所用的语言。第37页程序设计语言机器语言是机器指令的集合,其代码由0、1组成的二进制串表示,不需翻译可直接为机器所接受。汇编语言为符号化的机器语言。它用助记符和标识符代替机器指令的操作码和地址码。高级语言是一种与具体的计算机指令系统无关、独立于计算机类型、且表达方式接近于自然语言或数学语言、容易被人们掌握和书写的语言。如C,Pascal,java等。第38页举例任务:x+1→x机器语言001111100000100100111111B或3E093FH汇编语言MOVAX,XINCAXMOVX,AXC语言x=x+1或x++或++x第39页高级语言的优点比机器语言或汇编语言更易于学习;程序更易于编写和调试(程序更为短小;记号本身更自然,因此更多注意力可放在程序逻辑而非语法细节上);程序可读性更强;较好的平台无关性;上述原因使得解决问题的时间和成本减少。第40页语言翻译翻译程序是把甲种语言程序翻译为等价的乙种语言程序的程序。其中,甲种语言称为源语言。乙种语言称为目标语言。汇编程序若源语言是汇编语言,目标语言是机器语言,则该翻译程序被称为汇编程序。编译程序若源语言是高级语言,目标语言是汇编语言或机器语言,则该翻译程序被称为编译程序。解释程序是翻译程序的另一种形式,它对源程序的语句边解释边执行,不产生目标程序。第41页2.2数据结构与算法程序中往往要处理大量的数据,这些数据采用什么样的方式来组织、存放才能最大限度地方便应用处理,提高程序效率呢?数据结构研究数据的组织形式,包括数据的逻辑结构、物理结构以及在该数据结构上所施加的运算。数据结构是算法设计的基础。第42页算法