计算机基础B_软件工程与数据库技术基础知识_第1页
计算机基础B_软件工程与数据库技术基础知识_第2页
计算机基础B_软件工程与数据库技术基础知识_第3页
计算机基础B_软件工程与数据库技术基础知识_第4页
计算机基础B_软件工程与数据库技术基础知识_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

1、 第九章 软件工程与数据库技术基础第15讲l目的要求目的要求 使学生掌握软件工程与数据库技术基础知识使学生掌握软件工程与数据库技术基础知识l教学重点教学重点 软件工程、数据库和数据结构的基本概念软件工程、数据库和数据结构的基本概念l教学难点教学难点 关系型数据库关系型数据库 ,算法,排序与查找,算法,排序与查找l教学课时教学课时 4课时课时l教学方法教学方法 课堂讲授课堂讲授2课时,上机课时,上机2课时课时l教学内容教学内容 第九章 软件工程与数据库技术基础第九章 软件开发与信息处理技术p 软件工程基础软件工程基础p 数据库设计基础数据库设计基础p 数据结构与算法数据结构与算法p 程序设计基础

2、程序设计基础p 多媒体技术简介多媒体技术简介 第九章 软件工程与数据库技术基础9.1 软件工程基础 软件的规模大小、复杂程度决定了软件开发的难度,因此,必须采用科学的软件开发方法,采用抽象、分解等科学方法降低复杂度,以工程的方法管理和控制软件开发的各个阶段,以保证大型软件系统的开发具有正确性、易维护性、可读性正确性、易维护性、可读性和可重用性和可重用性 第九章 软件工程与数据库技术基础9.1.1 软件工程基本概念 软件的发展大致分为四个阶段:(如下图)阶段第一阶段第二阶段第三阶段第四阶段程序设计阶段程序系统阶段软件工程阶段(结构化方法发)软件工程阶段(面向对象方法)典型技术面向批处理有限的分布

3、自定义软件多用户实时数据库软件产品分布式系统嵌入“智能”低成本硬件消费者的影响强大的桌面系统面向对象技术专家系统人工神经网络网络计算机 第九章 软件工程与数据库技术基础软件危机和软件工程v软件危机主要表现在:软件危机主要表现在:对软件开发成本和进度的估计常常很不准确,经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求,用户软件不满意的现象经常发生;开发的软件可维护性差、可靠性差v软件工程:软件工程:运用系统的、规范的和可定量的方法开发、运行和维护软件。它包含三个要素: 方法(Methodologies) 工具(Tools) 过程(Procedures) 第九章 软件工程与数据库技术

4、基础软件工程过程和软件生命周期 软件工程过程软件工程过程 软件生命周期软件生命周期 软件生命周期模型软件生命周期模型 软件工程的目标和原则软件工程的目标和原则 软件开发工具与软件开发环境软件开发工具与软件开发环境 第九章 软件工程与数据库技术基础 下图为软件生命周期各阶段的任务:下图为软件生命周期各阶段的任务:时期阶段任务文档软件计划问题定义理解用户要求,划清工作范围计划说明书可行性研究可行性方案及代价需求分析软件系统的目标及应完成的工作需求规格说明书软件开发概要设计系统的逻辑设计软件概要设计说明书详细设计系统模块设计软件详细设计说明书软件编码编写程序代码程序、数据、详细注释软件测试单元测试、

5、综合测试测试后的软件、测试大纲、测试方案与结果软件维护软件维护运行和维护维护后的软件 第九章 软件工程与数据库技术基础图为软件生命周期的瀑布模型和快速原形法模型软件计划需求分析软件设计软件编码软件测试软件维护需求分析快速设计建立模型用户评价模型修改原型生产产品 第九章 软件工程与数据库技术基础软件工程目标和原则目标:目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性并满足用户需求的产品 软件工程理论和技术性研究的内容: 软件开发技术和软件管理技术原则:原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性 第九章

6、 软件工程与数据库技术基础软件开发工具与开发环境软件开发工具:软件开发工具:是为支持软件人员开发和维是为支持软件人员开发和维护活动而使用的软件。护活动而使用的软件。作用:作用:可以帮助开发人员完成一些繁琐的程序编可以帮助开发人员完成一些繁琐的程序编制和调试问题,是软件开发人员将更多的精力和时制和调试问题,是软件开发人员将更多的精力和时间投放到最重要的软件需求和设计上,提高软件开间投放到最重要的软件需求和设计上,提高软件开发的速度和质量。发的速度和质量。 第九章 软件工程与数据库技术基础9.1.2 结构化分析方法p结构化方法(结构化方法(SructuredSructured Methodolog

7、y Methodology):):是计算学科的一种典型的系统开发方法,它采用了系统科学的思想方法,从层次的角度,自顶向下的分析和设计系统。p内容:内容:结构化分析( Sructured Analysis) 结构化设计( Sructured Design) 结构化程序设计(Sructured Program Design) 第九章 软件工程与数据库技术基础软件开发过程p 问题定义问题定义p 可行性研究可行性研究p 需求分析与需求分析方法需求分析与需求分析方法p 结构化分析方法概述结构化分析方法概述p 软件需求规格说明书软件需求规格说明书 第九章 软件工程与数据库技术基础结构化分析方法使用的工具A

8、. 数据流图(数据流图(Data Flow DiagramData Flow Diagram)从数据传递和加工的角度,以图形方式刻画数据流从输入到输出的移动变换过程B. 数据字典(数据字典(Data DictionaryData Dictionary)需对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具C. 加工逻辑描述工具加工逻辑描述工具(常用:结构化自然语言、判定树和判定表) 第九章 软件工程与数据库技术基础9.1.3 结构化设计方法软件设计的基本概念:软件设计的基本概念:是一个把软件需求转化为软件表示的过程,即把分析结果加工为在程序细节上接近于源程序的软件表示(软件描述)软件

9、设计阶段分为:软件设计阶段分为:p 系统的总体设计或概要设计(确定软件系统结构)p 系统的详细设计(进行各模块的具体设计) 第九章 软件工程与数据库技术基础概要设计p概要设计概要设计又称为总体设计,它的任务是确定软件结构p结构化设计方法的基本思想:结构化设计方法的基本思想:采用自顶向下的模块化设计方法,按照模块化原则和软件设计策略,将需求分析得到的数据流图,映射成由相对独立、单一功能的模块组成的软件结构 第九章 软件工程与数据库技术基础概要设计概要设计的图形工具(层次图、HIPO图、软件结构图)软件设计原理软件结构设计原则面向数据流的设计方法(变换流分析设计和事务流分析设计)设计规格说明 第九

10、章 软件工程与数据库技术基础软件结构设计原则提高模块独立性模块规模应该适中模块的深度、宽度、扇出和扇入适当模块的作用域应该在控制域之内降低模块接口的复杂程度设计单入口和单出口模块 第九章 软件工程与数据库技术基础详细设计u任务:为软件结构图中的每一个模块确定实现算法和局部数据结构,并用某种工具描述出来结构化程序设计详细设计工具(程序流程图、盒图N-S图、PAD图)详细设计规格说明 第九章 软件工程与数据库技术基础9.1.4 软件测试一、软件测试的目的与任务一、软件测试的目的与任务目的:目的:确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。任务:任务:测试任务(通过采用一定的测

11、试策略,找出软件中的错误) 调试任务或纠错任务(如果测试到错误,则定位软件中的错误,加以纠正) 第九章 软件工程与数据库技术基础二、软件测试的准则二、软件测试的准则三、软件测试技术与方法综述三、软件测试技术与方法综述 方法:静态测试法 动态测试法 技术:白盒测试用例设计 黑盒测试用例设计 第九章 软件工程与数据库技术基础白盒测试用例设计A、逻辑覆盖、逻辑覆盖 以程序的内部逻辑结构为基础的测试用例设计技术,它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度 根据覆盖的目标,可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、路径覆盖B、基本路径测试基本路径测试 第九

12、章 软件工程与数据库技术基础 黑盒测试用例设计分类:分类: 等价类划分法 边界值分析法 错误推测法 因果图 第九章 软件工程与数据库技术基础四、软件测试的实施四、软件测试的实施 单元测试 集成测试 确认测试 系统测试五、软件测试计划与测试分析报告五、软件测试计划与测试分析报告 测试测试是软件生存周期中的一个独立的关键的阶段 第九章 软件工程与数据库技术基础9.1.5 程序的调试程序调试可以分为:程序调试可以分为:静态调试静态调试(主要通过人的思维来分析源程序代码和排错,是主要的调试手段)动态调试动态调试(是静态调试的辅助)主要的调试方法有: 强行排错法 回溯法 原因排除法 第九章 软件工程与数

13、据库技术基础9.2 数据库设计基础p 数据库概念数据库概念p 数据模型数据模型p 数据库设计与管理数据库设计与管理 第九章 软件工程与数据库技术基础9.2.1 数据库概念数据(数据(DataData)数据处理(数据处理(Data ProcessingData Processing)数据库(数据库(DatabaseDatabase,DBDB)数据库管理系统(数据库管理系统(Database Management SystemDatabase Management System,DBMSDBMS)数据库管理员(数据库管理员(Database AdministratorDatabase Admini

14、strator,DBADBA)数据库系统(数据库系统( Database System Database System ,DBSDBS)数据库应用系统(数据库应用系统( Database Application Database Application SystemSystem,DBASDBAS) 第九章 软件工程与数据库技术基础数据库系统的发展 人工管理阶段人工管理阶段 文件系统阶段文件系统阶段 数据库系统阶段数据库系统阶段(在关于数据库的诸多新技术中,比较重要的三种是: 面向对象数据库系统、知识库系统,以及关系数据库系统的扩充) 第九章 软件工程与数据库技术基础数据库系统的基本功能u 数据

15、定义功能数据定义功能u 数据操纵功能数据操纵功能u 数据库运行控制功能数据库运行控制功能u 数据库的建立和维护功能数据库的建立和维护功能 第九章 软件工程与数据库技术基础数据库系统的基本特点数据的结构化数据的结构化数据的高共享性和低冗余性数据的高共享性和低冗余性数据的独立性数据的独立性数据的统一管理与控制数据的统一管理与控制 第九章 软件工程与数据库技术基础数据库系统的内部结构体系数据库系统的内部结构体系模式:模式:是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有多个实例。数据库管理系统采用三级模式结构: 概

16、念模式 外模式(是概念模式的逻辑子集,也称子模式或用户模式) 内模式(也称存储模式) 并提供二级映像功能 第九章 软件工程与数据库技术基础9.2.2 数据模型k数据模型(数据模型(data modeldata model):):是表示实体类型及实体之间联系的模型k数据模式的三个要素:数据模式的三个要素: 数据结构数据结构 数据操作数据操作 数据的完整性约束条件数据的完整性约束条件 第九章 软件工程与数据库技术基础 数据模型的三个级别:数据模型的三个级别: 概念数据模型概念数据模型 逻辑数据模型逻辑数据模型 物理数据模型物理数据模型 第九章 软件工程与数据库技术基础数据模型的分类p E-R 模型

17、(实体联系模型)模型(实体联系模型) 是直接从现实世界中抽象出实体类型及实体间联系,然后用实体联系图(E-R图)表示数据模型p 层次模型层次模型(若用图表示,它是一棵倒立的树)p 网状模型网状模型(若用图表示是一个网络)是一个网络)p 关系模型关系模型(数据的逻辑结构是一张二维表) 第九章 软件工程与数据库技术基础9.2.3 数据库设计与管理 数据库及其应用系统的数据库及其应用系统的设计步骤:设计步骤:p 用户需求分析p 概念设计p 逻辑设计p 物理设计p 数据库实施p 数据库的维护 第九章 软件工程与数据库技术基础数据库设计的需求分析p 用户的信息要求用户的信息要求p 用户的处理要求用户的处

18、理要求p 对数据的安全性、完整性的要求对数据的安全性、完整性的要求 第九章 软件工程与数据库技术基础数据库的概念设计概念结构设计:概念结构设计:只讲需求分析得到的用户需求抽象为信息结构即概念模型的过程概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。 它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体与实体之间的联系,同时又易于向关系、网状、层次等各种数据模式转换。 第九章 软件工程与数据库技术基础数据库的逻辑设计 逻辑结构设计的步骤:逻辑结构设计的步骤:p将概念结构向一般关系模型转化p将第一步得到的结构向特定的DBMS支持下的数据模型转换p依据应用的需求和具体的D

19、BMS特征进行调整与完善 第九章 软件工程与数据库技术基础数据库的物理设计 确定数据的存储安排确定数据的存储安排 存取路径的选择和调整存取路径的选择和调整 确定系统配置确定系统配置 第九章 软件工程与数据库技术基础数据库管理数据库的管理主要指:数据库的管理主要指: 数据库的实施和维护数据库的实施和维护分三个步骤:分三个步骤: 数据的载入和应用程序的调试 数据库的试运行 数据库的运行和维护 第九章 软件工程与数据库技术基础数据库的维护在数据库运行阶段,对数据库经常性的维护工作主要是由DBADBA完成的。包括: 数据库的存储和恢复 数据库的安全性、完整性控制 数据库性能的监督、分析和改进 数据库的

20、重组织与重构造 第九章 软件工程与数据库技术基础9.3 数据结构与算法 算法算法 数据结构的基本概念及术语数据结构的基本概念及术语 线性表线性表 栈栈 队列队列 树与二叉树树与二叉树 查找与排序查找与排序 第九章 软件工程与数据库技术基础9.3.1 算法p定义:定义:是对特定问题求解步骤的一种描述。或者说,是为求解某问题而设计的步骤序列p特征:特征: 有穷性 确定性 有效性 输入 输出 第九章 软件工程与数据库技术基础算法复杂度评价一个算法优劣的主要标准是: 算法的执行效率与存储需求算法的执行效率与存储需求算法的效率:指的是时间复杂度(Time Complexity)存储需求:指的是空间复杂度

21、(Space Complexity ) 一般情况下,算法中的基本操作重复操作执行的次数是问题规模n的某个函数f(n),算法的时间复杂度记做 T(nT(n)=)=O(f(nO(f(n) 第九章 软件工程与数据库技术基础9.3.2 数据结构的基本概念及术语数据与数据结构数据与数据结构数据数据 是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合数据元素数据元素 是数据的基本元素,即数据集合中的个体数据项数据项 具有独立意义的最小数据单位数据对象数据对象 具有相同特性的数据元素的集合,是数据的子集结构结构 被计算机加工的数据元素之间存在的关系数据结构数据结构 带有结构特

22、性的数据元素的集合 第九章 软件工程与数据库技术基础数据的逻辑结构u 集合集合u 线性结构线性结构u 树形结构树形结构u 图状或网状结构图状或网状结构 第九章 软件工程与数据库技术基础数据的存储结构一、顺序存储结构一、顺序存储结构 主要特点:主要特点:v结点中只有自身信息域,没有连接信息域,因此存储密度大,存储空间利用率高v可以通过计算直接确定数据结构中第i个结点的存储地址Li,计算公式:L0+(i-1)m。(其中L0为第一个结点的存储地址,m为每个结点所占用的存储单元个数v插入、删除运算不便,会引起大量结点的移动 第九章 软件工程与数据库技术基础二、链式存储结构主要特点:主要特点:结点中除自

23、身信息之外,还有表示连接信息的指针域,因此比顺序存储密度小,存储空间利用率低逻辑上相邻的结点物理上不必邻接,可用于线性表、树、图等多种逻辑结构的存储表示插入、删除操作灵活方便,不必移动结点,只要改变结点中的指针值即可 第九章 软件工程与数据库技术基础 数据的运算数据的运算p检索:在数据结构里查找满足一定条件的结点p插入:往数据结构里增加新的结点p删除:把指定的结点从数据结构里去掉p更新:改变指定结点的一个或多个域的值p排序:保持线性结构的结点序列里结点数不变,把结点按某种指定的顺序重新排列 第九章 软件工程与数据库技术基础9.3.3 线性表 线性表线性表是最常用的一种数据结构。线性表的逻辑结构

24、是n个数据元素的有限序列(a1,a2,an)顺序表:顺序表:指用顺序存储结构存储的线性表链表:链表:用链式存储结构存储的线性表栈和队列栈和队列是对线性表的插入、删除运算可以发生的位置加以限制的两种特殊的线性表 第九章 软件工程与数据库技术基础顺序表和一维数组 各种高级语言里的一维数组就是用顺序方式存储的线性表,因此常用一维数组称呼顺序表一维数组称呼顺序表 若顺序表中结点个数为n,则: 插入插入一个结点平均需要移动之结点个数为n/2,算法的时间复杂度是O(n); 删除删除一个结点平均需移动结点个数为(n-1)/2,算法的时间复杂度是O(n) 第九章 软件工程与数据库技术基础链 表线性链表(单链表

25、):删除算法的时间复杂度为O(n),其主要执行时间是搜索删除位置循环链表:指链表的最后一个结点的指针值指向第一个结点,整个链表形成一个环(如下图)结点1结点2结点n 第九章 软件工程与数据库技术基础9.3.4 栈栈:栈:是一种特殊的线性表,是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。空栈:空栈:指表中无元素p 栈中有元素a1,a2,an,如下页图所示,称a1为栈底元素。新元素进栈要置于an之上,删除或退栈先对an进行,即“后进先出后进先出”(LIFOLIFO)的操作原则p 栈的物理存储可以用 顺序存储结构或链式存储结构顺序存储结构或链式存储结

26、构p 栈的运算还有取栈顶元素,检查栈是否为空,清除等。 第九章 软件工程与数据库技术基础栈的插入和删除ABACBABAFEBAATOPTOPTOPTOPTOPTOPana2a1进栈出栈栈底栈结构(3)(1)(2)(5)(4)(6) 第九章 软件工程与数据库技术基础9.3.5 队列队列:队列:是限定所有的插入都在表的一端进行,所有的删除都在表的另一端进行的线性表。进行删除的一端叫队列的头,进行插入的一端叫队列的尾,如下页图所示。 在队列中,新元素总是加入到队尾,每次删除的总是对头元素,即当前“最老的”元素,这就是“先进先出先进先出”(FIFOFIFO)的操作原则队列的物理存储可以用: 顺序存储结

27、构,也可用链式存储结构 第九章 软件工程与数据库技术基础队列的示意(如下图)队列的示意(如下图)出队列出队列 a1 a2 a3 a1 a2 a3 an an 入队列入队列 头头 尾尾 第九章 软件工程与数据库技术基础队列的插入和删除示例初态插入A插入B删除A插入C插入D删除B插入EF FR RAFRRRRRRFFFFFFBABBBCCCCDDD溢出 第九章 软件工程与数据库技术基础9.3.6 树与二叉树树形结构树形结构是一类重要的非线性结构,树和二叉树是最常见的树形结构树(树(TreeTree): :是一个或多个结点组成的有限集合T,有一个特定的结点称为根(Root),其余的结点分为m(m0)

28、个不相交的集合T1,T2,Tm,每个集合又是一棵树,称作这个根的子树(Subtree) 第九章 软件工程与数据库技术基础树形结构的常用术语树形结构的常用术语结点的度(结点的度(DegreeDegree):):一个结点的子树的个数一个结点的子树的个数树的度:树的度:树中各结点的度的最大值树中各结点的度的最大值树叶(树叶(LeafLeaf):度为度为0 0的结点的结点分支结点:分支结点:度不为0的结点双亲(双亲(ParentParent)、子女()、子女(ChildChild):):结点的各子结点的各子树的根称作该结点的子女;相应的该结点称作其树的根称作该结点的子女;相应的该结点称作其子女的双亲子

29、女的双亲兄弟(兄弟(SiblingSibling):):具有相同双亲的结点互为兄具有相同双亲的结点互为兄弟弟结点的层数(结点的层数(LevelLevel)树的深度()树的深度(DepthDepth)森林(森林(ForestForest) 第九章 软件工程与数据库技术基础二 叉 树p二叉树(二叉树(Binary TreeBinary Tree): :是n(n0)个结点的有限集合,这个集合或者为空集(n=0),或者由一个根结点及两棵不相交的、分别称作这个根的坐姿树和右子树的二叉树组成 二叉树不是树的特殊情形,二者的区别:区别: 二叉树为有序树二叉树为有序树p性质:1、在二叉树的i层上,最多有2i-

30、1个结点(i1) 2、 深度为k的二叉树最多有2k-1个结点(k1) 第九章 软件工程与数据库技术基础完全二叉树p一棵深度为k且具有2k-1个结点的二叉树称为满二叉树(满二叉树(Full Binary Tree Full Binary Tree )p深度为k,有n个结点的二叉树,当且仅当其妹一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称为完全二叉树 第九章 软件工程与数据库技术基础树的二叉树表示在树(森林)与二叉树间有一个自然的一一在树(森林)与二叉树间有一个自然的一一对应的关系,每一棵树都能唯一的转换到它对应的关系,每一棵树都能唯一的转换到它所对应的二叉树所对应的二叉树把树

31、和森林转化成对应的二叉树:把树和森林转化成对应的二叉树: 凡是兄弟就用线连起来,然后去掉双亲到子女的连线,只留下道第一个子女的连线不去掉 第九章 软件工程与数据库技术基础二叉树的存储 二叉树的存储通常采用:链接方式链接方式。每个结点除存储结点自身的信息外再设置两个指针域IIink和rlink,分别指向结点的左子女和右子女,当结点的某个指针为空时,则相应的指针值为空(NIL)。 结点的形式为:IIinkIIinkinfoinforlinkrlink 第九章 软件工程与数据库技术基础二叉树的遍历v遍历一个树形结构是指:遍历一个树形结构是指:按一定次序系统按一定次序系统的访问该结构中的所有结点,使每

32、个结点恰好被的访问该结构中的所有结点,使每个结点恰好被访问一次访问一次v前序遍历法(前序遍历法(NLRNLR次序)次序)访问根,按前序遍历左子树,按前序遍历右子树访问根,按前序遍历左子树,按前序遍历右子树v后序遍历法(后序遍历法(LRNLRN次序)次序)按后序遍历左子树,按后序遍历右子树,访问根按后序遍历左子树,按后序遍历右子树,访问根v中序遍历法(中序遍历法(LNRLNR次序)次序)按中序遍历左子树,访问根,按中序遍历右子树按中序遍历左子树,访问根,按中序遍历右子树 第九章 软件工程与数据库技术基础9.3.7 查找查找p 查找:是数据结构中的基本运算p 衡量一个查找运算法的主要标志是: 查找

33、过程中对关节码进行的平均比较次数,或称平均检索长度,以n的函数的形式表示,n是数据结构中的结点个数 第九章 软件工程与数据库技术基础顺序查找顺序查找:顺序查找:是线性表的最简单的查找方法方法:方法:用待查关键码与线性表中各结点的关键码值逐个比较,若找出相等的关键码值则查找成功,若找遍所有结点都不相等,则查找失败优点:优点:对线性表的结点逻辑次序和存储结构无要求缺点:缺点:平均检索长度大假设表中各结点被查找的概率相同,即P=1/n,则顺序查找成功的平均查找长度为平均查找长度为(n+1)/2(n+1)/2 第九章 软件工程与数据库技术基础二分法查找二分法查找:二分法查找:是一种效率较高的线性表查找

34、方法。要进行二分法查找,线性表结点必须是按关键码值排号顺序的,且线性表以顺序方式存储方法:方法:首先用要查找的关键码值与线性表中间位置结点的关键码值相比较,这个中间结点把线性表分成两个子表,比较相等则查找完成,不等则根据比较结果确定下一步的查找应在哪个子表中进行,如此下去,直到找到满足条件的结点优点:优点:平均检索长度小,为 2n。每经过一次关键码比较,则将查找范围缩小一半,因此经过2n次比较就可完成查找过程缺点:缺点:排序线性表花费时间,顺序方式存储插入、删除不便 第九章 软件工程与数据库技术基础9.3.8 排序排序:排序:是数据处理中经常使用的一种运算分类:分类: 直接插入排序直接插入排序

35、 选择排序选择排序 冒泡排序冒泡排序 快速排序快速排序 第九章 软件工程与数据库技术基础A.直接插入排序的基本方法:每步将一个待排序记录按其关键码值的大小插入到前面已排序的文件中适当位置上,直到全部插入为止B.选择排序的基本思想:每一趟在n-i+1(i=1,2,n-1)个记录中选取关键码最小的记录作为有序序列中的第i个记录。它为最简单且为我们最熟悉的排序C.冒泡排序的基本方法:将待排序的记录顺次两两比较,若为逆序,则进行交换D.快速排序:又称分区交换排序,是对冒泡排序的一种改进。 第九章 软件工程与数据库技术基础p快速排序的基本方法:在待排序序列中任取一个记录,以它为基准用交换的发方法将所有记

36、录分成两部分,关键码比它小的在一个部分,关键码值比它大的在另一个部分。再分别对两个部分实施上述过程,一直重复到排序完成p下图为四种排序方法的比较:排序方法排序方法平均时间平均时间最坏情况最坏情况辅助存储辅助存储直接插入排序直接插入排序选择排序选择排序冒泡排序冒泡排序快速排序快速排序O(nO(n2 2) )O(nO(n2 2) )O(nO(n2 2) )O(nO(n 2 2n n) )O(nO(n2 2) )O(nO(n2 2) )O(nO(n2 2) )O(nO(n2 2) )O(1)O(1)O(1)O(1)O(1)O(1)O(O(2 2n n) ) 第九章 软件工程与数据库技术基础9.4 程

37、序设计基础p 程序设计语言发展程序设计语言发展p 程序设计方法与风格程序设计方法与风格p 结构化程序设计结构化程序设计p 面向对象的程序设计面向对象的程序设计 第九章 软件工程与数据库技术基础程序设计指令:指令:能被计算机直接识别与执行的指示计算机进行某种操作的命令,CPU每执行一条指令,就完成一个基本运算。程序:程序:指令的序列即让计算机解决某一问题而写出的一系列指令程序设计:程序设计:编写程序的过程程序设计语言:程序设计语言:用于描述计算机所执行的操作语言 第九章 软件工程与数据库技术基础9.4.1 程序设计语言发展程序设计语言发展p机器语言:机器语言:采用计算机指令格式并以二进制编码表达

38、各种操作的语言p汇编语言:汇编语言:一种符号语言,采用助记符来表达指令功能p高级语言:高级语言:是一种面向问题的语言p第四代语言:第四代语言:是非过程化语言 第九章 软件工程与数据库技术基础9.4.2 程序设计方法与风格 良好程序设计风格的侧重:良好程序设计风格的侧重:p 源程序文档如使用的符号名应具有一定的含义,以便对程序功能的理解;对源程序适当的进行注解,以便读者理解程序;在程序中利用空格、空行、缩进等技巧使程序层次清楚p 对程序中的数据进行适当说明p 程序中的语句结构应该简单直接,语句不复杂化p 要对程序的所有输入数据检查其合法性,检查输入项的各种重要组合的合理性,输入格式要简单,输入允

39、许默认值,输入一批数据后最好使用结束标志,在交互式输入/输出中使用屏幕提示信息格式 第九章 软件工程与数据库技术基础9.4.3 结构化程序设计结构化程序设计 结构化程序设计的原则结构化程序设计的原则u 自顶向下自顶向下u 逐步求精逐步求精u 模块化模块化u 限制使用限制使用GOTOGOTO语句语句 第九章 软件工程与数据库技术基础 结构化程序设计的基本结构与特点结构化程序设计的基本结构与特点 顺序结构:顺序结构:按照程序语句行的自然顺序,按照程序语句行的自然顺序,一条语句一条语句的往后执行程序一条语句一条语句的往后执行程序 选择结构:选择结构:又称分支结构,它根据设定又称分支结构,它根据设定的

40、条件,判断应该选择哪一条分支执行相应的条件,判断应该选择哪一条分支执行相应的语句序列的语句序列 循环结构:循环结构:又称重复结构,它根据给定又称重复结构,它根据给定的条件,判断是否需要重复执行某一相同的的条件,判断是否需要重复执行某一相同的或相似的程序段或相似的程序段 第九章 软件工程与数据库技术基础结构化程序设计的优点自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,可以显著提高软件开发的成功率和生产率可以显著提高软件开发的成功率和生产率先全局后局部、先整体后细节、先抽向后具体的逐步求精过先全局后局部、先整体后细节、先抽向后具体的逐步

41、求精过程开发出的程序有清晰的层次结构,使程序容易阅读和理解程开发出的程序有清晰的层次结构,使程序容易阅读和理解使用单入口单出口控制结构而不使用使用单入口单出口控制结构而不使用GOTOGOTO语句,使得程序的语句,使得程序的静态结构和它的动态执行情况一致静态结构和它的动态执行情况一致控制结构有确定逻辑模式,编写程序代码只限于使用很少几控制结构有确定逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,使源程序清晰流畅,易读易懂而且容易种直截了当的方式,使源程序清晰流畅,易读易懂而且容易测试测试程序清晰和模块化使得在修改和重新设计一个软件时可以重程序清晰和模块化使得在修改和重新设计一个软件时可以

42、重用的代码量最大用的代码量最大程序的逻辑结构清晰,有利于程序正确性证明程序的逻辑结构清晰,有利于程序正确性证明 第九章 软件工程与数据库技术基础9.4.4 面向对象的程序设计 面向对象方法的主要特点:从问题域中客观存在的事物出发来构造软件系从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位此作为系统的基本构成单位事物的静态特征用对象的属性表示,动态特征事物的静态特征用对象的属性表示,动态特征用对象的服务表示用对象的服务表示对象的属性与服务结合为一个独立的实体,对对象的属性与服务结合为一个独立的实体,对

43、外屏蔽其内部细节,称作封装外屏蔽其内部细节,称作封装把具有相同属性和相同服务的对象归为一类,把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类类是这些对象的抽象描述,每个对象是它的类的一个实例的一个实例 第九章 软件工程与数据库技术基础 面向对象方法的主要特点:通过在不同程度上运用抽象的原则,可以得到通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类较一般的类和较特殊的类复杂的对象可以用简单的对象作为其构成部分,复杂的对象可以用简单的对象作为其构成部分,称为聚合称为聚合对象之间通过消息进行通信,以实现对象之间对象之间通过消息进行通信,以实现对象之间的动

44、态联系的动态联系通过关联表达对象之间的静态关系通过关联表达对象之间的静态关系 第九章 软件工程与数据库技术基础面向对象方法的概念 面向对象:面向对象: 面向对象面向对象= =对象对象+ +类类+ +继承继承+ +通信通信 如果一个软件系统是使用这样四个概念设计和实现的,则认为这个软件系统是面向对象的。面向对象的程序的每一组成部分都是对象,计算是通过建立新的对象和对象之间的通信来执行的 第九章 软件工程与数据库技术基础对 象 对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征:静态特征:指可以用某种数据来描述的特征动态特征:动态特征:指对象所表现的行为或对象所具有的功能定义:

45、定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方法构成。属性:属性:用来描述对象静态特征的一个数据项方法:方法:用来描述对象动态特征的一个操作序列 第九章 软件工程与数据库技术基础消息和方法一个系统由若干个对象组成,各个对象之一个系统由若干个对象组成,各个对象之间相互联系、相互作用。间相互联系、相互作用。计算机系统中,消息就是对象之间的纽带,计算机系统中,消息就是对象之间的纽带,是用来通知、命令或请求对象执行某个处是用来通知、命令或请求对象执行某个处理或回答某些信息。理或回答某些信息。消息可以是消息可以是数据流数据流,也可

46、以是,也可以是控制流控制流。一条消息可以发送给不同的对象,而消息一条消息可以发送给不同的对象,而消息的解释则完全由接收对象完成。不同的对的解释则完全由接收对象完成。不同的对象对相同形式的消息可以有不同的解释象对相同形式的消息可以有不同的解释 第九章 软件工程与数据库技术基础类和实例类和对象之间的关系类和对象之间的关系 如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。一个对象又称为类的一个实例(Instance)类也可称作对象的模板(Template) 第九章 软件工程与数据库技术基础继 承 性p定义:定义:特殊类的对象拥

47、有其一般类的全特殊类的对象拥有其一般类的全部属性与方法,称作特殊类对一般类的继部属性与方法,称作特殊类对一般类的继承承p继承关系是传递的继承关系是传递的p继承性对于软件重用有很大益处继承性对于软件重用有很大益处 第九章 软件工程与数据库技术基础封 装 性封装具有两个涵义:封装具有两个涵义:一、是把对象的全部属性和全部方法结合在一起,形成一个不可分割的独立单位(即对象)二、也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系 第九章 软件工程与数据库技术基础多 态 性对象的多态性:对象的多态性: 指在一般类中定义的属性或方法被特殊类继承之后,可

48、以具有不同的数据类型表现出不同的行为。这使得同一个属性或方法名在一般类及其各个特殊类中具有不同的语义 第九章 软件工程与数据库技术基础9.5 多媒体技术简介p多媒体技术的基本概念多媒体技术的基本概念p多媒体计算机系统多媒体计算机系统p多媒体计算机软件系统多媒体计算机软件系统p多媒体信息的数字化和压缩技术多媒体信息的数字化和压缩技术 第九章 软件工程与数据库技术基础9.5.1 多媒体技术的基本概念定义:指信息表示媒体的多样化。定义:指信息表示媒体的多样化。多媒体的类型多媒体的类型感觉媒体感觉媒体 表示媒体表示媒体 显示媒体显示媒体 传输媒体传输媒体 存储媒体存储媒体多媒体技术就是利用计算机把文本、声音、视频、动画、图形和图像等多种媒体进行综合处理,使多种信息建立逻辑连接,集成为一个具有交互性的系统 第九章 软件工程与数据库技术基础多媒体技术的特征 信息载体的多样性信息载体的多样性 交互性交互性 集成性集成性 实时性实时性 第九章 软件工程与数据库技术基础多媒体信息中的媒体元素的类型p 文本(文本(TextText)p 图形(图形(GraphicGraphic)p 图像(图像(ImageIm

温馨提示

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

评论

0/150

提交评论