软考设计师-中级总结
2023-10-25 13:02:43 0 举报
AI智能生成
软件设计师-中级,详细的思维导图和概述,帮助快速记忆
作者其他创作
大纲/内容
程序设计语言基础知识
基本概念
低级语言
汇编
高级语言
Java、C、C++、PHP、Python、Delphi等
翻译形式
汇编、解释、编译
定义
语法、语义、语用
过程式
FORTRAN、Pascal、C
面向对象
C++、Java、Simula、Smalltalk
函数式
lisp、scala、python
逻辑型
Prolog
脚本语言
shell、js、python
基本成分
常量、变量、全局量、局部量
算式、关系、逻辑运算
顺序、选择、循环结构
汇编语言
语句
指令、伪指令、宏指令
第一次扫描
确定符号名字表,跟地址
第二次扫描
符号地址转换为真地址,利用操作码将助记符转换为目标码
编译程序
阶段
词法分析
语法分析
语义分析
中间代码生成
代码优化
目标代码生成
文法
G={V t , V n , S, P} Vn是非空有限集合符号,每个符号都是非终结符号,S是开始符号,P是非空有限集合(产生式)
1型,上下文有关
2型,上下文无关
3型,正规文
0型,短语文
有限自动机(词法分析)
确定有限自动机(DFA)(S, ∑ , f, s 0 , Z)
状态转换图(有向图)和状态转换矩阵
非确定的有限自动机(NFA)
区别
对于 S 中的一个给定状态及输入符号,返回一个状态的集合,
即当前状态的后继状态不一定是唯一确定的
即当前状态的后继状态不一定是唯一确定的
正规表达式
1)r|s 是正规式,表示集合 L(r)∪L(s)。
2)r·s 是正规式,表示集合 L(r)L(s)。
3)r*是正规式,表示集合(L(r))*。
4)(r)是正规式,表示集合 L(r)
“|”“·”“*”
分别称为“或”“连接”和“闭包”
分别称为“或”“连接”和“闭包”
正规式与有限自动机的转换
解释程序
运行用户程序直接执行源程序或源程序的内部形式
不产生源程序的目标程序
数据结构和数据运算
线性结构
线性表
顺序
随机存取、插入和删除需要移动
链式
插入删除不需要移动,不能随机访问
单链表、循环单链表、循环双链表
栈
后进先出(LIFO)
队列
先进先出(FIFO)
循环队列
初始队列为空,Q.rear 和 Q.front 都等于 0
入队时,修改队尾指针 Q.rear=(Q.rear+1)%MAXSIZE
出队时,修改队头指针 Q.front=(Q.front+1)%MAXSIZE
双端队列
串(仅有字符构成)
空串、空格串、子串
非线性结构
二维数组
以行为主序优先存储的地址计算公式为:
Loc(a ij )=Loc(a 11 )+((i-1)×n+(j-1))×L
Loc(a ij )=Loc(a 11 )+((i-1)×n+(j-1))×L
以列为主序优先存储的地址计算公式为:
Loc(a ij )=Loc(a 11 )+((j-1)×m+(j-1))×L
Loc(a ij )=Loc(a 11 )+((j-1)×m+(j-1))×L
对角矩阵
树
基本概念
双亲、孩子、兄弟
度:节点子树的个数
叶子节点,度0为0
内部节点,除根节点外度不为0
节点层次,1到n
深度(高度)
有序无序,从左到右排序
二叉树
分为左子树和右子树
满二叉树和完全二叉树(最后一层不满,从左到右)
特点
n0=n2+1
n 个结点的完全二叉树的深度为[log 2 n] +1
第 i 层上最多有 2 i
- 1 个结点
- 1 个结点
深度为 k 的二叉树最多有 2 k -1 个结点
存储结构
顺序
链式
遍历
前序、中序、后序、层序
最优二叉树(哈夫曼树)
带权路径长度最短
图
由集合 V 和 E 构成的二元组,记作 G=(V,E),其中,V 是图中顶点的非空有限集合,E 是
图中边的有限集合
图中边的有限集合
存储结构
邻接矩阵
1是边,0不是边
n个顶点为n*n
邻接表
每个顶点建立一个单链表
遍历
深度优先(类似前序遍历)
广度优先(类似层次遍历)
数据运算
查找
顺序查找
二分查找
哈希查找
排序
直接插入
前面都已排序,与前面位置比较找到位置再插入
冒泡
相邻元素比较交换
简单选择
每次选出最小的
希尔
若干个子序列,相隔某个增量的元素,分别进行插入排序,缩小增量再进行排序,最后一次直接插入排序
快速
通过一趟排序将数据分成两部分,一部分比另一部分都小,再堆两部分分别进行快速排序
堆
小顶堆和大顶堆,输出最大的,剩余的再调整为大顶堆
归并
n个元素分成n/2个元素的子序列,递归对两个子序列排序,合并已经排序好的子序列
操作系统知识
概述
OS作用
提高效率
改善人机界面
特征
并发、共享、虚拟、不确定
功能
进程、文件、存储、设备、作业管理
分类
批处理、分时、实时、网络、分布式、微型、嵌入式
进程管理
通信
同步和互斥
信号量
PV操作
状态
三态
五态
调度
三级调度
先来先服务、时间片轮转、优先级、多级反馈
死锁
条件:互斥、请求保持、不可剥夺、环路
处理:预防、避免(银行家算法)、检测、解除
存储管理
存储结构
寄存器、Cache、主存、外存
虚拟地址(程序地址、逻辑地址)
地址空间
存储空间
分区
固定分区
可变分区
虚拟存储
分页存储
快表
两级页表
分段
段页式
设备管理
IO软件操作过程
用户进程-》设备无关软件-》设备驱动程序-》中断处理程序-》硬件
通道、DMA、缓冲、Spooling
文件管理
逻辑结构
物理结构
连续、链接、索引、索引表
目录
存储方法
空闲区表
位示图
空闲块链
成组链接法
文件共享
硬链接
符号连接(软链接)
文件保护
存取控制矩阵,存取控制表,用户权限表,密码
系统安全
系统级、用户级、目录级、文件级
可靠性
转储和恢复、日志文件、一致性
作业管理
作业控制
状态转换
提交、后备、执行、完成
JCB和作业后备队列
作业调度
先来先服务、短作业优先、响应比高优先、优先级调度算法、均衡调度算法、调度算法均衡
指标
指标
软件工程基础知识
计算机软件
①系统软件;②应用软件;③工程/
科学软件;④嵌入式软件;⑤产品线软件;⑥Web 应用软件(Web APP);⑦人工智能软件;⑧开
放计算;⑨网络资源;⑩开源软件
科学软件;④嵌入式软件;⑤产品线软件;⑥Web 应用软件(Web APP);⑦人工智能软件;⑧开
放计算;⑨网络资源;⑩开源软件
7条基本原理
①用分阶段的生命周期计划严格管理;②坚持进行阶段评审;③实现严格的产品控制;④采用现代的程
序设计技术;⑤结果应能清楚地审查;⑥开发小组的人员应少而精;⑦承认不断改进软件工程实践
的必要性。
序设计技术;⑤结果应能清楚地审查;⑥开发小组的人员应少而精;⑦承认不断改进软件工程实践
的必要性。
软件生存周期
可行性分析与项目开发计划
需求分析
概要设计
详细设计
编码
测试
维护
软件过程
含义
个体、整体、工程含义
能力成熟度模型(CMM)
初始级、可重复级、已定义级、已管理级、优化级
能力成熟度模型集成(CMMI)
阶段型
连续式型
未完成级、已执行级、已管理级、已定义级、定量管理级、优化级
统一过程(UP)
起始阶段、精化阶段、构建阶段、移交阶段
RUP是UP的商业扩展
极限编程、水晶法、并列争球法、自适应软件开发、敏捷统一过程法
软件过程模型(软件开发模型)
瀑布
容易理解,成本低,强调早期计划,需求要清楚,项目结束前不能演示,容易延期和超预算
增量
第一个版本成本和时间少,风险不大,可能造成后面不稳定,成本进度复杂性超出组织能力
演化
原型
螺旋
复杂的大项目,包含了风险分析
喷泉
用户需求为动力,对象为驱动,迭代性和无间隙性
基于构建的开发模型
预先包装的构件,可复用
形式化方法模型
软件项目需求分析
功能、性能、用户或人的因素、环境、界面、文档、数据、资源、安全保密、可靠性、成本消耗或开发进度需求
其他非功能性需求
需求分析原则
①必须能表示和理解问题的信息
域;②必须能定义软件将完成的任务;③必须能表示软件的行为;④必须划分描述数据、功能和行
为的模型;⑤分析过程应该从要素信息移向细节信息。
域;②必须能定义软件将完成的任务;③必须能表示软件的行为;④必须划分描述数据、功能和行
为的模型;⑤分析过程应该从要素信息移向细节信息。
需求工程
①需求获取;②需求分析与协商;③系统建模;④需求规约;
⑤需求验证;⑥需求管理。
⑤需求验证;⑥需求管理。
软件项目系统设计
新系统总体结构设计、代码设计、输出设计、输入设计、处理过程设
计、数据存储设计、用户界面设计和安全控制设计等
计、数据存储设计、用户界面设计和安全控制设计等
面向数据流的结构化设计方法(SD)、面向对象的分析方法(OOD)
概要设计
①软件系统总体结构设计;②数据结构及数据库设计;③编写概要设计文
档(概要设计说明书、数据库设计说明书、用户手册及修订测试计划);④评审
档(概要设计说明书、数据库设计说明书、用户手册及修订测试计划);④评审
详细设计
①对每个模块进行详细设计;②对模块内部的数据结构进行设计;③对数
据库进行物理设计,即确定数据库的物理结构;④其他设计(代码设计、输入/输出设计、用户界
面设计);⑤编写详细设计说明书;⑥评审
据库进行物理设计,即确定数据库的物理结构;④其他设计(代码设计、输入/输出设计、用户界
面设计);⑤编写详细设计说明书;⑥评审
软件项目系统测试
软件测试、硬件测试、网络测试
原则
①应尽早并不断地进行测试;②测试工作应避免原先开发软件的人员
或小组参与;③设计测试方案时要确定输入数据,还要根据系统功能确定预期的输出结果;④设计
测试用例时要设计合理、有效的输入条件,还要包含不合理、失效的输入条件。人们在测试时通常
忽略了对异常、不合理、意想不到的情况进行测试,这可能就是隐患;⑤在测试时要检查程序是否
做了该做、不该做的事,多余的工作会影响程序的效率;⑥严格按照测试计划进行测试;⑦妥善保
存测试计划、测试用例;⑧要精心设计测试用例
或小组参与;③设计测试方案时要确定输入数据,还要根据系统功能确定预期的输出结果;④设计
测试用例时要设计合理、有效的输入条件,还要包含不合理、失效的输入条件。人们在测试时通常
忽略了对异常、不合理、意想不到的情况进行测试,这可能就是隐患;⑤在测试时要检查程序是否
做了该做、不该做的事,多余的工作会影响程序的效率;⑥严格按照测试计划进行测试;⑦妥善保
存测试计划、测试用例;⑧要精心设计测试用例
过程
①制定测试计划;②编制测试大纲;③根据测试大纲设计和生产测试用例;
④事实测试;⑤生成测试报告
④事实测试;⑤生成测试报告
单元测试
集成测试
非增量
增量
自顶向下集成测试、自底向上集成测试、回归测试、冒烟测试
确认测试
系统测试
测试方法
静态
采用人工检测和计算机辅助静态分析的手段对程
序进行测试,包括人工检测、计算机辅助静态分析
序进行测试,包括人工检测、计算机辅助静态分析
动态
黑盒测试(功能测试)
白盒测试(结构测试)
调试
试探法
回朔法
对分查找法
归纳法
演绎法
软件项目管理
范围
人员、产品、过程、项目
项目估算
基于已经完成的类似项目进行估算、基于分解技术进行估算、基于经
验估算模型的估算。
验估算模型的估算。
估算方法
自顶向下估算方法、自底向上估算方法、差别估算方法、其他估算方
法(如专家估算、类推估算、算式估算)
法(如专家估算、类推估算、算式估算)
进度管理
原则
划分、相互依赖、时间分配、工作量确认、确定责任、明确输出结果、确定里程碑
进度安排
甘特图(Gantt Chart)
项目计划评审技术图(PERT)
项目软件组织
原则
①尽早落实责任;②减少交流接口;③责权均衡
组织形式
按项目划分
按职能划分
矩阵模式
软件质量管理
软件质量模型
ISO/IEC 9126:质量特性、质量子特性、度量指标
McCall:质量特性、评价准则、度量指标
软件质量保证
①软件必须满足用户规定的需求;②软件应遵循规定标准所定
义的一系列开发准则;③软件还应满足某些隐含的需求。
义的一系列开发准则;③软件还应满足某些隐含的需求。
主要任务:①应用技术方法;②进行正式的技术评审;
③测试软件;④标准的实施;⑤控制变更;⑥度量;⑦记录、保存和报告
③测试软件;④标准的实施;⑤控制变更;⑥度量;⑦记录、保存和报告
软件评审
设计质量评审
程序质量评审
运行环境的接口
软件容错技术
结构冗余
信息冗余
时间冗余
冗余附加技术
软件配置管理(SCM)
基线
软件配置项
版本控制
变更控制
软件风险管理
市场风险、策略风险、销售风险、管理风险、预算风险
风险因素:性能风险、成本风险、支持风险、进度风险
风险识别
风险预测
风险控制
软件度量
面向规模
面向功能
软件复杂性度量:①规模;②难度;③结构;④智能度
程序复杂性度量:①程序理解的难度;②纠错、维护程序的难度;③向他人解释程
序的难度;④根据设计文件编写程序的工作量;⑤执行程序时需要资源的程度
序的难度;④根据设计文件编写程序的工作量;⑤执行程序时需要资源的程度
复杂度包括程序复杂度和文档复杂度
计算机系统基础知识
组成
运算器
控制器
存储器
输入、输出设备
cpu
功能
程序控制、操作控制、时间控制、数据处理
组成
运算器
算术逻辑单元(ALU)
累加寄存器(AC)
数据缓冲寄存器(DR)
状态条件寄存器(PSW)
功能
算术运算
逻辑测试
控制器
指令寄存器(IR)
程序计数器(PC)
地址寄存器(AR)
指令译码器(ID)
寄存器组
内部总线
多核CPU
AMD(双核)
Intel(双芯)
数据表示
码值
原码
反码
补码
移码(补发的符号位取反)
校验码
奇偶校验码(加一位码距变2)
水平
垂直
水平垂直
海明码(查错纠错)
循环冗余校验码(左边信息码右边校验码)
计算机体系结构
分类
宏观按处理机数量
单处理系统
并行与多处理系统
分布式处理系统
微观按并行程度
Flynn:SISD/SIMD/MISD/MIMD
马泽云:WSBS/WPBS/WSBP/WPBP
Kuck:SISE/SIME/MISE/MIME
指令集体系结构分类
复杂指令集CISC
指令集庞杂,动作多,设计复杂,微程序技术
精简指令集RISC
重叠寄存器窗口、优化编译技术、超流水和超标量技术、微程序结合硬布线逻辑
指令控制
重叠
流水
处理机类型
阵列处理机
并行处理机
多处理机
存储器分类
内存和外存
磁、半导体、光
读写、只读
按地址、按内容
相联存储器(按内容)
随机、顺序、直接
高速缓存(Cache)
直接映像、全相联映像、组相联映像
替换算法、先进先出、近期最少使用、优化替换算法
容量越大命中率越高
多级Cache
虚拟存储器
页式
段式
段页式
外存储器
磁盘
光盘CD-ROM(只读)和WORM(只写一次)
磁盘阵列技术
RAID-0到RAID-6
输入输出技术
内存与接口编址方法
独立
统一
直接程序控制
无条件传送
程序查询方式
中断方式
交换数据时CPU无需等待和查询IO状态,可以处理其他任务
IO准备好通知CPU,cpu保护现场,转入IO中断,完成数据交换,返回被打断的程序
先响应优先级高的,中断服务嵌套
直接存储器存储方式(DMA)
输入、输出处理机(IOP)
总线结构
系统总线
ISA、EISA、PCI
外部总线
RS-232C、SCSI、USB、IEEE-1394、IEEE-488
内部总线
计算机安全
基本要素:机密性、完整性、可用性、可控性、可审查性
三类安全性:技术、管理、政策法律
准则:可信计算机系统评估准则(TCSEC)、加拿大可信(CTCPEC)、联邦最低安全要求评估准则(FC)、信息技术安全评估准则ITSEC、信息技术安全通用评估准则CC
安全威胁
授权侵犯、拒绝服务、窃听、信息泄露、截获、假冒、否认、非法使用、人员疏忽、完整性破坏、媒体清理、物理入侵、资源耗尽
加密技术
对称加密(非公开)
DES
3DES
RC-5
IDEA(类似3DES)
AES
非对称加密(公开密钥)
RSA
签发机关CA
认证技术(PKI)
数字证书库
密钥备份和恢复系统
证书作废系统
应用接口
数字签名
对信息Hash摘要
自己的私钥加密
把信息和前面的摘要一起发送
接受者对信息进行摘要,用公钥验证
数字加密
生成一对密钥,并用密钥加密报文
接受者的公钥加密上面的秘钥
接受者用私钥解密秘钥,再用密钥解密密文
结构化开发方法
结构化分析(SA)、结构化设计(SD)、结构化程序设计(SPD),
面向数据流的开发方法。自顶向下、逐层分解是结构化方法的指导思想,功能的分解与抽象是结构化
方法的基本原则
方法的基本原则
系统分析与设计
目的:系统分析报告、方案说明书
系统分析阶段
原理
抽象、模块化、信息隐蔽、模块独立
耦合类型
无直接耦合
无直接关系,独立性最高
数据耦合
值传递
标记耦合
传递数据结构
控制耦合
传递控制变量
外部耦合
通过外部环境联结
公共耦合
访问一个公共数据环境
内容耦合
直接使用另一个模块内部数据
内聚类型
功能内聚
最强
顺序内聚
按顺序执行
通信内聚
所有元素集中在一个数据结构区域
过程内聚
按指定过程完成多个任务
时间内聚
同时执行组合动作
逻辑内聚
通过参数确定
偶然内聚
没有联系,最弱
设计原则
分解协调、自顶向下、信息隐蔽抽象、一致性、明确性、模块间松耦合,模块内高内聚、扇入和扇出系数合理,规模适当
子系统划分原则
(1)子系统相对独立。
(2)子系统间的依赖小。
(3)数据冗余小。
(4)考虑扩展性。
(5)便于系统分阶段实现。
(6)考虑到各资源的利用情况。
(2)子系统间的依赖小。
(3)数据冗余小。
(4)考虑扩展性。
(5)便于系统分阶段实现。
(6)考虑到各资源的利用情况。
子系统结构设计
(1)各个子系统划分成多个模块。
(2)子系统、模块之前的数据及调用关系。
(3)评价并改进模块结构的质量。
(4)从数据流图导出模块结构图
(2)子系统、模块之前的数据及调用关系。
(3)评价并改进模块结构的质量。
(4)从数据流图导出模块结构图
系统模块结构设计
输入输出、处理功能、内部数据、程序代码
模块结构图
数据存储设计
八个等级(0~7 级),四种方式(只读、只写、删除、修改)
数据资源分布
结构化分析方法(SA)
抽象(自底向上)、分解(自顶向下)。
数据流图(DFD)
要有输入和输出
基本图形元素:外部实体、加工、数据存储、数据流
扩充符号:*(与)、+(或)、⊕(互斥)。
层次结构:顶层图、0 层图、底层图、父图、子图
审查
(1)一致性:父图与子图平衡、数据守恒、具备数据存储、输出不能与输入同名。
(2)完整性:奇迹(无入有出)、黑洞(有入无出)、灰洞(无法出)。
(2)完整性:奇迹(无入有出)、黑洞(有入无出)、灰洞(无法出)。
数据字典(DD):数据流、数据项、数据存储、基本加工
结构化设计方法(SD)
将系统设计成相
对独立、功能单一的模块组成的结构。
对独立、功能单一的模块组成的结构。
步骤
(1)建立初始结构图。
(2)对结构图进行改进。
(3)书写设计文档。
(4)设计评审。
(2)对结构图进行改进。
(3)书写设计文档。
(4)设计评审。
数据流图到软件体系结构的映射
(1)信息流的类型:交换流(主加工)、事物流。
(2)变换分析。
(2)变换分析。
WebApp分析与设计
特性:网络密集型、并发性、负载量无法预知、性能、可用性、数据驱动
需求模型:内容模型、交互模型、功能模型、导航模型、配置模型
设计:架构设计、构件设计、内容设计、导航设计
用户界面设计
Theo Mandel 黄金原则
UI分析与设计
面向对象技术
概念
对象
对象名(标识)、属性和方法
把属性和行为封装为一个整体
消息
对象之间进行通信的一种构造称为消息
类
类是在对象上的抽象,对象是类的具体化,是类的实例(instance)。
继承
继承是父类与子类之间共享数据和方法的机制
多态
在收到消息时,对象要予以响应。不同的对象收到同一信息可以产生不同的结果
分为通用的(参数的、包含的)和特定的(过载
的、强制的)
的、强制的)
动态绑定
绑定是在编译时进行的,称为静态绑定。动态绑定则是在运行时进化的,因此,一个给定的过
程调用和代码的结合直到调用发生时才进行
程调用和代码的结合直到调用发生时才进行
面向对象分析(OOA)
①认定对象;②组织对象;③对象间的相互作用;④定义对象的操作;⑤定义对象
的内部信息
的内部信息
面向对象设计(OOD)
面向对象程序设计(OOP)
面向对象程序设计语言(OOPL)
对象自身引用
重载
类属
无实例的类
面向对象测试
算法层(单元测试)、类层(测试类)、模板层(集成测试)、系统层
UML
事物
结构事物
行为事物
分组事物
注释事物
关系
依赖(虚线实心箭头)、关联(直线,几对几)、泛化(实现空心箭头)、实现(虚线空心箭头)、聚焦(实线空心菱形)、组合(实线实心菱形)
类图
一组对象、接口、协作和它们之间的关系
对象图
某一时刻一组对象和它们之间的关系
用例图
参与者和它们之间的关系
交互图
交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互行程序由一组对象和它
们之间的关系组成,包含它们之间可能传递的消息。
们之间的关系组成,包含它们之间可能传递的消息。
序列图
通信图
交互概览图
时序图
状态图
状态图通常包括简单状态和组合状态、转换(事件和动作)
活动图
活动图专注系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程
构件图
构件图展现了一组构件之间的组织和依赖关系,专注于系统静态实现视图
组合结构图
部署图
包图
设计模式
基本要素:①模式名称;②问题;③解决方案;④效果
创建型
①抽象工厂(Abstract Factory);②生成器(Builder);③工厂
方法(Factory Method);④原型(Prototype);⑤单例(Singleton)
方法(Factory Method);④原型(Prototype);⑤单例(Singleton)
结构型
①适配器(Adapter);②桥接(Bridge);③组合(Composite);
④装饰(Decorator);⑤外观(Facade);⑥享元(Flyweight);⑦代理(Proxy)
④装饰(Decorator);⑤外观(Facade);⑥享元(Flyweight);⑦代理(Proxy)
行为型
①责任链(Chain of Responsibility);②命令(Command);③解
释器(Interpreter);④迭代器(Iterator);⑤中介者(Mediator);⑥备忘录(Memento);⑦观察者
(Observer);⑧状态(State);⑨策略(Strategy);⑩模板方法(Template Method);⑪访问者(Visitor)。
释器(Interpreter);④迭代器(Iterator);⑤中介者(Mediator);⑥备忘录(Memento);⑦观察者
(Observer);⑧状态(State);⑨策略(Strategy);⑩模板方法(Template Method);⑪访问者(Visitor)。
收藏
0 条评论
下一页