计算机类的专业可以说是绝对的热门专业,这个专业类型有计算机科学与技术、软件工程、信息安全、大数据等。
这些专业怎么选,读完后有什么区别?很多家长不可能有这么深入的知识,去认识到每一个专业的内涵,所以也没有办法去区分哪一个专业更好。
小编将从学习内容与难度,就业方向与薪酬,为大家做一个深度的解读。
首先这些专业毕业过后的工作内容,都可能跟我们手机上看到的APP相关,比如说QQ、微信、西瓜视频、腾讯视频、今日头条、美团、百度地图等等,它是怎样和这些APP发生关系的呢?计算机科学与技术这个专业主要学习的课程有数学、物理、计算机编程、电子电路、 *** 作系统,它可以选修一些如嵌入式相关的课程,可视化技术相关的课程,生物信息学的课程,人工智能相关的课程。
它的集中实践的环节是Java开发、汇编语言、微博技术、数据库、APP的开发、it项目的实践。
其实这个专业最核心的课程,最需要学好的课程还是数据结构、计算机组成、 *** 作系统、数据库原理、计算机网络、软件工程,然后再学一门自己非常精通的计算机语言,你就能找到高薪了。
其核心能力一定是编程,能开发项目,如开发一个APP,做一个信息系统,开发一款小程序。
毕业后就业的方向就是去互联网公司或者软件公司,或者去其他行业的公司的信息部门,本科生的收入在3000到4万不等,每月薪酬是很高的,差距也是很大的,拿到高薪的同学是能力很强的,不是学校很强的,985大学干不过双非本科的现象也非常多。
所以说,计算机类专业就适合那些在高中学习不爱记忆,不爱背诵,甚至英语还不怎么好,但是数学和物理不需要怎么学都能学好,还爱动手,还有点儿追根究底的精神的,这类同学学习计算机专业,高薪就等着你了。
而那些英语学得特别好,数学怎么学都不怎么灵活的,要谨慎报考,平常学习靠记忆不靠推理的同学,也要谨慎报考,虽然你学了热门专业,但是你的薪酬可能不高。
可能有的家长说,即使我的薪酬不高,也比其他很多专业的薪酬要高,可能高个一两千,但是这是没有什么意义的,大家听说过没有,35岁的工程师被一些互联网的大公司合同不再续约了,就是35岁就会面临转行,但是,有的工作是越老越吃香,比如说学医的,35岁才开始成为骨干,才学成归来,而学计算机的,这个时候已经到了强弩之末了,所以学计算机它的逻辑一定是比每个月的工作要赚其他的有些工作两个月甚至三个月以上的收入,不然到了35岁过后,没有天赋而学了计算机也是很难受的。
软件工程软件工程学习的基础课程和计算机没有太大的区别,主要也是学数学、物理、计算机原理、计算机网络,专业核心的课程增加了软件体系结构、软件项目组织管理、软件工程等课程。
专业选修课仍然可以选择如云计算、机器学习、人工智能,甚至可以选修大数据处理这样的一些课程。
集中实践的环节主要是工程研究与实习、项目地实习,项目实习简单来说就是开发一个项目,可以是APP,也可以是某个信息系统,也可以是小程序。
这个专业的学习与计算机相差的真不多,是近亲。
核心课程就多了软件工程基础、软件体系结构、软件项目组织管理等几门,毕业后的就业方向几乎与计算机专业是完全一致的,就业单位就有如腾讯、阿里为代表的大型企业,如果学的不不太好,只能去一些中型的或者小型的公司写程序,适合报考计算机就适合报考软件工程,收入也是差不多的。
如果学得好的话,你可以去下图上,所列的这些企业去工作,这些企业都是非常多的,也是能拿到高薪的。
信息安全信息安全的基础课程与计算机和软件工程是差不多的,都有数学、计算机网络、数据结构、电路、物理。
但是他的核心课程与计算机和软件工程相比差得就比较大了,核心课程主要有 *** 作系统及安全、密码学及应用、软件安全、网络安全、编译原理。
专业课有信息内容安全、信息安全工程与管理、计算机取证、信息隐藏技术等跟安全相关的课程是比较多的,在选修课当中仍然可以选择Java语言的开发、算法分析与设计、WEB技术、并行计算、嵌入式人机交互、人工智能。
Java这个语言对计算机来说就是一个必学的语言,但是对信息安全来说,它只是一个选修的课程。
集中实践的环节是应用基础实践、网络和家网、计算机原理与汇编语言,然后是信息安全相关的实践课程。
它的核心课程与计算机科学与技术、软件工程相比较的话,变化是比较大的,主要是要学习一系列跟安全相关的课程,如密码学、软件安全、网络安全。
毕业最对口的就业的公司有阿里的安全领域、绿盟科技、安恒信息、亚信安全、深信服、奇安信、华为、三、天融信、腾讯云,要么是去大公司做安全相关的业务,要么是去直接做安全的这类公司。
如果安全方面学得好,技术也很好,可以在这些公司去做与网络安全相关的技术开发或者技术的维护。
但是如果你在大学锻炼了你的编程能力,你也可以去抢计算机科学与技术、软件工程的同学的饭碗,去做编程工作,这样你的就业面就会更广一些。
这个专业学习难度对数学的要求会更高一点,这个专业想要就业好的话,第一是要学精安全方面的课程,第二个是一定要提升自己的程序开发的能力。
这个专业学完过后的收入,跟前面两个专业来说是差不多的。
如果你在安全领域能成长成为一个专家,那你的收入是非常高的。
数据科学与大数据技术这个专业的基础课程也需要学数据结构、数据库、 *** 作系统、计算机网络、数学、电子电路,在数学方面会加强科学计算与数学建模等相关的课程的学习。
数学的学习难度是比上面的三个专业会难一点。
专业的核心课程有算法分析与设计、机器学习、大型数据库技术、可视化、大数据采集与融合、数据仓库、分布式与云计算、智能搜索与引擎,专业课增加了Python数据处理、R语言数据处理与变成,选修课可以选修Java程序设计、WEB程序设计、移动APP应用开发的,像Java\WEB移动应用开发,这是计算机和软件工程必修的课程,而在大数据里面的是选修的课程。
集中的实训主要有数据处理、大数据综合应用实践,大数据科学与技术这个专业与前面三个专业的区别都是很大的,它的核心课程更偏向于跟大数据相关的算法分析与设计、机器学习、分布式系统与云计算、大型数据库技术、数据仓库、深度学习、可视化等。
学完过后,主要能进行大数据的采集,数据存储,数据分析,数据可视化与应用等工作,所以在学习的时候,除了学习一些基本的编程技术外,对数学模型方向的课程会有大量的增加,对数据的大规模存储相关的课程会有增加,编程方面会侧重学习Python和R语言,但是这两个语言相对来说是比较简单的。
这个专业的毕业生往往在编程的能力方面和计算机科学与技术和软件工程相比要差非常多,他们对数学方向和大数据存储方向会了解的更深入,但是在就业方面,因为一般的小企业无法涉及到大量的数据,而大企业的大数据人才的招聘要求又高,需要硕士名校优先,所以建议成绩不太好的同学,只能考一个二本的同学尽量的就不要选择这个专业,或者你选了这个专业就把它当计算机科学技术和软件工程来读,大学的核心是提升自己的Java编程或者Python编程的能力,还是要以能开发软件相关的项目为主,这样你就可以与计算机和软件工程的同学去抢饭碗了,不然这个专业学完过后是真不好就业。
我目前接触了大量的这个方向的学生,虽然这些学生具有一定的大数据的思维和具有一定的数学知识,但是因为缺乏比较强的软件编写能力,因此被很多企业拒之门外,或者只能找到的新的工作。
如果你的分数足够高,学校排名比较靠前,就可以放心地选择了,并且要准备好考研,然后去大公司,这样薪酬也是比较可观的,甚至比纯的软件开发、软件工程和计算机科学与技术的同学薪酬会更高。
你能够去到一些大型的公司做大数据。
第一章 数据结构与算法 (P1—P38)1.1 算法
1.1.1 算法的基本概念 (P1—P4)
所谓算法是指解题方案的准确完整的描述。
1. 算法的基本特征
(1)可行性(2)确定性(3)有穷性(4)拥有够的情报
2. 算法的基本要素
一个算法通常由两种基本要素组成:一是对数据对象的运算和 *** 作,二是算法的控制结构。
(1)算法中对数据的运算和 *** 作 (插入、删除)
(2)算法的控制结构
一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。
1.1.2 算法复杂度(P4—P6)
算法的复杂度主要包括时间复杂度和空间复杂度。
1. 算法的时间复杂度
所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。
3. 算法的空间复杂度
一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
1.2数据结构的基本概念
数据结构,主要研究和讨论以下三个方面的问题:
① 数据的逻辑结构;
② 数据的存储结构;
③ 对各种数据结构进行的运算。(插入、删除)
主要目的是为了提高数据处理的效率。所谓提高数据处理的效率,主要包括两个方面:一是提高数据处理的速度,(时间复杂度)二是尽量节省在数据处理过程中所占用的计算机存储空间。(空间复杂度)
1.2.1什么是数据结构 (P6—P11)
1. 数据的逻辑结构
所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。
2. 数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称为数据的物理结构)
一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。
1.2.3线性结构与非线性结构 (P12)
一般将数据分为两大类型:线性结构与非线性结构。
线性结构又称线性表
如果一个数据结构不是线性结构,则称之为非线性结构。
1.3线性表及其顺序存储结构
1.3.1线性表的基本概念 (P12—P13)
线性表是由n (n≥0)个数据元素a1,a2,…,an组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。即线性表或是一个空表,或可以表示为。
(a1,a2,…,ai,…,an)
非空线性表有如下一些结构特征:
① 有且只有一个根结点a1,它无前件;
② 有且只有一个终结点an,它无后件;
③ 除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。
1.3.2线性表的顺序存储结构 (P13—P14)
在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序分配。
线性表的顺序存储结构具有以下两个基本特点:
① 线性表中所有元素据所占的存储空间是连续的;
② 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
假设线性表中的第一个数据元素的存储地址为ADR(a1),每一个数据元素占K个字节,则线性表中第i 个元素ai在计算机存储空间中的存储地址为
ADR(a1)=ADR(a1)+(i-1)K
1.3.3顺序表的插入运算 (P14—P15)
在平均情况下,要在线性表中插入一个新元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况下,要插入一个新元素,其效率是很低的。
1.3.4顺序表的删除运算 (P15—P16)
在平均情况下,要在线性表中删除一个元素,需要移动表中表中一半的元素。因此,在线性表顺序存储的情况下,要删除一个元素,其效率也是很低的。
由线性表在存储结构下的插入与删除运算可以看出,线性表的顺序存储结构对于小线性表或者其中元素不常变动的线性表来说是合适的,因为顺序存储的结构比较简单。但这种顺序存储的方式对于元素经常需要变动的大线性表就不太合适了,因为插入删除的效率比较低。
1.4栈和队列
1.4.1栈及其基本运算 (P16—P18)
1.什么是栈
栈是限定在一端进行插入与删除的另一端称为栈底。即栈是按照“先进后出”(FILO)或“后进先出”(LIFO)的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。由此可以看出,栈具有记忆作用。
2.栈的顺序存储及其运算(采用顺序存储结构的栈称为顺序栈)
栈的基本运算有三种:入栈、退栈与读栈顶元素。
(1) 入栈运算(2)退栈运算(3)读栈顶元素
1.4.2队列及其基本运算 (P18—P20)
1.什么是队列
队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,一端称为排头(也称为队头)通常也用一个排头指针(front)指向排头元素的前一个位置。
队列双称为“先进先出”或“后进后出”的线性表。
3. 循环队列及其运算
在实际应用中,队列的顺序存储结构一般采用循环队列的形式。
所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
(1) 入队运算
(2) 退队运算
1.5线性链表
1.5.1线性链表的基本概念 (P20—P23)
由于线性表的顺序存储结构存在以上这些缺点,对于大的线性表,特别是元素变动频繁的大线性表不宜采用顺序存储结构,而是采用下面要介绍的链式存储结构。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。
在链式存储结构中,存储数据结构的存储空间可以下连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
链式存储方式既可用于表示线性结构,也可以用于表示非线性结构。
1. 线性链表
线性表的链式存储结构称为线性链表。
2. 带链的栈
栈也是线性表,也可以采用链式存储结构。
3. 带链的队列
与栈类似,队列也是线性表,也可以采用链式存储结构。
1.5.2线性链表的基本运算 (P23—P25)
线性链表在插入过程中不发生数据元素移动的现象,只需改变有关结点的指针即可,从而提高了插入的效率。
从线性链表的删除过程可以看出,在线性链表中删除一个元素后,不需要移动表的数据元素,只需改变被删除元素所在结点的前一个结点的指针域即可。
1.5.3循环链表及其基本运算 (P25—P26)
循环链表具有以下两个特点:
(1) 在循环链表中增加了一个表头结点,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。
(2) 循环链表中最后一个结点的指针域不是空,而是指向表头结点。即在循环链表中,所有结点的指针构成了一个环状链。
1. 6树与二叉树
1.6.1树的基本概念 (P26—P28)
在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称为树的根。
在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件个数称为该结点的度
在树中,所有结点中的最大的度称为树的度。
根结点在第1层。
树的最大层次称为树的深度。
1.6.2二叉树及其基本性质 (P28—P31)
1. 什么是二叉树
二叉树具有以下两个特点:
① 非空二叉树只有一个根结点;
② 每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
2. 二叉树的基本性质
性质1在二叉树的第K层上,最多有2K-1(K≥1)个结点。
性质2深度为m的二叉树最多有2m-1个结点。
性质3在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
3. 满二叉树与完全二叉树
(1)满二叉树
所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点,这就是说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2K-1个结点,且深度为m的满二叉树有2m-1个结点。
(2)完全二叉树
所谓完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边若干结点。
满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树。
性质6设完全二叉树共有n个结点。从根结点开始,按层序用自然数1,2,…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论:
① 若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2)。
② 若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点。
③ 若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。
1.6.3二叉树的存储结构 (P31—P32)
在计算机中,二叉树通常采用链式存储结构。
1.6.4二叉树的遍历 (P32—P33)
二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历。
1. 前序遍历(DLR)
2. 中序遍历(LDR)
3. 后序遍历(LRD)
1.7查找技术
1.7.1顺序查找 (P33)
顺序查找又称顺序搜索。
对于大的线性表来说,顺序查找的效率是很低的。虽然顺序查找的效率不高,但在下列两种情况下也只能采用顺序查找:
(1) 线性表无序表,则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。
(2) 即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
1.7.2二分法查找 (P33—P34)
二分法查找只适用于顺序存储的有序表。
显然,当有序线性表为顺序存储时都能采用二分查找,并且,二分查找的效率要比顺序查找高得多。可以证明,对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
1.8排充技术
1.8.1交换类排序法 (P34—P35)
1. 冒泡排序法
冒泡排序法是一种最简单的交换类排序方法。
假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为n(n-1)/2。
2. 快速排序法
快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此称之为快速排序法。
1.8.2插入类排序法 (P35—P37)
1. 简单插入排序法
自以为插入排序,是指将无序序列中的各元素依次插入到已经有序的线性表中。
在简单插入排序法中,这种排序方法的效率与冒泡排序法相同。在最坏情况下,证券交易插入排序需要n(n-1)/2次比较。
2. 希尔排序法
希尔排序法属于插入类排序,但它对简单插入排序做了较大的改进。
1.8.3选择类排序法 (P37—P38)
1. 简单选择排序法
从中选出最小的元素,将它交换到表的最前面。
简单选择排序法在最坏情况下需要比较n(n-2)/2次。
2. 堆排序法
堆排序法属于选择类的排序方法。
堆排序的方法对于规模较小的线性表并不合适,但对于较大规模的来说是很有效的。
分享到搜狐微博
第2章 程序设计基础 (P40—P45)
2.1程序设计方法与风格
程序设计的风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。
源程序文档化应考虑如下几点:
(1) 符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解。
(2) 程序注释:正确的注释能够帮助读者理解程序。注释一般分为序言性注释和功能性注释。
(3) 视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。
2.2结构化程序设计
2.2.1结构化程序设计的原则 (P41—P42)
结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。
2.2.2结构化程序的基本结构与特点 (P42—P43)
1. 顺序结构
2. 选择结构:选择结构又称为分支结构。
3. 重复结构:重复结构又称为循环结构。
2.3面向对象的程序设计
今天面向对象方法已经发展成为主流的软件开发方法。
一些著名的面向对象语言(如C++、Java)
2.3.2面向对象方法的基本概念 (P45—P48)
1. 对象
对象是面向对象方法中最基本的概念。对象可以用来表示客观世界中的任何实体。
面向对象的程序设计方法中涉及的对象由一组表示其静态特征的属性和它可执行的一组 *** 作组成。
(4) 封装性。
2. 类(Class)和实例(Instance)
将属性、 *** 作相似的对象归为类,也就是说,类是具有共同属性、共同方法方法的对象的集合。所以,类是对象的抽象,而一个对象则是其对应类的一个实例。
3. 消息
对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间传递的信息。
4. 继承
继承是面向对象的方法的一个主要特征。
第3 章 软件工程基础
3.1软件工程基本概念
3.1.1软件定义与软件特点 (P50)
计算机软件是包括程序、数据及相关文档的完整集合。
可见软件由两部分组成:一是机器可执行和程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
软件的特点:
① 软件是一种逻辑实体,而不是物理实体,具有抽象性。
② 软件的生产与硬件不同,它没有明显的制作过程。
③ 软件在运行、使用期间不存在磨损、老化问题。
④ 软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题。
⑤ 软件复杂性高,成本昂贵。
⑥ 软件开发涉及诸多的社会因素。
3.1.2软件危机与软件工程 (P51—P52)
软件工程概念的出现源自软件危机。
20世纪60年代末以后,“软件危机”。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1968年在北大西洋公约组织会议(NATO会议)上,讨论摆脱软件危机的办法,软件工程作为一个概念首次被提出。
软件工程包括个要素,即方法、工具和过程。
3.1.3软件工程过程与软件生命周期 (P52—P53)
2.软件生命周期
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
3.1.4软件工程的目标与原则(P53—P54)
1. 软件工程的目标
软件工程内容主要包括:软件开发技术和软件工程管理。
3.1.5软件开发工具与软件开发环境 (P54)
1. 软件开发工具 (VB、VC++、VFP)
2. 软件开发环境
软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具集合。
计算机辅助软件工程(CASE)
3.2结构化分析方法
3.2.1需求分析与需求分析方法 (P53—P59)
1. 需求分析
(1) 需求分析阶段的工作
需求分析阶段的工作,可以概括为四个方面:
① 需求获取
② 需求分析
③ 编写需求规格说明书
④ 需求评审
2. 需求分析方法
常见的需求分析方法有:
① 结构化分析方法。主要包括:面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)
② 面向对象的分析方法(OOA)
3.2.2结构化分析方法 (P55—P59)
2.结构化分析的常用工具
(1) 数据流图(DFD)
(2) 数据字典(DD)
数据字典是结构化分析方法的核心。
(3) 判定树
(4) 判定表
3.2.3软件需求规格说明书 (P59—P60)
软件规格说明书(SRS)是需求分析阶段的最后成果,是软件开发中的重要文档。
软件需求规格说明书的作用是:
① 便于用户、开发人员进行理解和交流。
② 反映出用户问题的结构,可以作为软件开发工作的基础和依据
③ 作为确认测试和验收的依据。
3.3结构化设计方法
3.3.1软件设计基本概念 (P60—P62)
1.软件设计的基础
软件设计分两步完成:概要设计和详细设计。
2.软件设计的基本原理
(1) 抽象
(2) 模块化
(3) 信息隐蔽
(4) 模块独立性
模块独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
① 内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。
② 耦合性:耦合性是模块间互相连接的紧密程度的度量。
耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合。
3.3.3详细设计 (P67—P71)
几种主要的工具:
1. 程序流程图(PFD)
2. N-S (盒图)
3. PAD图PAD图是问题分析图(Problem Analysis Diagram)的英文缩写。
4. PDL
过程设计语言(PDL)也称为结构化的英语和伪码。
3.4软件测试
软件测试的投入,通常其工作量、成本占软件开发总工作量、总成本的40%以上。
软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程。
3.4.1软件测试的目的 (P71)
关于软件测试的目的,软件测试是为了发现错误而执行程序的过程。
3.4.3软件测试技术与方法综述(P71—P77)
可以分为静态测试和动态测试方法。若按照功能划分可以分为白盒测试和黑盒测试方法。
1. 静态测试与动态测试
(1) 静态测试
静态测试可以由人工进行,充分发挥人的逻辑思维优势。
(2) 动态测试
静态测试不实际运行软件,主要通过人工进行。动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。
2. 白盒测试
白盒测试方法也称结构测试或逻辑驱动测试。
3. 黑盒测试方法
黑盒测试方法也称功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部和逻辑结构和内部特性。
3.4.4软件测试的实施(P77—P80)
软件测试是保证软件质量的重要手段。
软件测试过程一般按4个步骤进行,
1. 单元测试
单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验的测试。
2. 集成测试
集成测试是测试和组装软件的过程。
3. 确认测试
4. 系统测试
3.5程序的调试
3.5.1基本概念 (P80—P81)
程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。
软件测试贯穿整个软件生命期,调试主要在开发阶段。
3.5.2软件调试方法 (P81—P82)
1. 强行排错法
2. 回溯法
3. 原因排除法
第4章 数据库设计基础 (P84—P111)
4.1数据库系统的基本概念
4.1.1数据、数据库、数据库管理系统 (P84—P87)
1. 数据
数据(Data)实际上就是描述事物的符号记录。
2. 数据库
数据库(简称DB)是数据的集合。
3. 数据库管理系统
数据库管理系统(简称DBMS)它是一种软件。
数据库管理系统是数据库系统的核心。
目前流行的DBMS均为关系数据库系统,如微软的Visual FoxPro和Access等。
4. 数据库管理员(简称DBA)
5. 数据库系统
数据库系统(简称DBS)由如下几部分组成:数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一____硬件平台(硬件)、系统平台之二——软件平台(软件)这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。
4.1.2数据库系统的发展 (P87—P88)
数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
1. 关系数据库系统阶段
数据管理三个阶段的比较
人工管理 文件系统 数据库系统
特点 数据共享程度 无共享
冗余度大 共享性差
冗余度大 共享性大
冗余度小
数据独立性 不独立,完全依赖于程序 独立性差 具有高度的物理独立性和一定的逻辑独立性
4.1.3数据库系统的基本特点 (P88—P890
数据库系统具有以下特点:
1. 数据的集成性
2. 数据的高共享性与低冗余性
3. 数据独立性
数据独立性是数据与程序间的互不依赖性,数据独立性一般分为物理独立性与逻辑独立性两级。
(1) 物理独立性:物理独立性即是数据的物理结构的改变,从而不致引起应用程序的变化。
(2) 逻辑独立性:数据库总体逻辑结构的改变,不需要相应修改应用程序,这就是数据 的逻辑独立性。
4. 数据统一管理与控制
4.1.4数据库系统的内部结构体系 (P89—P91)
1. 数据库系统的三级模式
(1) 概念模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。
(2) 外模式。外模式也称子模式或用户模式。它是用户的数据视图。
(3) 内模式。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。
2. 数据库系统的两级映射
(1) 概念模式到内模式的映射。
(2) 外模式到概念模式的映射。
4.2数据模型
4.2.1数据模型的基本概念 (P91)
数据模型按不同的应用层次分成三种类型,它们是概念数据模型、逻辑模型、物理数据模型,
概念模型有E-R模型、逻辑数据模型又称数据模型,
层次模型、网状模型、关系模型,
物理数据模型又称物理模型。
1.2.2 E-R模型 (P91—P95)
概念模型是E-R模型(或实体联系模型)
1.E-R模型的基本概念
(1)实体
现实世界中的事物可以抽象成为实体
(2)属性
现实世界均有一些特性,这些特性可以用属性来表示。属性刻画了实体的特征。
(3)联系
一对一的联系,简记为1:1。
一对多或多对一联系,简记为1:M(1:m)或M:1(m:1)。
多对多联系,简高为M:N或m:n。
3.E-R模型的图示法
在E-R图中用椭圆形表示属性。
在E-R图中用菱形表示联系。
4.2.3层次模型的基本结构是树形结构 (P95)
4.2.4网状模型 (P95—P96)
网状模型是一个不加任何条件限制的无向图。
4.2.5关系模型 (P96—P98)
1.关系的数据结构
关系模型采用二维表来表示。
4.3关系代数
(4)查询
① 投影运算
② 选择运算
③ 笛卡尔积运算
则关系R与S经笛卡尔积记为R×S。
3.关系代数中的扩充运算
(1)交运算 (还有并和差)
关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组成,记为R∩S。
(2)除运算
如果将笛卡尔积运算看作乘运算的话,那么除运算就是它的运算。
T÷R=S或R/R=S
4.4数据库设计与管理
数据库设计是数据库应用核心。
4.4.1数据库设计概述 (P104)
整个数据库应用系统的开发成目标独立的若干阶段。它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。
4.4.2数据库设计的需求分析 (P104—P105)
4.4.3数据库概念设计 (画E-R图) (P105—P108)
4.4.4数据库的逻辑设计 (P108—P109)
1. 从E-R图向关系模式转换。
4.4.5数据库的物理设计 (P110)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)