第6章软件技术
【教学目标】
理解数据结构与算法的基本概念,
了解顺序、选择和循环三种基本控制结构;
理解程序设计与程序设计语言的基
本概念,理解程序设计的基本过程;
了解软件工程的概念,了解软件的
生存周期、开发模型及软件开发过程;
理解数据、信息与数据处理,了解
数据库技术的发展与未来,了解数据库管理系统。
【本章主要内容】
§6.1 计算机程序设计
§6.2 软件开发方法§6.3 数据管理技术
§6.1 计算机程序设计
引入:
通用软件并不能完全满足用户的要求,尤其是一些特殊用途的要求,而且其运行效率会受到很大影响。
为了满足特殊用户需求、提高应用软件的运行效率,针对不同问题、根据具体情况开发专用软件。
程序开发是软件开发的核心。程序开发过程是:建立计算模型设计方法和步骤计算机程序设计编写代码调试程序(即编程)交付使用数据结构程序算法程序设计方法语言工具和环境6.1.1 数据结构的概念
数据是信息的载体数值数据:
•如自然数、整数、实数等;
•特点:结构简单(即数据与数据之间的关系简单),而且数据量小。非数值数据:
•图形、图像、声音等;
•特点:结构复杂,而且数据量普遍较大。
数据结构包含以下两个方面的内容:①表示数据元素的信息;②表示数据元素前驱和后继关系的信息。例:学生成绩表学号20060010200610102006202120062080┆┆姓名张小王红王淘李明┆┆性别男女女男┆┆数学计算机英语888091788572┆┆9075┆┆88┆┆记录(也称为数据元素)数据结构(Data Structure):
按某种逻辑关系组织起来的一批数据,按一定的存储方式把它存储在计算机存储器中,并在这些数据上定义了一个基本运算的集合。包括:逻辑结构:
元素之间的逻辑关系;存储结构:
各数据元素在计算机存储空间中的位臵关系;数据的基本运算
逻辑结构
线性结构:
如线性表,其特征是:有且只有一个开始结点、一个终端结点,其余各结点都有且仅有一个前驱结点、有且仅有一个后继结点。例学生成绩表是一种线性表。非线性结构:
•树形结构特征:有且只有一个开始结点(根);除根以外的其余结点有且只有一个前驱结点,但可以有多个后继结点,并且可以有多个终端结点。例家庭族谱是一种树结构。
•图形结构特征:每个结点的前驱和后继结点的个数都可以是任意的。例公路交通是一种图结构。
存储结构
顺序存储结构其各结点之间的逻辑关系由存储单元的邻接关系来体现。
链接存储结构
每个结点都由两部分组成,一是存储结点的信息,另一个是存储该结点的前驱或后继结点的存储单元的地址(也称为指针),各结点之间的逻辑关系就由这些指针来体现。
一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构。采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,选择合适的存储结构是非常重要的。
6.1.2 算法的概念
计算机算法:是指利用计算机解决该问题所设计的有明确意义的运算步骤的有限集合,简称算法。
当我们编程求解实际问题时,除了要正确分析描述实际问题的数据结构,还要设计一个适合的算法。
算法设计是程序设计的核心任务之一。
6.1.2.1 算法的特性
①有穷性:它是一个有穷的动作序列,且每一步在
有限时间内完成;
②确定性:它的每一步都应是确定的,不能“模棱两可”;
③有效性:它的每一步都应有效地执行,并产生有效和确定的结果;
④输入:它可能有零个输入,或有多个输入;⑤输出:它至少有一个输出,或有多个输出。
6.1.2.2 算法的描述
表示算法的常用方法有:自然语言、伪代码、
流程图(传统、N-S)、IPO图等;自然语言:人们日常使用的语言;
伪代码:介于自然语言与计算机语言之间的算法描述方法;
流程图:(Flow Chart)就是图形化了的算法;
例:写算法,已知圆的半径,求面积。开始算法:1、输入圆的半径r2、利用公式S=3.14*r*r输入半径r计算3.14×r×r3、输出圆的面积输出面积结束用伪代码描述算法
例:输入一个整数,然后将它倒序输出。(如输入12345,输出为54321)a.BEGINb.read x;//输入一个整数给xc.while (x≠0)
{ d=x%10;//x对10取余得x个位上的数write d;//输出d
x=x/10;} //x除以10,并取整d.END
开始用流程图描述算法传统流程图:美国国家标准化协会ANSI 规定的常用流程图符号特点:明确简练、形象直观。s=0i=1x= xis=s+xi=i+1是i≤5否输出s 框 处理理框框 起止框 输入输出框 判判断断框处 ] ↓或→ ] 注释框 流程线 联结点 注释框 结束 这些符号已为世界各国程序设计者普遍采用 6.1.2.3 算法的控制结构
控制结构:即算法中各操作之间的执行顺序。控制结构控制着程序的逻辑走向,因此又称为
逻辑结构;
三种基本结构:顺序、选择、循环;
所有计算机程序都是由三大基本结构组合而成。
顺序结构:计算机按照程序中的顺序依次
处理程序指令。
每个程序都要用到顺序结构。
选择结构:又称为分支结构,是指根据不同
的条件,选择执行不同的操作。
循环结构:又叫重复结构,作用是反复执行某一个操作序列(循环体)。当指定的条件满足时,就执行循环体,否则就结束执行。当型循环执行循环直到指定的条件不满足为止。直到型循环6.1.2.4 算法的设计例:请设计求3~5000之间的所有质数的算法。分析:质数是指只能被1及其自身整除且大于1的正整数,如2、3、5、11等。设计算法:关键的问题是如何BEGIN判断一个正整数ii=3;(i=3,…,5000)while(i≤5000)是否为质数beginif (i是质数) write i;i=i+1;endEND[方法1]把i除以从2到i-1的每一个正整数,如果都除不尽,则i是质数。[方法2]把i除以从2到之间的每一个正整数,如果都除不尽,则i是质数。
显然,方法2的判断次数要少于方法1。当i较大时,其执行效率要比方法1高得多。针对具体问题去寻找或设计较好的算法是程序设计者理应追求的目标,这一点需要我们在实践中去不断琢磨和体会。
算法设计的主要原则
⑴正确性:能够正确地执行预先规定的功能;⑵可读性:算法必须是清晰、简单和结构化的;⑶健壮性:要求算法具有很好的容错性,能够对不合理的数据进行检查和做出适当的反映或处理;⑷高效性:算法的效率是指算法执行时计算机资源
的消耗,主要包括存储空间和运行时间,且算法的效率与其占用计算机资源的量成反比。
算法设计的一般步骤
⑴分析问题:通过原始资料了解问题的实质,已知什么,求解什么;
⑵建立数学模型:选择合适的数据结构,建立恰当的数
学模型;⑶规划算法:详细设计、构建算法的一系列具体步骤;⑷检查算法:验证算法中是否遗失了必要的步骤,现有
步骤是否正确且次序是否正确;
⑸实现算法:用一种计算机语言将算法编制成程序。
6.1.2.5 算法的评价
算法复杂性分析是评价算法优劣性的重要依据;
一个算法复杂性的高低体现在运行该算法所需的计算机系统资源的多少上:
⑴时间复杂度:是执行该算法所需要的运算工作量,也就是根据该算法执行的简单操作的次数来度量;⑵空间复杂度:是执行该算法所需要的内存空间。一个算法需要花费的时间越短,它的效率就越高;一个算法需要占用的空间越少,它的效率也越高。
6.1.3 程序设计语言
程序设计语言经历了由低级向高级的发展:•机器语言
•汇编语言•高级语言
机器语言用二进制代码表示的面向机器的程序设计语言。特点:可移植性差,难以记忆、理解、编写、调试。汇编语言用助记符表示的面向机器的程序设计语言。特点:可移植性差,便于记忆、理解、编写、调试。高级语言
与具体的计算机结构无
关,表达方式接近于人
#include cout<<\"大家好!\"< 特点:不面向机器,可 移植性好,通用性强。 常见高级语言面向过程高级语言Fortran、Basic、C、Foxpro、面向对象高级语言C++ 、Visual Basic、Visual Foxpro 、Java、COBOL、PASCAL等适用于编制小程序Delphi等使用对象来解决问题、易于代码重用。适用于大中型软件开发源程序:用汇编语言或高级语言编写的程序。目标程序:用二进制编写的程序,机器可直接识别。 库文件:将经常使用的标准程序预先编好并编译后成程序库,可直接调用。 翻译:指将用汇编语言或高级语言编写的源程序转换为二进制代码程序。承担该翻译工作的特殊程序称为语言处理程序。 语言处理程序分为汇编程序、编译程序和解释程序三类; 汇编程序:任务是把汇编语言编制的程序“翻译”成机器语言程序; 编译程序:任务是把高级语言程序“翻译”成机器语言的目标程序; 解释程序:逐条将高级语言程序“翻译”成机器指令,并边翻译边执行。 汇编方式 编译方式 解释方式逐条“翻译”,边翻译边执行。6.1.3 程序设计语言 程序设计的基本原则 ⑴正确性:程序应具备其设计规格说明书中所列举的全部功能并正确运行,它是判断程序质量的首要标准; ⑵可靠性:程序在多次反复使用的过程中不失败的概率;⑶简明性:程序应简明易读; ⑷有效性:在一定的软硬件条件下反映出程序的综合效率; ⑸可维护性:分为校正性维护、适应性维护和完善性维护。一个软件的可维护性如何直接关系到程序的可用性。 结构化程序设计方法 ⑴把计算机要处理的问题或事务,按功能自顶向下逐层分解,直到获得的若干的功能模块都是一些容易处理的子过程为止; ⑵选择一种合适的结构化程序设计语言,进行模块设计步骤如下: ①分析问题的实质,弄清楚已知什么,求解什么②选择合适的数据结构,建立数学化模型③设计与之相适应的算法④编码实现算法 ⑤调试子程序,排错、调试运行⑶对程序整体链接、调试与运行; ⑷整理相关文档资料,编写程序使用说明书,交付用户使用。 §6.2 软件开发方法 例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5 000人一年的工作量,最多时有1 000人投入开发工作,写出了近100万行源程序。据统计,这个操作系统每次发行的新版本都是从前一版本中找出1 000个程序错误而修正的结果…… 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。Software Crisis !6.2.1 软件和软件工程 一、软件 软件是程序以及开发、使用和维护程序所需要的各种文档。文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。 文档可用于:专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。二、软件的发展 第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。在这一阶段中,软件还没有系统化的开发方法。目标主要集中在如何提高时空效率上。 第二阶段——从20世纪60年代中期到70年代末期。软件开发已进入了作坊式生产方式,即出现了“软件车间”。软件开发开始形成产品,软件规模逐渐加大。到20世纪60年代末,“软件危机”变得十分严重。 第三阶段——从20世纪70年代中期到20世纪80年代末期。软件开发进入了产业化生产,即出现了众多大型的“软件公司”。在这一阶段,软件开发开始采用了“工程化”的方法,软件产品急剧增加,质量也有了很大的提高。 第四阶段——从20世纪80年代末期开始的。这是一个软件产业大发展的时期。也是软件工程大发展的时期,人们开始采用面向对象的技术和可视化的集成开发环境。 100%80%硬60%40%20%1955年1970年软件维护1985年件软件开发软件、硬件成本变化趋势软件规模的分类类别微型参加人员数1研制期限1~4周产品规模(源程序行数)0.5k小型中型大型甚大型极大型12~55~20100~10002000~50001~6月1~2年2~3年4~5年5~10年1k~2k5k~50k50k~100k1M(=1000k)1M~10M三、软件工程 软件工程是指采用工程化的原理与方法对软件进行计划、开发和维护,按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性。软件工程由方法、工具和过程三部分组成,称软件工程的三要素。 (1)软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段。 (2)软件工程使用的软件工具能够自动或半自动地支持软件的开发、管理和文档的生成。 (3)软件工程中的过程贯穿于整个工程的各个环节,在这一过程中,管理人员应对软件开发的质量、进度、成本等进行评估、管理和控制,包括计划跟踪与控制、成本估算、人员的组织、质量保证、配臵管理等。 6.2.2 软件生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。软件开发从最初的问题定义到废弃不用的全过程,称为 软件的生存周期。 软件工程采用的生存周期的方法就是从时间角度对软件开发和维护的复杂问题进行分解,将软件的生存周期划分为若干个阶段,每个阶段有相对的任务,便于不同人员分工协作,使软件开发过程按有秩序、能管理的方式组织起来,从而降低了整个软件开发的难度。 6.2.3 软件开发模型 对软件生存周期的不同划分,形成了不同软件生存周期模型,下面以瀑布模型(Waterfall Model)为例进行介绍。瀑布模型将软件生存周期划分为计划、开发、运行三个时期,每个时期又区分为若干阶段,各阶段的工作顺序展开,如同瀑布流水,逐级下落。 问题定义计划时期目标与范围说明书可行性论证报告软件生存周期的瀑布模型可行性研究需求分析需求说明书设计文档程序测试测试报告开发时期设计编码运行时期运行与维护维护报告按照传统的瀑布模型来开发软件,有如下几个特点: 1、阶段间具有顺序性和依赖性 这个特点有两重含义:第一,必须等前一阶段的工作完成之后,才能开始后一阶段的工作;第二,前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。 万一在生命周期某—阶段发现了问题,很可能需要追溯到在它之前的一些阶段,必要时还要修改前面已经完成的文档。然而,在生命周期后期改正早期阶段造成的问题,需要付出很高的代价。这就好像水已经从瀑布顶部流泻到底部,再想使它返回到高处需要付出很大能量一样。 2、推迟实现的观点 软件开发人员接到软件开发任务以后常常急于求成,总想尽早开始编写程序。但是,对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。因为前段工作没做或做得不扎实,过早地考虑程序实现,往往导致大量返工,有时甚至发生无法弥补的问题,带来灾难性后果。 3、质量保证的观点 软件工程的基本目标是优质、高产。各个阶段都应坚持两个重要做法:第一,每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。 第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。 事实上,越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量、降低软件成本的重要措施。 6.2.4 软件开发过程 一、问题定义和可行性分析阶段 1、问题定义 问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。 通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解,澄清含糊不清的地方,改正理解不正确的地方,最后得出一份双方都满意的文档。 2、可行性研究 这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了回答这个问题,系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。 这个阶段的任务不是具体解决问题,而是探索这个问题是否值得去解,是否有可行的解决办法。一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。 二、需求分析阶段 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。 用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。 因此,系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。 三、软件设计阶段 1、总体设计 这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?”应该考虑几种可能的解决方案: ①低成本的解决方案。系统只能完成最必要的工作,不能多做一点额外的工作。 ②中等成本的解决方案。这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些功能和特点。 ③高成本的“十全十美”的系统。具有用户可能希望有的所有功能和特点。系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个最佳方案,并且制定实现所推荐的系统的详细计划。 2、详细设计 总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。 通常用HIPO图或PDL语言描述详细设计的结果。 四、软件编码和软件测试阶段 1、软编码和软件阶段性测试 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。 2、软件综合测试软件测试方法:黑盒测试和白盒测试。黑盒测试是根据软件产品的功能设计规格,在计算机上进行测试,以证实每个已经实现的功能是否符合要求。这种方法把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性。白盒测试则根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求。这种方法把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,选择设计用例对程序所有逻辑路径进行测试。 五、软件维护阶段 维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。 通常有四类维护活动: ①改正性维护,也就是诊断和改正在使用过程中发现的软件错误; ②适应性维护,即修改软件以适应环境的变化; ③完善性维护,即根据用户的要求改进或扩充软件使它更完善; ④预防性维护,即修改软件为将来的维护活动预先做准备。 §6.3 数据管理技术什么是数据处理?数据处理也称为信息处理。所谓数据处理,实际上就是利用计算机对各种类型的数据进行处理。它包括对数据的采集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列操作过程。数据处理的目的是从大量的、原始的数据中获得人们所需要的资料并提取有用的数据成份,作为行为和决策的依据。6.3.1 数据管理技术的发展 一、人工管理阶段 出现在20世纪50年代中期以前,那时的计算机主要用于科学计算。 当时的硬件状况是:外存只有纸带、卡片、磁带,没有磁盘等直接存取的存储设备。软件状况是:没有操作系统,没有管理数据的软件。数据处理方式是批处理。 特点: ①数据不保存。计算机主要用于科学计算,只是在计算某一课题时将数据输入,用完就撤走。 ②数据需要由应用程序自己管理。程序中不仅要规定数据的逻辑结构,而且要设计物理结构,包括存储结构、存取方法、输入方式等。程序员负担很重。 ③数据不共享。数据是面向应用的,一组数据只能对应一个程序。当多个应用程序涉及某些相同数据时,无法互相利用、互相参照,因此程序与程序之间有大量的冗余数据。 ④数据不具有性。数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,进一步加重了程序员的负担。 在人工管理阶段应用程序与数据之间的关系应用程序1数据组1应用程序2数据组2应用程序n…数据组n…二、文件系统阶段 20世纪50年代后期到60年代中期,计算机的应用范围逐渐扩大,不仅用于科学计算,而且还大量用于管理。硬件上已有了磁盘、磁鼓等直接存取存储设备。 软件方面,操作系统中已经有了专门的数据管理软件,一般称为文件系统;即把有关的数据组织成一种文件,这种数据文件可以脱离程序而存在,由一个专门的文件管理系统实施统一管理;处理方式上不仅有了文件批处理,而且能够联机实时处理。 特点: ①数据可以长期保存,便于反复进行查询、修改、插入和删除等操作。②数据由专门的文件系统进行管理。程序和数据之间由软件提供的存取方法进行转换,使应用程序与数据之间有了一定的性,程序员可以不必过多地考虑物理细节,将精力集中于算法。 ③数据共享性差。在文件系统中,一个文件基本上对应于一个应用程序,即文件仍然是面向应用的。当不同的应用程序涉及某些相同数据时,必须建立各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间。 ④数据性低。一旦数据的逻辑结构改变,必须修改应用程序,修改文件结构的定义。文件系统仍然是一个不具有弹性的无结构的数据集合。 在文件管理阶段,应用程序与数据之间的关系应用程序1数据文件1应用程序2数据文件2…应用程序n…文件管理系统数据文件n三、数据库系统阶段 20世纪60年代以来,计算机用于管理的规模更为庞大,应用越来越广泛,数据量急剧增长,同时多种应用、多种语言互相覆盖地共享数据集合的要求越来越强烈。 硬件已有大容量磁盘,软件系统也争奇斗艳,并且硬件价格下降,软件价格上升;在处理方式上,联机实时处理要求更多,并开始提出和考虑分布处理。数据库技术应运而生。 特点: ①数据结构化。在数据库系统中,不仅数据是结构化的,而且存取数据的方式也很灵活,可以存取数据库中的某一个数据项、一组数据项、一个记录或一组记录。数据库系统实现了整体数据的结构化。 ②数据的共享性好,冗余度低。数据库系统从整体角度看待和描述数据,数据不再面向某个应用而是面向整个系统。③数据性高。数据既具有物理性,又有逻辑性。数据与程序之间的性,使得可以把数据的定义和描述从应用程序中分离出去。 ④数据由DBMS统一管理和控制,数据库系统弹性大,易于扩充。 数据的安全性(security) 保护数据,防止不合法使用数据造成数据的泄密和破坏,使每个用户只能按规定对某些数据以某些方式进行访问和处理。 数据的完整性(integrity)数据的正确性、有效性和相容性。即将数据控制在有效的范围内,或要求数据之间满足一定的关系。 并发(concurrency)控制 当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果,并使得数据库的完整性遭到破坏,因此必须对多用户的并发操作加以控制和协调。 数据库恢复(recovery) 计算机系统的硬件故障、软件故障、操作员的失误以及人为故意的破坏也会影响数据库中的数据的正确性,甚至造成数据库部分或全部数据的丢失。DBMS必须具有将数据库从错误状态恢复到某一已知正确状态的功能。 在数据库管理阶段,应用程序与数据之间的关系应用程序1应用程序2数据库管理系统数据库应用程序n…6.3.2 数据库系统的概念 一、数据库 数据库(DataBase,简称DB)是数据库系统的管理对象。 所谓数据库,就是以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器上形成的,能为多个用户共享的,与应用程序彼此的一组相关数据的集合。 二、数据库管理系统 数据库管理系统(Data Base Management System,简称DBMS)是帮助用户创建、操纵、运行控制和维护管理数据库的程序的集合,是位于用户和操作系统之间的实现数据管理功能的系统软件,是数据库系统的重要组成部分。 数据库管理系统通常由三个部分组成:数据描述(定义)语言(DDL)及其编译程序数据操纵语言(DML)或查询语言及其编译或解释程序数据库管理例行程序三、数据库系统 数据库系统(DataBaseSystem,简称DBS)是由有关的硬件、软件、数据和人员四个部分组合而形成的。 硬件环境是数据库系统的物理支撑,包括CPU、内存、外存及输入/输出设备。由于数据库系统承担着数据管理的任务,它要在操作系统的支持下工作,而且本身包含着数据库管理例行程序、应用程序等,因此要求有足够大的内存开销。同时,由于用户的数据、系统软件和应用软件都要保存在外存上,所以对外存容量的要求也很高。 软件系统包括系统软件和应用软件两类。 系统软件主要包括数据库管理系统软件、开发应用系统的高级语言及其编译系统、应用系统开发的工具软件等。应用软件是指在数据库管理系 统的基础上由用户根据自己的实际需要自行开发的应用程序。 数据是数据库系统的管理对象,是为用户提供数据的信息源。 数据库系统的人员是指管理、开发和使用数据库系统的全部人员,主要包括数据库管理员、系统分析员、应用程序员和用户。 四、数据模型 客观事物的这种普遍联系性,决定了作为事物属性记录符号的数据与数据之间也存在着一定的联系性。具有联系性的相关数据总是按照一定的组织关系排列,从而构成一定的结构,对这种结构的描述就是数据模型。 从理论上讲,数据模型是指反映客观事物及客观事物间联系的数据组织的结构和形式。客观事物是千变万化的,表现各种客观事物的数据结构和形式也是千差万别的,尽管如此,它们之间还是有其共同性的。 1、层次模型 层次模型(Hierarchical Model)表示数据间的从属关系结构,是一种以记录某一事物的类型为根结点的有向树结构。 其主要特征如下:仅有一个无双亲的根结点。根结点以外的子结点,向上仅有一个父结点,向下有若干子结点。一对多父结点多对一子结点层次模型示例计算机及信息工程学院信管002信管004信管006信管008层次数据模型(2)网状模型 网状模型(NetworkModel)是层次模型的扩展,它表示多个从属关系的层次结构,呈现一种交叉关系的网络结构。网状模型是以记录为结点的网络结构。 其主要特征如下:有一个以上的结点无双亲。至少有一个结点有多个双亲。网状模型示例网状数据模型人种植砍伐父母BADC养育子女赡养树(3)关系模型 关系模型(RelationalModel)的所谓“关系”是有特定含义的。广义地说,任何数据模型都描述一定事物数据之间的关系。层次模型描述数据之间的从属层次关系,网状模型描述数据之间的多种从属的网状关系。 关系模型的所谓“关系”虽然也适 用于这种广义的理解,但同时又特指那种虽具有相关性而非从属性的平行的数 据之间按照某种顺序排列的集合关系。 关系模型示例以属性分类的若干个元组的集合,构成关系模型中的一个关系元组科研所经贸公司属性关系模型的主要特点有: 关系中每一分量不可再分,是最基本的数据单位; 每一竖列的分量是同属性的,列数根据需要而设,且各列的顺序是任意的; 每一横行由一个个体事物的诸多属性构成,且各行的顺序可以是任意的; 一个关系是一张二维表,不允许有相同的属性名,也不允许有相同的元组。 五、数据库技术的三个发展阶段 1、1969年IBM公司研制了基于层次数据模型数据库 管理系统IMS(Information Management System),并作为商品化软件投入市场。IMS作为层次型数据库管理系统的代表,标志着数据库及相关技术的诞生,具有 重要意义。IMS系统的推出,使得数据库概念得到了普及,也使得人们认识到数据的价值和统一管理的必要 性。 2、20世纪60年代到70年代初,网状数据模型 替代了层次数据模型。为了试图克服IMS在层次方面的局限性,美国数据库系统语言协会下属的数据库任务组对数据库的方法和技术进行了系统研究,并提出了著名的DBTG报告。该报告确定并建立了数据库系统的许多基本概念、方法和技术,报告成为网状数据模型的典型技术代表,它奠定了数据库发展的基础,并有着深远的影响。 3、1970年IBM公司的E.F.Codd发表了著名的基 于关系模型的数据库技术的论文——“大型共享数据 库数据的关系模型”,并获得图灵奖,标志着关系数据库模型的诞生。由于关系模型突出的优点,迅速被商用数据库系统所采用。20世纪70年代以来涌现了许多性能良好的商品化关系数据库管理信息系统(RDBMS),如:ORACLE、DB2、Sybase、Informix、SQL Server等。 6.3.3 新型数据库技术 随着数据库应用领域的不断扩大和信息量的急剧增长,占主导地位的关系数据库系统已不 能满足新的应用领域的需求,如CIMS(计算机集 成制造系统)、CASE(计算机辅助软件工程)、OA(办公自动化)、GIS(地理信息系统)、MIS (管理信息系统)、KBS(知识库系统)等,都需要数据库新技术的支持。 一.对象关系数据库 面向对象数据库系统(Object-Oriented DataBase System,OODBS)是将面向对象的模型、方法和机制,与先进的数据库技术有机地结合而形成的新型数据库系统。它从关系模型中脱离出来,强调在数据库框架中发展类型、数据抽象、继承和持久性。 它的基本设计思想是,一方面把面向对象语言向数据库方向扩展,使应用程序能够存取并处理对象,另一方面扩展数据库系统,使其具有面向对象的特征,提供一种综合的语义数据建模概念集,以便对现实世界中复杂应用的实体和联系建模。 二.数据仓库技术信息技术的高速发展,数据和数据库在急剧增长,数据库应用的规模、范围和深度不断扩大,一般的事务处理已不能满足应用的需要,企业界需要在大量信息数据基础上的决策支持(DecisionSupport,DS),数据仓库(DataWarehousing,DW)技术的兴起满足了这一需求。数据仓库作为决策支持系统 (Decision Support System,DSS)的有效解决方案,涉及三方面的技术内容:数据仓库技术、联机分析处理(On-Line Analysis Processing,OLAP)技术和数据挖掘(Data Mining,DM)技术。 三.联邦数据库随着计算机应用水平的不断提高,很多领域的系统都面临着信息集成问题。这种集成是对已有的、分布的、异构的多个数据库系统的集成。其系统结构既要支持节点内外的数据共享,又要支持节点内的高度自治,当前与之相对应的就是联邦数据库,这种数据库在物理上和逻辑上都是分散的。它适用于不同领域之间的异构系统(如医院信息系统、军事指挥系统等)的集成。联邦数据库系统(FDBMS)在保持各自应用完整性,完全性的前提下,对数据共享应达到如下要求: 透明地访问联邦中的异质数据库;各个异质数据库的局部自治性;联邦数据库系统的各个数据库模型和多种数据语言;为支持联邦数据库的局部自治性,要求有有效的存取并发控制机制。 四.智能数据库 尽管“智能数据库”是刚发展起来的新兴领域,其许多相关问题仍未解决,但人工智能(AI)和数据库技术相结合肯定是数据技术未来发展的方向。 目前,有关专家认为一个智能数据库至少应同时具备演绎能力和主动能力,即把演绎数据库和主动数据库的基本特征集成在一个系统之中,所以IDB应具有下列特点: 提供表达各种形式的应用知识的手段;为用户提供象专家系统一样的解释;主动规则,恰当地为快速变化做出反应;更普遍,更灵活地实现完整性控制、安全性控制、导出数据处理、报警等。 【小结】 按某种逻辑关系组织起来的一批数据,按一定的存储方式把它存储在计算机存储器中,并在这些数据上定义了一个基本运算的集合,就称为一个数据结构。数据结构的概念包括了三个方面的内容:数据的逻辑结构、数据的存储结构和数据的基本运算。数据结构可分为线性结构和非线性结构两大类,如线性表、树和图等。 算法是为计算机解题设计的有明确意义的运算步骤的有限集合,可以用自然语言、伪代码流程图来描述算法,算法有三种基本控制结构:顺序结构、选择结构和循环结构。 程序是在数据结构的基础上对抽象算法的具体描述,程序设计语言经历了机器语言、汇编语言、高级语言等由低级向高级的发展过程。 软件工程是从工程角度来研究软件开发的方法和技术,它是在克服软件危机的过程中产生而发展起来的。软件工程包括三个要素:软件工程方法、软件开发工具、软件工程过程。软件开发从最初的问题定义到废弃不用的全过程,称为软件的生存周期。软件的开发过程包括问题定义与可行性分析、需求分析、总体设计、详细设计、软件编码、软件测试、软件维护等阶段。 数据管理技术的发展大致经历了从人工管理方式、文件管理方式到数据库系统管理方式三个阶段。数据库是以一定的组织方式存储在计算机外部存储设备中的相关数据的集合。 数据库管理系统(DBMS)是对数据库的建立、操纵、控制和维护进行管理的软件系统。数据库系统通常由数据库、硬件支持系统、软件支持系统、数据库管理员四部分组成。常用的数据模型有层次模型、网状模型、关系模型三种,它们分别对应着层次数据库、网状数据库、关系数据库。数据库新技术向着对象关系数据库、数据仓库、联邦数据库、智能数据库等方向发展。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务