azmzoxu计算 - 机二级公共基础知识

更新时间:2023-03-13 23:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

^

| You have to believe, there is a way. The ancients said:\heaven is trying to enter\time, must be managed to get one step down, only have struggled to achieve it.

-- Guo Ge Tech

一.数据结构与算法 一、基本概念:

? 数据(Data):信息的载体,能够被计算机识别、存储和加工处理的物理符号。包括文本

类型的数据(如:字母、数字、汉字)和多媒体类型的数据(如:声音、动画、图像)。 ? 数据元素(Data Element):是数据的基本单位,有时也称为元素、结点、顶点、记录,

可以有若干个数据项(字段、域、属性)组成。 ? 数据结构(Data Structure):指的是数据之间的相互关系,即数据的组织形式。其包

括三个部分:

1、逻辑结构:数据元素之间的逻辑关系

2、存储结构:数据元素及其关系在计算机存储器内的表示。 3、数据的运算(算法):即对数据施加的操作 ? 数据的逻辑结构有两大类: 1、线性结构:

特征是:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点最多只有一个直接前趋和一个直接后继。 例:一维数组、链表、栈、队列、串 2、非线性结构:

特征是:一个结点可能有多个直接前趋和直接后继。 例:多维数组、广义表、树、图

? 数据的存储结构有以下基本存储方法: 1、顺序存储方法:

该方法是将逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,一般通过数组来实现的。 2、链接存储方法:

该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。通过指针类型来实现的。 3、索引存储方法:

该方法通常是在存储结点信息的同时,还建立附加的索引表,索引表中的每一项称为索引项,索引项的一般形式是:关键字,地址。 4、散列存储方法:

该方法的基本思想是根据结点的关键字直接计算出该结点的存储地址,通过散列函数实现。例:除余法散列函数、相乘取整法散列函数 ? 算法的基本特征:

1、可行性(Effectiveness):针对实际问题而设计的算法,执行后能够得到满意的结果。 2、确定性(Definiteness):算法中的每一个步骤都必须有明确的定义,不允许出现歧义性。 3、有穷性(Finiteness):算法必须在有限时间内做完,即必须在执行有限个步骤之后终止。

? 时间复杂度:该算法执行的时间耗费,它是该算法所求解问题规模n的函数。 ? 空间复杂度:该算法执行时所耗费的存储空间,它也是问题规模n的函数。

二、线性表: ? 线性表(Linear List):是由n(n>=0)个数据元素(结点)a1,a2,a3,······,an组成的有限序

列。对于非空的线性表,有且仅有一个开始结点a1,它没有直接前趋;有且仅有一个终端结点an,它没有直接后继;其余的结点有且仅有一个直接前趋结点和一个直接后继结点。

? 线性表的存储结构: 1、顺序存储(Sequential List):将线性表的结点按逻辑次序依次存放在一组地址连续的存储单元里,用这种方法存储的线性表称为顺序表。

2、链式存储(Linked List):逻辑上相邻的结点,物理上也相邻,存储单元可以是连续的,也可以是不连续的,在存储每个结点值的同时,还存储指向其后继结点的地址,用这种方法存储的线性表称为链表。 ? 常见的运算有:

表的初始化、求表的长度、取表中的第i个结点、查找结点、插入新的结点、删除结点。 ? 顺序表和链表的比较: 1、基于空间的考虑:

A、顺序表的存储空间是静态分配的,而链表的存储空间是动态分配的。

B、顺序表占的存储空间必须是连续的,而链表占的存储空间可以是连续的,也可是不连续的

C、顺序表存储密度为1,而链表中的每个结点,除了数据域外,还要额外的设置指针域,存储密度小于1

2、基于时间的考虑:

A、在链表中的任何位置上进行插入和删除,只需要修改指针,而顺序表中平均将要移动近一半的结点。

B、顺序表是随机存取结构,它的存取时间为O(1),而链表需从头结点顺着链扫描链表。 总之,当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构;当线性表的长度变化较大,难以估计其存储规模时,以采用链表作为存储结构为好。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;对于频繁进行插入和删除的线性表,宜采用链表做存储结构。 例:关于线性表的描述中,错误的是( )

A、线性表是线性结构 B、线性表的顺序存储结构,必须占用一片连续的存储单元 C、线性表是单链表 D、线性表的链式存储结构,不必占用一片连续的存储单元 用数组表示线性表的优点是( )

A、便于插入和删除操作 B、便于随机存取

C、可以动态地分配存储空间 D、不需要占用一片连续的存储空间

三、栈:

? 栈(Stack):是限制仅在表的一端进行插入和删除运算的线性表,通常称插入、删除的

这一端为栈顶(Top),另一端称为栈底(Bottom)。当表中没有元素时称为空栈。是一种后进先出的线性表,又称为LIFO表。 ? 栈的基本运算有:

栈的初始化、判栈空、判栈满、进栈、出栈等 ? 栈的存储:

顺序存储、链式存储

例:若进栈的输入序列是A、B、C、D、E,并且在它们进栈的过程中可以进行出栈操作,则不可能出现的出栈序列是( )

A、EDCBA B、DECBA C、DCEAB D、ABCDE

四、队列:

? 队列(Queue):也是一种运算受限的线性表,它只允许在表的一端进行插入,而在另一

端进行删除。允许删除的一段称为队头(Front),允许插入的一段称为队尾(Rear)。(类似于生活中的购物排队)。是一种先进先出的线性表,又称为FIFO表。 ? 队列的基本运算:

队列的初始化、判队空、判队满、入队、出队 ? 队列的存储实现:

顺序存储、链式存储

例:一个队列的入队序列是1,2,3,4,则队列的输出序列是 ( )

A、4,3,2,1 B、1,2,3,4 C、1,4,3,2 D、3,2,4,1

五、串:

? 串(String):是零个或多个字符组成的有限序列。

串中所包含的字符个数称为该串的长度。

串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串 注:空串是任意串的子串,任意串是其自身的子串 ? 串有串常量、串变量之分:

1、串常量在程序中只能被引用但不能改变其值,即只能读不能写。 2、串变量其值是可以改变的。 ? 串的基本运算:

求串长、串复制、串联接、串比较、字符定位、

六、树(非线性结构):

? 树(Tree):是n(n>=0)个结点的有限集T,T(n=0)为空时称为空树,否则它满足如下两

个条件:

1、有且仅有一个特定的称为根(Root)的结点

2、其余的结点可分为m(m>=0)个互不相交的子集T1,T2,??.,Tm,其中每个子集本

身又是一棵树,并称其为根的子树(Subtree)。

? 在树的树形图表示中,结点通常是用圆圈表示的,结点的名字一般是写在圆圈旁边,有

时亦可写在圆圈内。 ? 度(Degree):一个结点拥有的子树数称为该结点的度。一棵树的度是指该树中结点的最

大度数。

? 叶子(Leaf):度为零的结点称为叶子或终端结点 ? 分支结点(Node):度不为零的结点称为分支结点。

? 树中某个结点的子树之根称为该结点的孩子(Child)结点或子结点,相应的该结点称为

孩子结点的双亲(Parents)结点或父结点。 ? 同一个双亲的孩子称为兄弟结点(Sibling)

? 结点的层数(Level)是从根起算,设根的层数为1,其余结点的层数等于其双亲结点的层

数加1.

? 树中结点的最大层数称为树的高度(Height)或深度(Depth). ? 森林(Forest):是m(m>=0)棵互不相交的树的集合。删去一棵树的根,就得到一个森林,

反之,加上一个结点作树根,森林就变为一棵树。

? 二叉树(Binary Tree):是n(n>=0)个结点的有限集,它或者是空集(n=0),或者由一个

根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 二叉树中,每个结点最多只能有两棵子树,并且有左右之分。 ? 二叉树的五种基本形态:

例:具有3个结点的二叉树有几种形态。

k

? 满二叉树(Full Binary Tree):一棵深度为k且有2-1个结点的二叉树称为满二叉树 ? 完全二叉树(Complete Binary Tree):若一棵二叉树至多只有最下面的两层上结点的度

数可以小于2,并且最下一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。 二叉树的性质:

i-1

性质1:二叉树第i层上的结点数目最多为2(i>=1)

k

性质2:深度为k的二叉树至多有2-1个结点(k>=1)

性质3:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1 性质4:具有n个结点的完全二叉树的深度为[lgn]+1(取下整) 或 [lg(n+1)](取上整)。 例:一棵二叉树的结点数为18个,求它的最小高度

已知度为2的结点数为15个,求叶子结点数 二叉树的遍历:

? 遍历(Traversal):是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次

访问。 前序遍历:(又称为先序遍历、先根遍历) 若二叉树为空,则执行空操作。否则: 1、访问根结点; 2、前序遍历左子树; 3、前序遍历右子树。 中序遍历:(又称为中根遍历)

若二叉树为空,则执行空操作。否则: 1、中序遍历左子树; 2、访问根结点; 3、中序遍历右子树。 后序遍历:(又称为后根遍历)

若二叉树为空,则执行空操作。否则: 1、后序遍历左子树; 2、后序遍历右子树; 3、访问根结点。

例:已知一棵二叉树的中序遍历序列是:FDGBACHE,其后序遍历序列是:FGDBHECA

求其前序遍历序列。

一棵二叉树的前序遍历序列为ABDGCFK,中序遍历序列为DGBAFCK,则结点的后序遍历序列是( )

A、ACFKDBG B、GDBFKCA C、KCFAGDB D、ABCDFKG

七、排序(Sort):

? 所谓排序,就是指整理文件中的记录,使之按关键字递增(或递减)次序排列起来。 ? 冒泡排序(Bubble Sorting):

通过对待排序序列从后向前或从前向后(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较大的元素逐渐从前部移向后部或较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元)。

? 直接选择排序(Selection Sorting):

扫描整个线性表,从中选出最小的元素,将它交换到表的最前面;然后对剩下的子表采用同样的方法,直到子表空为止。

? 直接插入排序(Insertion Sorting):

每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

? 快速排序(Quick Sorting):任取待排序序列中的某个元素作为基准(一般取第一个元

素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。

各种内部排序方法的比较

排序方法 直接插入 直接选择 冒 泡 快 速 堆 时间复杂度 最好时间 O(n) O(n) O(n) O(nlgn) O(nlgn) 2平均时间 O(n) O(n) O(n) O(nlgn) O(nlgn) 222最坏时间 O(n) O(n) O(n) O(n) O(nlgn) 2222空间复杂度 O(1) O(1) O(1) O(lgn) O(1)

例:对一个具有n个元素的序列进行冒泡排序,在最坏情况下,要进行交换的次数是( )

A、n(n+1)/2 B、n(n-1)/2 C、n*n/2 D、n(n+1)/2-1 对n个元素进行冒泡排序过程中,最好情况下的时间复杂性为( )

2

A、O(1) B、O(log2n) C、O(n) D、O(n)

对n个元素进行快速排序的过程中,平均情况下的时间复杂性为( )

2

A、O(1) B、O(lgn) C、O(n) D、O(nlgn)

八、查找(Searching):

? 所谓查找是指给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。

若找到,则查找成功,返回该结点的信息或该结点在表中的位置;否则查找失败,返回相关的提示信息。

? 顺序查找(Sequential Search)的基本思想是:从表的一端开始,顺序扫描线性表,依

次将扫描到的结点关键字和给定值K相比较,若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。顺序查找即适用顺序存储结构,又适用链式存储结构。 查找成功的平均查找长度为:(n为结点数目) (1+2+3+4+···+n) / n = (n+1)/2 ? 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法,二分查找要求线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。另外,二分查找只适用顺序存储结构,在链式存储结构上无法实现二分查找。 查找成功时的平均查找长度:(n为结点数目)

n?1lg(n?1)?1n当n很大时,可用近似公式: lg(n+1)-1 表示

二.程序设计

2.1 程序设计方法与风格

程序设计是一门技术,需要相应理论、技术、方法和工具来支持。程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象的程序设计阶段。 养成良好的程序设计的设计风格,主要考虑下述的因素: 1. 源程序文档化

源程序文档化应考虑如下几点:

(1)符号名的命名:符号名的命名有一定含义,便于理解 (2)程序注释:正确的注释帮助读者理解程序 (3)视觉组织:程序层次清晰 2. 数据说明的方法

数据说明应考虑如下几点: (1)数据说明的次序规范化

(2)说明语句中变量安排有序化。 (3)使用注释来说明复杂数据结构 3. 语句的结构

程序应该简单易懂,语句构造应该简单直接。应该注意的是: (1)在一行内只写一条语句 (2)程序编写应优选考虑清晰性

(3)除非对效率有特殊要求,程序编写要清晰第一、效率第二 (4)首先要保证程序正确,然后要求提高速度 (5)避免使用临时变量而使程序可读性下降 (6)避免不必要的转移 (7)尽可能使用库函数

(8)避免使用复杂的条件语句

(9)尽量减少使用“否定”条件的条件语句 (10)数据结构要有利于程序的简化

(11)要模块化,使模块功能尽可能单一化 (12)利用信息隐藏,确保每一个模块的独立性 (13)从数据出发去构造程序

(14)不要修补不好的程序,要重新编写 4. 输入和输出

无论是批处理的输入和输出方式,还是交互式的输入和输出方式,在设计和编程时都应该考虑如下原则:

(1)对所有的输入数据都要检验数据的合理性 (2)检查输入项的各种重要组合的合理性 (3)输入格式要简单。

(4)输入数据时,应允许使用自由格式 (5)应允许缺省值

(6)输入一批数据时,最好使用输入结束标志

(7)在交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入要求,在数据输入过程中和输入结束时应在屏幕给出状态信息

(8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输出语句的一致性。给所有输入加注释,并设计输出报表格式。 2.2 结构化程序设计

2.2.1 结构化程序设计的原则

结构化程序设计方法主要原则包括:

1. 自顶向下。设计程序时先考虑总体,后考虑细节 2. 逐步求精。对复杂问题,逐步细化。 3. 模块化。

4. 限制使用goto语句

2.2.2 结构化程序的基本结构与特点

结构化程序设计方法是程序设计的先进方法和。和采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护。结构化程序设计方法基本可用三种基本结构就可实现。 1. 顺序结构

顺序结构是顺序顺序执行结构,即是按照程序语句的自然顺序,一条一条语句地执行。 2. 选择结构

选择结构又称分支结构,它包括简单选择和多分支选择,这种结构可以根据给定条件,判断执行哪一个分支中的语句。 3. 重复结构

重复结构又称为循环结构。它根据给定的条件判断是否重复执行某一段相同的程序。 2.2.3 结构化程序设计原则和方法的应用

在结构化程序设计的具体实施中,要注意把握如下要素:

(1)使用程序设计语言中的顺序、选择、循环等控制结构表示程序的控制逻辑 (2)选用的控制结构只准许有一个入口和一个出口

(3)程序语句组成容易识别的程序专项,每块只有一个入口和一个出口 (4)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现 (5)语言中所没有的控制结构,应该采用前后一致的方法来模拟 (6)严格控制GOTO语句使用。 2.3 面向对象的程序设计 2.3.1 关于面向对象方法

面向对象(Object Oriented)方法已经发展成为主流的软件开发方法。面向对象方法的形成起源于实现语言,首先对设计语言的研究,随之形成面向对象分析和设计方法。 面向对象方法的本质,就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。也就是说,系统中的对象以及对象之间的关系能够如实反映问题域中固有事物及其关系。 面向对象方法有如下优点:

1. 与人类习惯的思维方法一致 面向对象和技术以对象为核心,对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。如CD播放器、媒体播放器、软件窗口等等 2. 稳定性好

面向对象的软件系统的结构是根据问题领域的模型建立起来的,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改。 3. 可重用性好

软件重用是指在不同的软件开发过程中重复使用相同或相似软件元素(一般称为类)的过程。重用是提高软件生产率的最主要的方法。

利用可重用的软件成分构造新的软件系统,一个对象类可以重复使用,对象类可以创建,也

以在已有的类上修改,但不影响原有类。 4. 易于开发大型软件产品

可以把一个大型产品看作一系列互相独立的小产品来处理,这样不公降低了技术难度,而又使开发工作的管理变得容易。 5. 可维护性好

一般用传统的开发方法和面向过程的方法开发出来的软件很难维护,而面向对象的方法开发的软件可维护性好。 (1)稳定性较好 (2)易于修改 (3)易于理解

(4)易于测试和调试

2.3.2 面向对象方法的基本概念

关于面向对象方法,对其概念有许多不同的看法,但都涵盖了对象及对象属性、方法、类、继承、多态性几个基本要素。 1. 对象(object)

对象是面向对象方法中最基本的概念。对象用来表示客观世界中的任何实体。 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。 对象有如下特点: (1)标识惟一性 (2)分类性 (3)多态性 (4)封装性

(5)模块独立性好

2. 类(Class)和实例(Instance)

将属性、操作相似的对象归为类,类具有共同属性、共同方法的对象的集合。如中图中命令按钮就是同类对象。 3. 消息(Message)

面向对象的世界是通过对象与对象彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这的机制称为“消息”。 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 一个消息由三部分组成: (1)接收消息的对象的名称 (2)消息标识符(也称消息名) (3)零个或多个参数

比如在窗体上画一个圆,对象名MyForm,消息名Circle,参数(50,50)为圆心,25为半径 MyForm.Circle (50,50),25 4. 继承(Inheritance)

继承是面向对象的方法的一个主要特征。继承是使用已有的类定义作为基础(直接获得已有的性质和特征)建立新类的定义技术。

已有的类可以当做基类引用,则新类可当做派生类引用。 如右图就是VB中的基类:

5. 多态性(Polymorphism)

对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性

三.软件工程基础

一、基本概念:

? 软件(Software):软件是一种产品(逻辑产品),指的是计算机中程序及其说明程序的各

种文档。“程序”是计算任务的处理对象和处理规则的描述;“文档”是有关计算机程序功能、设计、编制、使用的文字或图形资料。 ? 软件危机的表现:

1、软件需求的增长得不到满足 2、软件开发成本和进度无法控制 3、软件质量难以保证

4、软件不可维护或维护程度非常低 5、软件成本不断提高

6、软件开发生产效率的提高赶不上硬件的发展和应用需求的增长 ? 软件工程(Software Engineering):用工程化的方法、科学知识和技术原理来定义、开

发、维护软件的一门学科。 ? 软件工程的目标:

付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。 ? 软件工程研究的主要内容是软件开发技术和软件开发管理两个方面。 ? 软件生存周期:是指一个软件从提出开发要求开始直到该软件报废(停止运行)为止的整

个时期。

? 软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。

? 常用的模型有:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模

瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。主要包括问题定义及可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护几个阶段。

例:下列描述中正确的是( ) A、程序就是软件 B、软件开发不受计算机系统的限制 C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合

二、软件可行性研究与项目开发计划:

? 软件可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目是否能够

开发,是否值得去开发。 ? 可行性研究的任务:

A、技术可行性 B、经济可行性

C、社会可行性(法律可行性) ? 可行性研究的具体步骤:

1、确定项目规模和目标 2、研究正在运行的系统

3、建立新系统的高层逻辑模型 4、导出和评价各种方案

5、推荐可行的方案 6、编写可行性研究报告

三、软件需求分析:

? 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的

需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。

? 需求分析的基本任务:

1、问题识别 A、功能需求 B、性能需求 C、环境需求 D、用户界面需求

2、分析与综合,导出软件的逻辑模型 3、编写文档(需求规格说明书) ? 需求分析的方法:

1、结构化分析(Structured Analysis):是面向数据流进行需求分析的方法。

SA方法利用图形等半形式化的描述方式表达需求,主要描述工具:

A、数据流图(DFD):是SA方法中用于表示系统逻辑模型的一种工具,以图形的方式描绘数据在系统中流动和处理的过程。

B、数据字典(DD):用以定义数据流图中的各个成分的具体含义,为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。 C、描述加工逻辑的结构化语言、判定表、判定树 2、IDEF方法(是 ICAM Definition的缩写):

是一种用于进行复杂系统分析和设计的方法,是在结构化分析和设计技术的基础上提出来的。

3、面向对象分析方法(OOP):

将客观世界的事物抽象为对象,通过属性和方法描述对象的状态和行为,具有继承、封装和多态性等特征。

例:软件开发的结构化分析方法中,常用的描述软件功能需求的工具是( ) A、业务流程图、处理说明 B、软件流程图、模块说明 C、数据流程图、数据字典 D、系统流程图、程序编码

四、软件概要设计:

将软件需求转换为软件表示的过程。 ? 软件概要设计的基本任务:

1、设计软件系统结构

2、数据结构及数据库设计(概要设计、逻辑设计、物理设计): 3、编写概要设计文档: 4、评审:

? 软件设计的方法:

模块化:模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数、子程序等。

? 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。其度量标准是:耦合性和内聚性 ? 耦合性也称块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。模块

之间联系越紧密,其耦合性就越强,模块的独立性则越差。

? 内聚性也称块内联系,指模块功能强度的度量,即一个模块内部各个元素(语句之间、

程序段之间)彼此结合的紧密程度的度量。

? 将软件系统划分模块时,尽量做到高内聚低耦合。 例:为了使模块尽可能独立,要求( )

A、模块的内聚程序要尽量高,且各模块间的耦合程序要尽量强 B、模块的内聚程序要尽量高,且各模块间的耦合程序要尽量弱 C、模块的内聚程序要尽量低,且各模块间的耦合程序要尽量弱 D、模块的内聚程序要尽量低,且各模块间的耦合程序要尽量强

五、软件详细设计:

主要确定每个模块具体执行过程 ? 软件详细设计的基本任务:

1、为每个模块进行详细的算法设计: 2、为模块内的数据结构进行设计: 3、对数据库进行物理设计: 4、输入、输出格式设计 5、编写详细设计说明书: 6、评审:

? 详细设计常用三种工具:

图形(流程图、盒图、问题分析图PAD)、 表格(判定表)、

语言(过程设计语言,又称为伪码)

六、软件编码:

主要是将详细设计得到的处理过程描述转换为基于某种计算机语言的程序 常用的计算机语言:Pascal 、C、C++、Java等

七、软件测试:

软件测试代表了需求分析、设计、编码的最终复审。软件测试贯穿于软件开发的全过程。 ? 软件测试的目的:

1、软件测试是为了尽可能多地发现程序中的错误而执行程序的过程。 2、一个好的测试用例能够发现至今尚未发现的错误。 3、一个成功的测试是发现了至今尚未发现的错误的测试。 ? 软件测试的原则:

1、测试用例应由输入数据和预期的输出数据两部分组成。

2、测试用例不仅选用合理的输入数据,还要选择不合理的输入数据 3、除了检查程序是否做了它应该做的事 4、应制定测试计划并严格执行,排除随意性 5、长期保留测试用例

6、对发现错误较多的程序段,应进行更深入的测试 7、程序员避免测试自己的程序 ? 软件测试方法:

1、静态测试:

是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

2、动态测试:是指通过运行程序发现错误

A、黑盒测试法(功能测试):

主要对软件的接口进行测试,依据需求规格说明书,检查程序是否满足功能要求。常用的技术是等价类划分法、边界值分析法、错误推测法、因果图法、综合策略法

B、白盒测试法(结构测试):

主要测试程序的内部结构和处理过程。常用的技术是语句覆盖、条件覆盖、路径覆盖、判定覆盖等

? 软件测试的实施:

1、单元测试:

单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验测试,主要针对模块的以下五个基本特征进行测试:

A、模块接口

B、局部数据结构: C、重要的执行路径: D、错误处理测试: E、边界条件: 2、集成测试:

集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。

主要方法有两种: 非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。

渐增式测试:逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试,每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。

3、确认测试:

确认测试又称有效性测试,它的任务是检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,因而需求规格说明是确认测试的基础。

4、系统测试:

系统测试是通过测试确认的软件作为整个计算机系统的一个元素,与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。 ? 程序调试:

调试是在进行了成功的测试之后才开始的工作,目的是确定错误的原因和位置,并改正错误,又称为纠错。

例:软件测试的目的是( )

A、证明软件的正确性 B、找出软件系统中存在的所有错误 C、尽可能多地发现软件系统中的错误 D、证明软件系统中存在错误

在软件测试方法中,黑箱测试法和白箱测试法是常用的方法,其中黑箱测试法主要是 用于测试( )

A、结构合理性 B、软件外部功能 C、程序正确性 D、程序内部逻辑

八、软件维护:

软件投入使用后进行的阶段,是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。主要是因为:隐含的错误要修改;新增的功能要加入进去;环境的变化对程序进行变动等。 ? 软件维护的内容有四类:

1、校正性维护:

为了识别和纠正错误,修改软件性能上的缺陷,其占整个维护工作的 21% 2、适应性维护:

为了使应用软件适应环境(硬件、系统软件、数据)的变化而修改软件的过程称为适应性维护,其占整个维护工作的25% 3、完善性维护:

增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护,其占整个维护工作的 50% 4、预防性维护:

为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护,其占整个维护工作的 4%

例:软件维护是指( ) A、维护软件正常运行 B、软件的配置更新 C、对软件的改进、适应和完善 D、软件开发期的一个阶段

软件生命周期中所花费用最多的阶段是( ) A、详细设计 B、软件编码 C、软件测试 D、软件维护

四.数据库原理基础

一、基本概念:

? 数据处理:是指将数据转换成信息的过程

? 数据管理是指对数据的组织、分类、编码、存储、检索和维护提供操作手段

其经历了以下阶段: 1、人工管理 2、文件系统 3、数据库系统

4、分布式数据库系统阶段 5、面向对象的数据库系统阶段 ? 数据库(Database):是指存储在计算机存储设备上的结构化的相关数据的集合,不仅包

括数据本身,还包括事物之间的联系。 ? 数据库应用系统(DBAS):是指系统开发人员利用数据库系统资源开发出来的,面向某一

类实际应用的应用软件系统。

? 数据库管理系统(DBMS):对数据库的建立、使用和维护进行管理和配置的软件系统。是数据库系统的核心

? 数据库系统(DBS):由硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理

员和用户组成。 ? 数据库系统的特点:

实现数据共享、减少数据冗余 采用特定的数据模型 具有较高的数据独立性 统一的数据控制功能

? 实体: 客观存在并且可以相互区别的事物称为实体。 ? 实体的属性:实体所具有的物性称为实体的属性。 ? 实体集:同类型的实体的集合称为实体集。

? 实体型:属性的集合表示一种实体类型,称为实体型。

例:数据库管理系统能实现对数据库中数据的查询、插入、修改和删除,这类功能称为( )

A、数据定义功能 B、数据管理功能 C、数据操纵功能 D、数据控制功能 ? 联系:实体之间的对应关系。

联系的类型:

1、一对一联系:表现为主表中的每一条记录只与相关表中的一条记录相关联。

例如: 班级与班长, 学校与校长

2、一对多联系:表现为主表中的每一条记录与相关表中的多条记录相关联。

例如: 班级与学生,部门与职工

3、多对多联系:表现为一个表中的多个记录在相关表中同样有多个记录相关联。

例如: 学生与课程, 工程项目与零件

? 数据模型:不仅反映事物本身,还用来表示实体及实体之间联系的方法。

1、层次模型:用树形结构表示实体及其之间联系的模型称为层次模型。 2、网状模型:用网状结构表示实体及其之间联系的模型称为网状模型。

3、关系模型:用二维表结构来表示实体及实体之间的联系的模型称为关系模型。 一个二维表称为一个关系,在VFP称为数据表。一个关系不仅表示实体本身还表示实体之间的联系。

例:用树形结构表示实体之间联系的模型是( ) A、关系模型 B、网状模型 C、层次模型 D、以上三个都是

二、关系数据库:

? ? ? ?

元组(Record):在一个关系中,水平方向的行称为元组。在VFP中称为记录 属性(Field):一个二维表中垂直方向的列称为属性。在VFP中称为字段名 域(Domain):属性的取值范围。根据数据类型和宽度来决定的。

关键字(Primary Key):其值能够惟一标识一个元组的属性或属性的组合。 注:关键字不能出现空值或重复值

? 外部关键字(Foreign Key):如果表中的一个字段不是本表的主关键字或侯选关键字,

而是另外一个表的主关键字或侯选关键字,这个字段在本表中称为外部关键字。 ? 关系性质:

二维表中元组的个数是有限的——元组个数有限性 二维表中元组均不相同——元组的惟一性

二维表中元组的次序可以任意交换——元组的次序无关性

二维表中元组的分量是不可分割的基本数据项——元组分量的原子性 二维表中属性名各不相同——属性名惟一性

二维表中属性与次序无关,可任意交换——属性的次序无关性 例:关系数据模型中表示实体和实体间的联系的结构是( )

A、树型 B、网状 C、二维表 D、对象

三、关系运算:

? 并(Union):是由两个关系的元组组成的集合。(两个关系必须具有相同的关系模式) ? 差(Difference):若有两个相同结构的关系R和S,R差S的结果属于R但不属于S

的元组组成的集合。 ? 交(Intersection):若有两个相同的结构关系R和S,交的结果为两个关系共同的元

组。

? 选择(Selection):从关系中找出满足给定条件的元组的操作称为选择。 ? 投影(Projection):从关系模式中指定若干个属性组成新的关系称为投影。 ? 联接(Join):是关系的横向结合,关系模式改变了,是多个关系的关系模式的组合。

联接的结果是多个关系中满足条件的元组。

本文来源:https://www.bwwdw.com/article/282x.html

Top