软件设计师教程第五版总结

212 阅读13分钟

软件设计师备考:

1.栈和队列Queue:

后进先出

先进先出

 

循环队列 空队列 队列满了 元素入队、出队

队列链式存储

串:字符串  存储结构(顺序存储结构、链式存储)

 

2.数组:

(1) 定长线行表 维数 拓展,即线性表中的元素又是一个线性表

N 维数组是一种“同构”的数据结构,每个元素 类型相同、结构一致。

 

 

(2) 数组结构特点:

1.数目固定 定义数组结构,不再元素个数的增减变化

2.数据元素具有相同的类型

1.下标关系具有上下界的约束且下标有序

2.两个基本运算:

① 存取相应的数据元素

② 修改相应的数据元素中某个数据项的值

3.矩阵:

在数据结构中,目的为了节省存储控件的情况下使矩阵的各种运算能高效地执行

稀疏矩阵:值相同的元素或0元素在矩阵中的分布有一定的规律,则称此类为特殊矩阵,否则称其为稀疏矩阵。

 

4.广义表:

由0个单素表或者多个子表组成的而有限序列

查找、插入、删除等操作

基本操作:取表头,取表尾

 

 

 

5.树:

非线性结构,一个数据元素有两个或两个以上的而直接后继元素,描述客观世界中广泛存在的层次结构关系

基本概念:

双亲、孩子和兄弟

结点的度

叶子结点

内部结点

结点的层次

树的高度

有序(无序)树

 

 

树的存储结构:双亲、孩子、孩子兄弟表示法

 

树和森林遍历:

先根、后根遍历

先序、中序遍历森林

 

树、森林和二叉树的相互转换:

任何一个森林或一棵树可以对应表示为一颗二叉树,而任何一颗二叉树也可能对应到一个森林或一棵树上。

 

 

 

 

6.遍历二叉树:

访问特点是无论按照哪种次序遍历,对于含有n个结点的二叉树,遍历算法的时间复杂度都是O(n)。

过程:实质上是按一定的规则将树中的结点排程一个线性序列的过程,遍历得到的是树中结点的一个线性序列。

 

7.线索二叉树:

实质是对一个非线性结构进行线性化的过程

左孩子,右孩子

 

8.最优二叉树:哈夫曼树,一类带权路径长度最短的书

9.哈夫曼编码:

长编码:对每个字符编制相同长度的二进制的统称(缺点电文的码串过长,不利于提高通信效率,因此希望缩短码串的总长度)

 

10.死锁:产生、解决的方式(预防,避免,检测,解除)

11.线程:

三个状态:就绪,运行和阻塞

两个类型:用户级线程,内核支持线程

12.存储器:

13.虚拟地址,地址空间和存储空间

14.分区存储管理:固定分区,可变分区(四个算法:最佳适应法,最差适应法,首次适应法,循环首次适应法),可重定位分区。

 

15.分页存储管理:

纯分页存储管理(分页管理,地址结构,页表)

16.快表:

地址映射机构中新增一个小容量的联想存储器,联想存储器由一组高速存储器组成,称为快表。

 

17.软件过程模型:

瀑布模型(需求分析-设计-编码-测试-运行与维护)

 

 

 

 

18.需求分析:

功能需求、性能需求、用户或人的因素、环境需求、界面需求、文档需求、资源使用需求、安全保密要求、可靠性要求、软件成本消耗和开发进度需求、其他非功能性要求。

系统测试:

1. 单元测试:

(1) 模块接口

(2) 测试模块的输入参数的形参在个数、属性和单位上是否一致

(3) 调用其他模块,所给出的实际采纳数和被调参数在个数、属性是否一致

(4) 调用标准函数时,所用的参数在属性、数目和顺序上是否正确

(5) 全局变量在各模块中的定义和用法是否一致

(6) 输入是否仅改变了形式参数

(7) 开/关的语句是否正确

(8) 规定的I/O格式是否与输入/输出语句一致

(9) 在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件

 

2. 局部数据结构(常见错误):

(1) 变量的说明是否合适

(2) 是否使用了尚未赋值或尚未初始化的变量

(3) 变量的初始值或默认值是否正确

(4) 变量名是否有错(例如拼写错)

 

3. 重要执行路径:计算方面的错误,比较和控制流的错误,出错处理,边界条件

 

 

 

19.测试web应用:

质量维度(内容、功能、结构、可用性、导航性、性能、兼容性、安全性)

 

20.黑盒子测试:

也称为功能测试

① 是否有错误的功能或遗漏的功能

② 界面是否有无?输入是否正确接收?输入是否正确?

③ 是否有数据结构或外部数据库访问错误?

④ 性能是否能够接受?

⑤ 是否有初始化或终止性错误?

 

测试技术的划分:等价类划分

 

调试方法:试探法,回溯法,对分查找法,归纳法,演绎法

 

21.系统维护应执行步骤:

① 提出维护或修改要求

② 领导审查并作出答复

③ 领导分配任务,维护人员执行修改

④ 验收维护成果并登记修改信息

 

 

22.项目管理:

(1) 明确目标及过程

(2) 保持动力

(3) 跟踪进展

(4) 做出明智的决策

(5) 进行事后分析

 

23.进度管理:划分,相互依赖,时间分配,工作量确认,确定责任,明确输出结果,确认里程碑

 

24.甘特图:

 

 

 

 

 

 

 

 

 

25.有向图:

 

 

 

26.软件配置项:

① 系统规格说明书

② 软件项目实施计划

③ 软件需求规格说明书

④ 设计规格说明书(数据设计、体系结构设计、模块设计、接口设计、对象描述(使用面向对象技术时))

⑤ 源代码清单

⑥ 测试计划和过程、测试用例和测试结果记录

⑦ 操作和安装手册

⑧ 可执行程序(可执行程序模块、连接模块)

⑨ 数据库描述(模式和文件结果、初始内容)

⑩ 用户手册

⑪ 维护文档(软件问题报告、维护请求、工程变更次序)

⑫ 软件工程标准

⑬ 项目开发小结

 

 

 

 

 

 

27.软件质量:

 

 

 

28.面向对象软件测试:

算法层,类层,模板层,系统层

 

29.用例图:

 

 

 

 

30.交互图:用于对系统的动态方面进行建模

 

穷举算法:

题目:从67**8 中找出能整除67 和78的数

For(let i = 67008; i < 67998; i++){

If(i % 67 == 0 && i % 78 == 0)

Console.log(i);

}

 

 

 

31.算法设计与分析:

算法特性:有穷性,去定性,可行性,输入,输出

 

32.算法分析

算法的表示:自然语言,流程图,程序设计语言,伪代码

时间复杂度

空间复杂度

 

 

33.递归树:

 

 

34.递归两要素:边界条件(递归出口),递归模式(递归体)

35.阶乘函数

36.分治法:

与递归像一堆孪生兄弟

经常出现在算法设计中,由此产生许多高效算法

设计思想: 将一个难以直接解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。

分治算法在每一层递归上有三个步骤: 分解,求解,合并

归并排序:将待排序的元素分成大致相同的两个子序列,分别对这两个子序列进行排序,最终将分好序的自序合并为所要求的序列。

 

37.动态规划算法:

与分治算法类似,但经过分解得到的子问题往往不是独立的,通常用于求解具有某种最优质的的问题。在这类问题中,可能会有许多可行解,每个解都对应一个值,我们希望找到具有最优值(最大值最小值)的那个解。

设计步骤:

(1) 找出最优解的性质,并刻画其结构特征

(2) 递归地定义最优解的值

(3) 以自底向上的方式计算出最优解

(4) 根据计算最优值时得到的信息,构造一个最优解

 

动态规划法是一个非常有效的算法设计技术。两大性质:最优子结构,重叠子问题

 

 

 

38.贪心算法:最简单****


解决最优化问题,局部最优化

 

39.回溯法:****

通用的解题法。可以系统地搜索一个问题的所有解或者任意解

步骤:

(1) 针对所给问题,定义问题的解空间

(2) 确定易于搜索的解空间结构

(3) 以深度优先的方式搜索解空间

 

两种算法框架:递归和非递归

 

回溯法的界限函数:(回溯法的可新问题,也是难问题)

问题的解空间往往很大,为了有效滴进行搜索,需要再搜索的过程中对某些结点进行剪枝,而对哪些结点进行剪枝,需要设计限界函数来判断。

 

 

40.分支限界法:****

求解目标是找出满足约束条件的一个解

如何设计衔接函数来有效的减小搜索空间是应用分支限界法要考虑的问题

类型:队列式分支限界法、优先队列分支限界法

 

41.概率算法:****

(1) 基本特征:

① 输入包括两部分:一部分是原问题的输入,另一部分是一共供算法进行随机选择的随机数序列

② 运行中,包括一处或多处随机选择,根据随机值来决定算法的运行路径

③ 结果不能保证一定是正确的,但能限制其出错概率

④ 在不同的运行过程中,对于相同的输入实例可以有不同额结果,因此对于相同的输入实例,概率算法的执行时间可能不同

 

(2) 四大类:

① 数值概率算法:数值问题

② 蒙特卡罗算法:求问题的精确解

③ 拉斯维加斯算法:不会得到不正确的解

④ 舍伍德算法:总能求得问题的一个解,切所求得的解总是正确

 

42.近似算法:****

解决难解问题

基本思想是放弃求最优解,近似最优解代替最优解

衡量标准:算法的时间复杂度、解的近似程度

 

 

43.数据挖掘算法****

功能:分类、回归、关联规则和聚类

 

44.数据模型:****

层次模型,网状模型,关系模型和面向对象模型

 

45.关系代数****

关系数据库

 

46.属性:****

描述一个事务常常取若干特征来表示,这些特征称为属性

 

47.关系的完整性分类:****

实体完整性、参照完整性(引用完整性)和用户定义完整性

 

48.关系代数运算符:****

集合运算符、专门的关系运算符、算数比较符合逻辑运算符

 

 

49.5种基本的关系代数运算:****

并、差、笛卡尔积、投影和选择

 

拓展的关系代数运算:

选择、投影、连接(0连接、等值连接和自然连接)、触发、广义笛卡尔积和外连接

 

 

 

 

50.数据库技术基础****

 

(1) 聚集函数:

 

 

(2) 关系型数据库设计:

设计满足适当范式的模式,可以通过判断分解后的模式达到几范式来评价模式规范化的程度。

(3) 1NF(第一范式):

若关系模式R的诶个分量是不可再分的数据项,则关系模式R属于第一范式。

问题:

① 冗余度大

② 引起修改操作的不一致性

③ 插入异常

④ 删除异常

(4) 2NF(第二范式):

当1NF消除了非主属性对码的部分函数依赖,则称为2NF

(5) 3NF(第三范式):

2NF消除了非主属性对码的传递函数依赖

 

51.数据库备份与恢复:****

① 故障类型:事务内部故障、系统故障、介质故障及计算机病毒。

② 备份方法:简历数据冗余(重复存储),进行数据转储(静态转储、海量转储和增量转储、日志文件)和登记日志文件

 

52.并发控制:****

(1) 带来的数据不一致性有三类:丢失修改、不可重复度和读脏数据

(2) 并发控制技术:

① 封锁:

排它锁。(若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,知道T释放A上的锁)

共享锁。(若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁,知道T释放A上的S锁。这就保证了其他事务读A,但在T释放A上的S锁不能对A进行任何修改)。

② 三级封锁协议:防止丢失修改和不读“脏”数据歪,还进一步防止不可重复度

③ 活锁与死锁:活锁-永远等待锁释放,死锁-两个以上的事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续运行下去的现象。

 

 

53.并发调度的可串行性:****

多个事务的并发执行是整错的,当且仅当其结果与某一次序串行滴执行他们时的结果相同,称这种调度策略是可串行化的调度。

 

54.两端分锁协议:****

事务必须分两个阶段对数据项枷锁和解锁。

即事务分两个阶段:第一,获得封锁,不能释放。第二阶段是蜂房封锁,但不能申请

 

55.封锁的粒度:****

封锁对象的大小。

封锁的对象:逻辑单元(如属性、元组、关系、索引项、整个索引甚至整个数据库),也可以是物理单元(如数据页或索引页)

 

 

网络与信息安全基础知识****

56.计算机网络的主要功能:****

① 数据通信

② 资源共享

③ 负载均衡:

④ 当网络中的某台计算机任务过重时,可将任务分派给其他空闲的多台计算机,使多台计算机相互协作,均衡负载,共同完成任务。

⑤ 高可靠性: 备用机,解决计算机出现故障而导致系统瘫痪的现象,从而大提高了系统的可靠性

 

57.计算机网络的分类:****

通信距离:广域网、局域网和城域网

信息交换方式:电路交换网、分组交换网和总和交换网

网络拓扑结构:星型网、树形网和总线网

通讯截止:双绞线网、同轴电缆网、光纤网和卫星网

传输带宽:基带网和宽带网

使用范围:公用网和专用网

速率:高速网、中速网和低速网

通信传播:广播式和点到点式