软考专题复习(上午题)
1.计算机组成原理
(1)系统可靠性分析
- 1.串联模型
- 2.并联模型
(2)海明校验码
- 确定校验码位数,可以用公式
2 ^ r >= 信息位数 + r + 1
来求 - 将选项代入即可求出
(3)Cache知识点
它位于CPU和主存之间,由硬件实现;容量小,一般在几KB到几MB之间;速度一般比主存快5到10倍
Cache存储器用来存放主存的部分拷贝(副本),无法扩大主存的容量
(4)浮点数运算
对阶是小阶向大阶对齐,尾数右移n位
(5)流水线相关计算
流水线时间计算:
- 找执行时间最长的指令作为流水线周期
- 套入执行指令的时间公式(t1……tk指各个步骤耗费事件,n指需要执行的指令条数,k指执行指令的步骤个数)
流水线吞吐率计算:
(6)浮点数编码范围
题目:
编码范围:
(7)奇偶校验
- 奇偶校验只能查错不能纠错
- 对于奇偶校验,是由若干位有放信息,再加上一个二进制位(校验位)组成校验码
- 奇校验“1”的个数为奇数,而偶校验“1”的个数为偶数,以此校验完整性
- 只有奇数个数据位发生错误,才能发现错误
2.系统安全分析与设计
(1)加密算法应用
- RSA是一种对称加密算法,而RSA由于效率问题,一般不直接用于大量的明文加密
- SHA-1与MD5属于信息摘要算法,SHA-1与MD5是不能用来加密数据的
- MD5是一种摘要算法,经过处理后生成一个128位散列值
- RC-5属于非对称加空算法,适合加大量的明文加密
- DES是共享密钥加密
vb
(2)CA认证
数字证书的产生:
3.法律法规知识
(1)基本知识
- 两人同时授予同一专利权是不可能的
- 在合同没有规定的情况下,受托方享有著作权
- 职工的职务作品,职工只享有署名权,单位享有著作权(专利)
(2)知识产权
4.多媒体基础
(1)音频计算
- 如果取样速率大于模拟信号最高频率的2倍,则可以用得到的样本中恢复原来的模拟信号
(2)图像计算
5.软件工程
(1)结构化开发
扇出是指模块直接调用下级模块的个数(扇出大表示模块复杂度高),扇入是指直接调用该模块的上级模块的个数(扇入大表示模块复用程度高)
工作流程如下:
- 研究、分析和审查数据流图
- 由数据流图推导出系统的初始结构图(接口设计)
- 根据分析模型中的实体关系图和数据字典进行数据设计
- 在设计的基础上,依旧分析模型中的加工规格说明、状态转换图进行过程设计(主要包含对数据结构和算法的设计)
结构化分析组成:
结构化方法的分析结果由以下几部分组成:数据流图、数据词典、加工逻辑说明、补充材料(结构图不属于结构化分析的输出)
(2)项目管理
解题方法:
- gantt图优点:进度时间清晰明了
- gantt图缺点:不能清晰描述任务间的依赖关系
- 最少完成时间取决于最长的活动序列(图中最少完成天数为20)
- 最早开始时间:正向推理,直接从起点出发分析,如果某个活动取决于两个路径,则取时间最长的做最早开始时间(BD最早开始时间为4,HK最早开始时间为10)
- 最晚开始时间:最早完成时间后从最后一个节点开始逆推得最晚开始时间
- 松弛时间:指用最少时间(最长的活动序列)减去某活动在的序列长度
(3)开发模型特点
瀑布模型
- 特点: 阶段间具有顺序性和依赖性,推迟实现的观点
- 缺点:“瀑布模型是由文档驱动的”,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。很可能导致最终开发出的软件产品不能真正满足用户的需求
快速原型模型
- 特点:开发人员尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本
- 优点:有助于保证用户的真实需要得到满足
增量模型:
- 特点:分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品
- 优点:能在较短时间内向用户提交可完成一些有用的工作的产品,逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品
螺旋模型:
- 特点:解这种模型的一个简便方法,是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型
- 优点: 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别
- 螺旋模型主要适用于内部开发的大规模软件项目
喷泉模型:
- "喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性
演化模型:
- 尽量投入使用,并可以再使用过程中不断完善,对于原型模型和演化(迭代)模型,演化模型更合适,原型模型更适用于需求不明确时用以获取需求
(4)内聚和耦合分析
内聚
内聚即模块中各个部件的连接紧密程度,内聚程度越高越好
耦合
耦合即模块间的联系的紧密程度,耦合程度越低越好
偶然內聚由于内容都昰不相关的,所以必然导致它与外昦多个模块有关联,这也使得模埉间的耦合廈増加
(5)软件测试计算
McCabe测量法
语句覆盖测试用例计算:
至少执行程序中的所有语句一次,两条路径即可实现
路径覆盖测试用例计算:
执行所有可能得穿过程序得控制流程路径,所有路径覆盖。需要4条路径完成完全覆盖
判定覆盖测试计算:
使程序流程图中每一个真假分支至少被执行一次
环路复杂度计算:
最简计算方法:闭合环路+1(判断条件个数+1)
一般计算方法:
(6)能力成熟度模型集成(CMMI)
- CL0(未完成的):过程域未执行
- CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工产品
- CL2(已管理的)其共性目标是集中于已管理的过程的制度化
- CL3(已定义级的):其共性目标集中于已定义的过程的制度化
- CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化
- CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效
(7)软件维护
软考维护有以下类型:
- 改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷
- 适应性维护:在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输岀方式、数据存储介质)可能发生变化。为使软件适应这些变化而进行的修改
- 完善性维护:在软件的使用过程中,用户往往会对软件提岀新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能
- 预防性维护。这是指预先提髙软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础
6.编译原理
(1)正规式
- a|b :可解析出a或b
- (a|b)*:任意个a,b组合都可以表达出来
(2)编译过程
(3)有限自动机状态转换图
- 解析态:找一条从起点到终点的路,路上的数值串起来即得到一个解析态
- 识别路径:按选项的路径一个个尝试,若能从初态到终态则该选项正确
(4)语法树分析
7.操作系统基本原理
(1)数据传输控制
- 程序控制方式:对读入的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中
- 程序中断方式:允许I/O设备主动打断CPU的运行并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作
- DMA方式:在程序中断方式中,I/O设备与内存之间的数据交换必须要经过CPU中的寄存器,所以速度还是受限,而DMA(直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放” CPU
(2)位示图计算
位示图的每一位都表示一个磁盘块的使用情况
物理块数 / 字长即可得需要的字的个数
求字的编号即为(物理号+1) / 字长
(3)死锁问题计算
- 每个进程都分配到资源数(n-1),最后还剩下一个资源逐个等待分配
- 所以总不发生死锁的资源是 每个进程所需(资源数-1)之和 加1
(4)页式存储地址换算
(5)前趋图
- V操作可以唤醒P操作(等待的一方会有一个P操作,等待另一个进程的V操作触发)
- 箭头指向为V,箭头起始点为P,牢记这点即可解决这类问题(P 操作—> 进程 运行—> V操作)
(6)进程管理与PV操作
题目分析:
信息量应当为单元数,题目是以某日某趟车位一个单元
(a)是申请资源所以为p操作,(b)(c)都是释放资源所以为V操作
PV操作原理:
生产者先P(s1)再V(s2),而消费者相反,这让保证了放入和取出都不会出错
(8)PV操作与前驱图分析
- 根据前驱图可以分析:P1不需要前趋唤醒,而其参与唤醒后续P2,P3(所以p1运行前不需要写P操作,而其V操作唤醒后续的P操作)
- 解题时可以对应前驱图找到前驱与后续,对应PV操作的信号量
- 信号量的标注两个P编号值的和从大到小对应计算(也可以从左到右,从上到下)
(7)I/O设备管理
8.面向对象
(1)UML图分析
用例图:
- 包含关系(extend)
- 扩展关系(include)
- 泛化关系
类图与对象图:
类图是描述系统中的类,以及各个类之间的关系的静态视图
填类名
填多重度
填关系
通信图:
通信图由三部分组成:对象(Object),链(Link) 和消息(Message)
对象即类的实例 其中aOrder表示实例名,Order表示类名
链的两端是消息发送者和消息接收者
通信图是通过一系列的消息来描述系统的动态行为
(2)*设计模式分析
各模式特点:
创建型
结构型
组合型
观察者模式:
- 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应
- 发生改变的对象称为观察目标,而被通知的对象称为观察者
- 观察者将自己注册到事件,那么具体的事件就知道了自己的观察者
- 观察者和事件都有自己的抽象,当实现具体的观察者和事件的时侯都要实现相应接口,所以对扩展是开放的
状态模式:
- 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类
(3)基础知识
状态与行为:
多态含义:
多态类型:
9.数据库系统
(1)封锁协议
(2)求键
键的关系:
求候选键:
只展示快捷方法
(3)E-R模型分析
E-R模型组成:
联系类型:
分析联系模式
一个实体型转换为一个关系模式
关系模式个数:一对一型最少的情况为实体数,一对多型最少的情况为实体数,多对多型最少的情况为(实体数 +联系数)
(4)sql语句
- 查询条件where与Hng的区别要弄清楚Whee是针对单条记录的判断条件,而 Having是针对分组之后的判断条件
(5)函数依赖推导
(6)*关系代数表达式
关系代数的9种操作:
10.数据结构
(1)*图邻接矩阵
邻接矩阵有n*n个点,都需要被遍历
(2)顺序储存二叉树
空节点也会按顺序存进数组中
11.*算法运用
(1)动态规划法案例
这类题跳过文字分析图像,找到突破点,然后再看文字分析
最短路线为:S11 -> S22 -> S13 (长度为 3+4+1+5+2+3+3 = 21 )
动态规划法:
动态规划法会把问题拆成多个子问题,然后会有查表步骤
(2)其他算法策略
分治法:
分治法->递归技术
(1)分治法使用要求:
分治法的基本运用:二分查找。快速排序
回溯法:
回溯法通过不断回溯参数,把所有可能性都尝试一遍直到
贪心法:
在有限时间找到满意的解(找不到最优解,找到每一步的局部最优解)
通过递归地解决这些子问题然后再将这些子问题的解组合成原问题的解。
12.计算机网络
(1)域名解析过程
- 本地服务器一般采用递归查询,对客户端负责到底,直到查到结果
- 其他域名服务器一般会用迭代查询,不断踢皮球
(2)分层设计分析
- 不同层的设备与协议
通过网络层及以上设备连接的计算机不在同一局域网
通过数据链路层或物理层的设备连接的计算机在同一局域网中
(3)网络安全管理
(4)网络攻击分类
软考专题复习(下午题)
1.数据流图分析
(1)分析实体
上下文流图
分析实体需要结合文字和上下文流图(外部实体也包括系统外的子系统)
先寻找题目文字中有哪些实体,然后看实体发出和接受的数据,然后即可和数据流图对应起来
(2)分析存储数据
0层数据流图
主要看0层数据流图中输入和输出的信息,然后结合文字确定信息在题干中的名称(一般是数据名+表这种形式)
(3)寻找缺少数据流
题目往往需要我们在0层数据流图中补充缺失的数据流
以和加工元素为起点(P操作)分析题干文本,分析数据流是否齐全
缺少的数据流有三种类型:P-E P-P P-D
往往容易忽略的数据流类型为P-P,可以理解为数据经过一个加工后,又被传到另一个加工进行进一步的加工
保持数据流图平衡
2*.E-R模型分析
(1)分析实体及联系类型
实体间联系类型
寻找题目与“签约”相关文本,可得到签约涉及的三个实体:经理,租客,公寓。其中合同中经理只有一个,而租客和公寓都是多个,可得到联系类型
(2)分析关系模式
- 补全关系模式需要分析文本中相关的字段(即对象属性)
- 根据题目中列出的实体找出其所有属性即可
(3)新增联系
增加一个新的联系类型,需要我们补充其与各个实体间的关系,与(1)(2)是一个逆过程
提取与维修相关的关键对象“维修工维修公寓”,补充E-R图
题干中没有指明联系类型,可根据实际情况,多个维修工对应多个公寓
根据E-R图得到新的关系模式“维修情况”,然后将E-R图转换为关系模式(关键在于找到各相关实体的键)
E-R图转关系模式方法:E-R模型转化成关系模型
3.*UML图分析
(1)设计类分类
- 实体类:对必须存储信息和相关行为建模的类型(例如:事件、人员或者一些现实生活中的对象。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,关键词:储存,配置)
- 接口类:边界类是系统内部与系统外部的业务主角之间进行交互建模的类(接口类会随着外部环境变化而变化,往往与某种操作相关,关键词:显示,调用,发送)
(2)类图分析
题目往往要求分析设计用例补充类图中的类名
类图
类图中关系
关联关系:如果没有箭头,则表明为双向对的关联关系(关联关系默认不强调方向,表示对象间相互知道,例如:乘车人和车票之间就是一种关联关系)
泛化关系:泛化关系实质是类的继承(表现为继承非抽象类,例如:汽车与SUV之间为泛化关系,箭头指向父类)
实现关系:实现关系实质也是类的继承(表现为继承抽象类, 箭头指向父类)
依赖关系:描述一个对象在运行期间会用到另一个对象的关系 (箭头的指向为调用关系)
类图多重性
- 找到未知类与其他类的关系,通过用例文字推理(如:配置信息与x1,x2,x3都有关联,则它们都是配置信息抽象出的类,然后再看它们和其他类的关系)
(3)状态图分析
状态图相关元素
状态转移的线上文字即状态转移的文字
- 题目往往要求补充状态,主要根据状态转移条件结合文本提到的相关状态触发流程分析即可
4.C语言程序分析
以函数为单位分析,找出函数调用情况
程序代码补充,尽量不写重复代码。上下文可能会有对称的代码
搞明白填写处要实现的功能
算法策略:
- 动态规划法会把问题拆成多个子问题,然后会有查表步骤
- 分治法的基本运用:二分查找。快速排序
- 回溯法通过不断回溯参数,吧所有可能性都尝试一遍直到
- 在有限时间找到满意的解,即局部的最优解(找不到最优解)
时间复杂度分析(建议跳过)
程序运行输入输出,可以不看代码,而是从文字中提取出算法实现分析
5.C++程序分析
以对象为单位分析,可以结合类图分析程序
C++特点:
- 权限修饰符:public:+属性/方法
- c++中当定义类对象是指针对象时候,就需要用到 “->” 指向类中的成员;当定义一般对象时候时就需要用到 “.” 指向类中的成员
- C++中要重写的方法往往用virtual虚函数修饰,有抽象之意
- C++的继承:
class Dog : public Animal
表示Dog继承Animal
从图可得PizzaBuilder缺少buildPart方法,由可以看到PizzaBuilder的子类重写了buildPart,所以可以参照重写的方法补充,因为作为抽象类所有是一个空方法
virtual void build Parts
补充类内方法中的代码:观察输入参数,观察上下文调用,观察类内属性
主函数中观察上下文生成的对象,确认需要调用的方法
6*.Java程序分析
与C++类似,需要用面向对象的方法结合类图进行分析
67](https://raw.githubusercontents.com/Autovy/Image/master/img/202109041207628.png)
ng)