第四章-软件技术基础_第1页
第四章-软件技术基础_第2页
第四章-软件技术基础_第3页
第四章-软件技术基础_第4页
第四章-软件技术基础_第5页
免费预览已结束,剩余74页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 软件技术基础,大学计算机基础教程,2,本章主要内容,计算机软件概述 程序设计语言 算法与数据结构 软件工程基础,4.1 计算机软件概述,软件的基本概念 软件的特性 软件的分类,4,计算机系统硬件软件,软件基本概念,5,软件、硬件和用户的关系,硬件的能力非常有限,只是速度极高而已 没有软件,硬件几乎什么任务也完成不了,软件基本概念,6,软件进行信息处理的特点,不同的软件,完成不同的任务,同一软件处理不同的数据,完成不同的任务,软件基本概念,7,什么是程序,程序是告诉计算机做什么和如何做的一组指令(语句),这些指令(语句)都是计算机能够理解并能够执行的一些命令 程序的特性: 用于完成某一确

2、定的信息处理任务 使用某种计算机语言描述如何完成该任务 预先存储在计算机中,启动运行后才能完成任务,软件基本概念,8,程序与数据的关系,数据: 程序处理的对象(输入数据)、处理过程中使用的参数及最后结果(输出数据),数据与程序的关系 输入数据必须正确合理程序才能得到有意义的输出结果 程序与数据有相对性:即一个程序在另一场合可能是另一个程序所处理的数据,软件基本概念,9,什么是软件,计算机软件(Computer Software): 一般指设计成熟、功能完善、具有某种使用价值且有一定规模的程序 软件组成程序、相关数据及相关文档 程序是软件的主体 数据指的是程序运行过程中处理的对象和必须使用的一些

3、参数(如三角函数表、英汉词典等) 文档指的是与程序开发、维护及操作有关的一些资料(如设计报告、维护手册和使用指南等),软件基本概念,10,程序与软件的关系,软件强调的是产品、工程、产业或学科等宏观方面的含义 程序更侧重技术层面的含义 软件和程序本质上相同,在不会发生混淆的场合,软件和程序两个名称经常混用,并不严格加以区分,软件基本概念,11,软件与软件产品,软件与软件产品: 软件产品是商业开发的结果。 软件产品是软件本身(一个或一组程序、相关数据及说明文档)及装载软件的载体(光盘或磁盘)和必要文本构成,又称软件包。 软件的知识产权 软件的知识产权受著作权法和计算机软件保护条例的保护。 软件许可

4、证:是一种法律合同,确定用户对软件的使用方式。,软件基本概念,12,软件的特性,不可见性:软件是无形的不能直观、评价 适用性:软件应适应一类应用问题的需要 依附性:软件要依附于一定的环境(软硬件、网络) 复杂性:软件规模趋大,结构趋复杂,软件基本概念,13,软件的复杂性 举例,程序规模:Windows XP源程序约有5000万行 人员队伍:Vista及新版Office 2007两个团队开发设计成员总共9000余人 资金投入:微软为Vista投入90亿美元,包括Vista未来的配套及合作伙伴的投入,预计在180亿美元以上,如果加上新版Office的成本,投入资金在240亿270亿美元之间 开发周

5、期:Vista的开发经历6年,发布时间一拖再拖,软件基本概念,14,软件的特性,无磨损性:不会有损耗或老化,只要环境不变理论上可永远使用 易复制性:容易无失真复制,盗版方便 不断演变性:不停升级 1989年Word 1.0 1997年推出Word 97 2000年推出Office 2000 2003年 Office 2003 最新版本是Office 2007,软件基本概念,Windows版本演变,15,软件的特性,有限责任:软件无法保证完全无错 脆弱性:容易被修改和破坏 例:黑客攻击、病毒入侵、信息盗用,软件基本概念,16,软件的分类,17,从用途对计算机软件分类,系统软件 与具体的应用领域无

6、关 与计算机硬件系统有很强的交互性 给用户使用计算机提供方便 给应用软件的开发与运行提供支持 任何计算机系统中,系统软件都是必不可少的,应用软件 专门用于帮助最终用户解决各种具体应用问题的软件 分类(按开发方式): 定制应用软件 通用应用软件 几乎所有领域、所有人都需要使用 设计精巧,易学易用 商品化,价格较低,18,软件的分类,系统软件举例: 基本输入/输出系统(BIOS) 操作系统(如Windows、Unix、Linux等) 程序开发工具与环境(如C语言编译器等) 数据库管理系统(DBMS) 实用程序(Utility,如磁盘清理程序、备份程序、杀毒软件、防火墙等) 购买计算机时,厂商通常会

7、给用户提供一些最基本系统软件,否则计算机无法工作,19,最重要的系统软件,操作系统(OS) 包括各种实用程序(如磁盘清理程序、备份程序、杀毒软件等) 功能上也包含BIOS在内 程序设计语言处理系统 编译器 解释器 汇编程序(汇编器) 开发工具与平台 数据库管理系统(DBMS),20,常用通用计算机软件类别,21,软件的分类,从软件知识产权分类 商品软件 付费软件,受软件许可证保护 共享软件 买前免费试用软件,通常有功能或时间限制,允许拷贝和散发(但不可修改),过了试用期若还想继续使用,就得交一笔注册费,成为注册用户 自由软件 完全免费,可随意拷贝、修改源代码,允许销售和自由传播,且所有修改必须

8、公开还必须允许此后的用户享有进一步拷贝和修改的自由,软件基本概念,4.2 程序设计语言,程序设计语言的分类 语言处理程序 常见程序设计语言,23,程序设计语言,程序设计语言与语言处理程序,程序设计语言 一种人与计算机都能理解的语言,用于实现人与计算机之间的通信 程序员使用程序语言编写程序以通知计算机需要完成什么任务及怎样完成任务,计算机将按程序规定完成任务。,24,程序设计语言使人能与计算机交流,25,计算机中使用的语言,程序设计语言:主要用于描述算法 机器语言、汇编语言、高级语言 数据描述语言(文档规范、文件格式): 主要用于描述数据(文档、音乐、图形、图像、视频等)的结构和格式 例:HTM

9、L、XML、MIDI、MP3、OpenGL、JPEG、MPEG、 脚本语言 VBA、VBScript、JavaScript,程序设计语言,26,计算机中使用的语言,计算机通信语言(通信协议): 用于描述计算机-计算机之间的会话(请求-应答)的语法和语义 HTTP、POP3、SMTP、 FTP、TCP、IP、 数据库语言: 用于数据操作,如SQL语言,程序设计语言,程序设计语言的分类,机器语言 汇编语言 高级程序设计语言,28,特点:直接用指令形式编程序,是唯一能够被计算机直接执行的程序 优点:效率高 缺点:难读难编,不易维护,兼容性差 例:求 1055 ( 383 + 545 ) 的程序(16

10、进制): B8 7F 01 传送指令 将操作数383送寄存器 BB 21 02 传送指令 将操作数545送寄存器 03 D8 计算指令 相加 B8 1F 04 传送指令 将操作数1055送寄存器 2B C3 计算指令 相减,程序设计语言,机器语言,29,例:机器语言程序,在MIPS计算机上求最大公约数(GCD)的机器程序(16进制表示),本计算机每条指令均为32个二进位,用8个16进制数表示,现在已不直接用机器语言编制程序!,30,特点: 使用容易理解和记忆的英文符号助记符来表示指令的性质和功能。 必须由汇编程序翻译成机器语言才能执行 优点:程序相对容易理解,效率较高 缺点:通用性较差,大型程

11、序难以开发 上例:求 1055 ( 383 + 545 ) MOV AX 383 MOV BX 545 ADD BX AX MOV AX 1055 SUB AX BX,汇编语言,助记符,程序设计语言,31,高级语言,特点:与人类的自然语言及数学公式较为接近 如:+、-、*、/表示加减乘除,PRINT表示打印等 优点:不依赖于具体的机器,通用性较强。 缺点:不能被计算机直接识别,需要翻译成机器指令。 上例:求 1055 ( 383 + 545 ) s = 1055 ( 383 + 545 ) 意义:使程序设计的难度降低,导致了计算机的发展进入新的阶段,程序设计语言,32,高级语言源程序均由四种基

12、本成分组成 数据成分: 描述程序要处理的相关数据对象 运算成分 描述对数据对象的运算或操作 控制成分 描述程序的构造和决定程序的执行流程 传输成分 描述程序运行时初始数据的输入操作和程序产生的结果数据的输出操作 其中最重要的是数据成分与控制成分,高级语言的基本成分,程序设计语言,33,数据成分: 数据:程序操作的对象 数据属性: 数据类型:说明数据在内存中的存放空间和存放方式 数据结构:数据的组织方式 基本型:只有一个数据 构造型:一组数据按一定方式组织为一个整体 作用域:数据的使用范围,高级语言的基本成分,程序设计语言,34,控制成分: 控制成分的作用是为程序提供一个基本框架以便将数据和对数

13、据的运算组合成程序 程序的基本控制结构: 顺序结构选择结构重复结构,高级语言的基本成分,程序设计语言,35,语言处理程序,作用: 把用软件语言(包括汇编语言和高级语言)编写的各种程序变换成可在计算机上执行的程序,或最终的计算结果,或其他中间形式。 分类: 翻译程序:语言处理程序的主体 正文编辑程序:用于建立和修改源程序文件 连接编辑程序:将多个分别编译或汇编过的目标程序和库文件进行组合 装入程序:将目标程序装入内存并启动执行,程序设计语言,36,翻译程序,翻译程序: 把甲语言编写的程序翻译为等价的乙语言编写的程序 其中甲语言程序称为源程序,乙语言程序称为目标程序,语言处理程序,37,翻译程序,

14、翻译程序分类: 汇编程序用于转换汇编语言程序。 以下两种均用于高级语言程序: 解释方式由解释程序对源程序逐句解释并执行 编译方式先由编译程序将源程序转换成目标程序,再由连接程序连接生成可执行程序后再执行,语言处理程序,38,解释方式(相当于口译 ),高级语言源程序,最后结果,逐句解释并执行,高级语言解释方式,优点: 算法简单 修改和调试方便 缺点:运行效率低 典型代表BASIC、VB、JAVA,解释程序,语言处理程序,39,编译方式(相当于笔译),高级语言 源程序,目标程序 (.OBJ),可执行程序 (.EXE),编译程序,连接程序,库文件,高级语言编译方式,优点: 效率高,运行速度快 可实现

15、多个源程序联合程序 可执行程序可独立运行。 缺点:实现算法较为复杂 典型代表:C+、FORTRAN等,语言处理程序,40,BASIC:初学者通用符号指令代码。简单易学利于普及。 FORTRAN:公式翻译语言。主要用于科研和工程计算。 PASCAL : 典型结构化程序语言,适合于教学和编写 系统软件。 Delph :在PASCAL基础上发展出的面向对象的编程语言。 C 和C+ :综合了高级和低级语言的优点又称为中级语 言。特点:简洁灵活,执行效率高。即可用 于科学计算,也可用于编写系统软件。 Visual Basic、Visual C :BASIC和C 的改进版,用于在 WINDOWS环境下编程

16、。 JAVA:跨平台分布式语言,适用于网络软件开发。 LISP (符号操作和表处理)和PROLOG (逻辑编程语言 ) :均主要用于人工智能领域 MATLAB:用于数值计算,常见高级语言,4.3 算法与数据结构,算法 数据结构,4.3.1 算法,算法的定义 算法的设计 算法的表示 算法的评价,43,算法和计算机软件理论基础,程序意义: 用特殊程序语言描述解题对象和解题步骤。 数据算法 传统理论:程序 = 数据结构+算法,算法与数据结构,44,算法定义,算法解决问题的方法和步骤 例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢?,算法,分析

17、: 方法明确而有序 按提供的条件进行操作 任何人均可仿照进行(共享智能),45,计算机求解问题的步骤,确定并理解问题; 寻找解决问题的方法与步骤,并将其表示成算法(Algorithm) ; 使用某种程序设计语言描述该算法(编程), 并进行调试; 运行程序,获得问题的解答; 进行评估,改进算法和程序,算法,46,实现算法考虑的问题,实现算法考虑的问题: 如何确定算法算法设计 如何表示算法算法表示 如何使算法更有效算法的复杂性设计,算法,47,算法设计,算法的设计方法 由粗到细 由抽象到具体 逐步求精,算法,48,算法设计举例,算法设计举例:对包含n个整数元素的数组A进行升序排序。 算法设计(直接

18、选择法)粗略思路: 从所有整数中选取最小的,交换到第一个数位置上; 从剩下未排整数中选出最小的,交换到已排好序列的最后一个数后面; 反复执行,直到所有整数都放到已排好的序列中。,算法,49,算法设计举例,算法,第一次,粗略思路示意:,第二次,第三次,第四次,第五次,50,算法设计举例,算法设计进一步细化: 把待排序的整数放在一个数组A中,每个整数是数组A中的一个元素:A1, A2, A3, , An 排好序的元素在A的前面部分,无序的元素留在后面,每“循环”一次,有序部分增加1个元素,无序部分减少1个元素 每次“循环”只需在数组的无序元素部分选出最小的数 设:k 为当前无序元素位置,初始:k

19、= 0 j 表示当前搜索位置,初始: j = 1 反复进行n-1次即可得到排序后的结果,算法,A0 A1 A2 A3 A4 A5,51,算法的表示,算法表示方法: 文字说明法,缺点: 容易产生歧义,很难 “精确”地进行表达 叙述冗长,很难清楚地表达算法的逻辑流程 流程图 流程图由符号和箭头构成,描述了算法所执行操作的顺序及执行操作的条件 流程图比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误 伪代码(一种介于自然语言和程序设计语言之间的文字和符号表达工具),算法,52,算法的表示举例,伪代码法: 将原始数据放在数组A中; FOR i = 1 to n 确定Ai 到An中最小整数的位置

20、,设为j ; 交换Ai和j ; i = i +1 ,算法,流程图法,53,根据算法编程,选用一种具体计算机语言编写出相应的程序。 例:用C+语言编写的函数模块sort如下: Void Sort ( int A , int n ) int i, j, t ; /定义变量 for( i = 0 ; i Aj ) k = j; /判断条件 t = Ai; Ai = Ak; Ak = t; /交换变量值 ,算法,54,算法评价,算法评价指判断算法的好坏 正确性 占用的计算机资源 时间代价指程序运行耗费的时间 空间代价指程序运行时所占存储空间的大小,常用空间复杂度表示 注意: 时间和空间代价经常是矛盾的

21、,需要根据具体情况找到平衡点 理解度、调试和测试的方便度等,算法,55,算法小结,算法无处不再 例1:Word如何在文档中查找用户指定的词语? 例2:EXCEL中如何将表格内容排序? 例3:如何把彩色图片转换为灰度(黑白)图片? 例4:如何在硬盘中找到用户指定的文件? 例5:媒体播放器如何把MP3文件转换成动听的音乐? 例6:搜索引擎如何找到用户需要的网页?,算法,56,算法的通用性,算法所解决的是一类问题而不是一个特定的问题,例如 排序(sort) : 包括表格内容的排序,文件夹中文件的排序等 排序方式也可以按数字、文字或日期等排序 查找(search): 可以在文档中查找某个单词或在硬盘中

22、查找某个文件,也可在Web上查找某个网页等等 开发计算机应用的核心是:根据实际问题给出解题的算法,然后再将该算法在计算机上实现(即开发成为软件),算法小结,57,算法小结,算法的设计过程 问题分析:理解和确定问题 设计算法:寻找解决问题的方法与规则,并将其表示成算法 方法:文字说明、流程图、伪代码 编程:使用程序设计语言进行编程 测试与运行程序: 算法评估:算法的效率评价,算法,58,算法小结,算法的目的:完成某个特定的信息处理任务 算法的基本要求 确定性:运算操作必须清楚明确,无二义性 能行性:运算必须在计算机能力范围内可以运行 有穷性:算法必须在有限步后终止 输入:有0多个输入,包括外界输

23、入和初始化 输出:至少有一个输出 其他: 正确性、可读性、健壮性、高效率与低存储量需求,算法,4.3.2 数据结构,数据的逻辑结构 数据的存储结构 数据的运算,60,数据结构的概念,算法(程序) 由2个部分组成: 进行的操作 所涉及的操作对象(数据),61,数据结构的概念,数据结构 研究如何在计算机中表示被处理的对象及对象之间的关系,即如何组织数据。例如: 选择排序中,未排序整数和已排序整数如何表示? 排序算法中,排序的对象若不是整数而是姓名如何表示?是文件夹中的文件名又如何表示?是表格中的“行”又如何表示? Windows操作系统中菜单如何表示?对话框如何表示?窗口如何表示? 计算机下棋时,

24、棋盘和棋局如何表示?,62,算法与数据结构,精心设计的数据结构可使算法获得更高的时间效率或空间效率 研究数据结构一般包括三个方面的内容: 数据的逻辑结构:数据间关系的描述 数据的存储结构:逻辑结构在存储器上的实现 在数据上定义的运算,数据结构,63,数据的逻辑结构,数据的逻辑结构 即数据结构中包括哪些元素,相互之间的关系等 例:学生情况描述表线性表结构,数据结构,64,数据的逻辑结构,常见数据逻辑结构,数据结构,65,数据的存储结构,数据的存储结构 数据的存储结构实质上是其逻辑结构在计算机存储器上的实现 包含内容: 数据元素自身值 数据元素之间关系 例:“线性表”结构用“结构体”存储结构描述,

25、数据结构,.,head,66,数据的运算,数据的运算 定义: 定义在数据结构上的一组运算(操作)及其实现方法 常用运算: 检索、插入、删除、更新、排序等。,数据结构,.,.,67,数据结构的定义,数据结构的定义 传统程序设计中用数据类型定义数据结构。 一个数据基本型(实型、整型) 一组数据构造型(数组的、线性表) 新型程序设计将数据的逻辑结构和它的运算操作放在一起定义,并封装成一个整体,称为“对象”面向对象的程序设计,数据结构,3.4 软件工程基础,69,软件工程基础,软件危机 : 大型软件系统开发成本高,可靠性差,甚至有时人们无法管理自身所创造出来的这个复杂逻辑系统,致使软件的生产和维护出现

26、了很大的困难,当时人们称此为“软件危机” 软件危机产生的主要原因: 对软件需求分析的重要性认识不够 软件不是物理产品而是一种逻辑产品 问题的复杂度增加,软件工程,70,软件工程基础,软件工程(Software Engineering) 以工程化的方式组织软件开发。 软件工程方法要点: 软件开发技术:软件开发规范化和工程化,对开发中的策略、原则、步骤和文档做出规定. 软件工程管理:对软件生产中重要环节,按计划、进度执行,实现预期的社会和经济效益. 软件开发方法:主要有:生命周期方法、原型法以及面向对象的分析设计方法等。 软件开发工具:采用软件开发工具和环境,保证 软件开发各个阶段任务的完成。,软件工程,71,软件工程基础,软件工程研究内容: 软件开发技术 软件开发方法 软件开发工具 软件开发环境软件开发工具的集合 软件工程管理 软件开发管理 软件心理学 软件工程经济学,软件工程,72,软件工程基础,软件定义期 对用户的环境、目标等状况进行调查,根据系统需求做出分析和预测 给出拟建系统的初步方案和项目开发计划,写出可行性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论