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