《软件设计师》复习总结

《软件设计师》复习总结

7号的时候考完了软考中级的《软件设计师》,在考之前花了10天的时间把《软件设计师》这本教材看完了,恰巧的是,我大学开的课程都涵盖了这本书的内容,所以看得时候就相当于一个全方面的复习了。我把相关的总结都写在了本子上,在考完了一直忙着课业和找工作等,现在总算是花时间把这些万字笔记记在电脑里来了。

这个的软件设计师考试复习局限性还是比较大的

  1. 数据库中真正深入的内容几乎没有,面向面试的话远远不够,需要自己再去学习;
  2. 计算机网络考纲覆盖的过少,自己再去复习
  3. 算法和数据结构浅尝辄止,但这方面的学习是一个坚持长久的过程

文章目录

  • 《软件设计师》复习总结
      • 计算机组成原理
      • 编译原理
      • 数据结构与算法
          • 常用数据结构
          • 查找和排序
          • 常见算法思想
            • 以上内容见对应教材及博客园总结
          • 其他题目
      • 操作系统
          • 总述
          • 进程管理
            • 进程
            • 进程同步和通信
            • 进程调度
            • 死锁
            • 线程
          • 存储管理
            • 方案
            • 分区存储管理
            • 分页存储管理
            • 分段存储管理
            • 段页式存储管理
            • 虚拟存储管理(重点难点)
          • 设备管理
            • 设备
            • I/O
            • 存储设备
          • 文件管理
          • 作业管理
      • 软件工程
          • 基础知识
            • 生存周期
            • 软件过程模型
            • 其他过程周期
            • 软件项目管理
          • 结构化开发方法
            • 系统设计
            • 总体结构设计
            • 结构化分析方法
          • 面向对象技术
            • 统一建模语言UML
            • 设计模式
      • 关系代数和数据库
          • 关系代数
            • 相关概念
            • 关系代数运算
            • SQL语句
          • 数据库
      • 计算机网络
      • 标准化和知识产权
      • 软件系统分析与设计(下午题)
      • 其他题目

计算机组成原理

  1. 原、反、补、移码

    • 原码

      • 正数不变

      • 负数改符号位

    • 反码

      • 正数负数都是在原码基础上除符号位外其余位取反
    • 补码

      • 反码+1
    • 移码

      • 补码符号位取反
    • n位补码可直接表示数值:-2(n-1)或2(n-1)-1

  2. 浮点数的阶数二进制表示

    • 二进制数N:N=2^E*F,其中E为阶数,F为阶码,二者均为带符号数
    • 浮点数相加,小阶向大阶对齐,同时尾数右移n位
  3. 奇偶校验(不能纠错)、循环循环冗余校验

  4. 海明码(能纠错):2^k-1>=n+k,其中k为校验码数,n为数据位

  5. 计算机指令集:

    • CISC:复杂指令集计算机
      • 绝大多数计算机采用
      • 不等长指令集
    • RISC:简单指令集计算机
      • ARM为代表的移动端产品
      • 等长指令集
      • 硬布线逻辑
  6. 指令控制方式:

    • 顺序方式(串行)
    • 重叠方式
    • 流水方式
  7. 流水线种类(P17)

  8. 流水线吞吐率:

    流水操作时间不同时,吞吐率为最长流水段操作时间的倒数

  9. RISC的流水线技术

    • 超流水线
    • 超标量
    • 超长指令集
  10. 并行处理机分类:

    1. 处理机操作步骤并行
      • 流水线处理机
    2. 处理机操作并行:
      • 阵列处理机
    3. 指令、任务、作业并行:
      • 多处理机
      • 分布式处理机(集群)
  11. 存储器分类:P21

    • 重点:
      • 按工作方式分:
      • 按寻址方式分:
  12. Cache地址映射方法:

    • 直接映射
    • 全相联映射
      • 该映射,地址全装满时才能替换
    • 组相联映射

    注:嵌入式系统中,Cache对程序员是透明的

  13. 硬盘容量

    • 非格式化:

      容量=面数*(磁道数/面)*内圆周长*最大位密度

    • 格式化:

      容量=面数*(磁道数/面)*(扇区数/道)*(字节数/扇区)

    注:/为或

  • 磁道不涉及柱面的容量问题,直接相乘即可
  1. 内存与接口的编址方法:

    • 独立编址
    • 统一编址
  2. I/O控制方式

    1. 直接控制方式

      • 无条件传送
      • 程序查询方式
    2. 中断方式

    3. DMA方式(直接存储器存储)

      DMA方式的流程,重点为DMA控制器。其根据占用总线不同,DMA方式也出现不同

    4. IOP(通道)方式(I/O处理机又称通道)

    • 其中中断方式的终端处理方法P33
  3. 总线(BUS)结构

    • 数据总线(DB):双向
    • 地址总线(AB):单向
    • 控制总线(CB):单独单向、总体双向
  • 常见总线类型

    USB、PCI、PCI-E、SATA

  • 总线部件可同时接受数据,但只能分时发送数据

  1. 计算机安全的三类安全性:

    • 技术安全性
    • 管理安全性
    • 政策安全性
  2. 安全威胁:分为故意和偶然

    • 因素:内部和外部
  3. 加密技术

    • 对称加密(私人秘钥)

      DES,TDES,RC-5,IDEA,AES

    • 非对称加密(公开密钥)

      RSA

    • 比较:

      • 非对称加密保密性更好,但时间长、速度慢
      • 故,非对称加密适用于少量数据,对称加密适用于文件
  4. 认证技术

    1. 信息摘要技术认证:代表:MD5认证(hash()函数实现)

    2. 数字签名认证

    3. SSL安全套接字协议认证【一个检测协议】(面试会问)

      • SSL的工作原理

        1. 握手协议(Handshake protocol)

        2. 记录协议(Record protocol)

        3. 警报协议(Alert protocol)

      • 具体见链接

        https://blog.csdn.net/shipfsh_sh/article/details/80419994

    4. 数字时间戳技术认证

    • 数字签名不能验证接收者合法性
  5. 计算机性能评价方法

    1. 时钟频率
    2. 指令执行速度
    3. 等效指令速度
    4. 数据处理速率
    5. 核心程序法
    6. 基准测试程序
      • 整数测试程序
      • 浮点测试程序
  6. CPU区分内存中的指令和数据:

    • 依靠指令周期的不同阶段
  7. 执行指令

    首先从地址总线(AB)传程序计数器(PC)

  8. 时钟周期(CPU)< 机器周期(主机)< 指令周期(程序)

  9. 取指周期取指令,执行周期取数据

  10. 程序计数器PC存放下一条指令地址

编译原理

  1. 编译程序和解释程序

    • 解释程序

      概念:由它解释并执行源程序或翻译成中间代码后由它执行的程序

      • 解释翻译过程不生成独立目标程序,代表:Java
    • 编译程序

      概念:将源程序编译翻译成目标程序后程序独立运行的程序

      • 编译翻译过程会生成独立保存的目标程序,代表:C/C++
  2. 程序设计语言定义

    • 语义、语法、语用

    • 分类:

      1. 面向过程的(命令式和结构化程序设计语言),C、PASCAL

      2. 面向对象的,C++、Java、Python

      3. 函数式,LISP、Scala

      4. 逻辑型,PROLOG

  3. 语言处理程序

    • 汇编程序
    • 编译程序
    • 解释程序
  4. 汇编程序

    • 语句

      1. 指令语句
      2. 伪指令语句
      3. 宏指令语句
    • 翻译过程

      两次扫描

      • 第一次产生符号表ST;
      • 第二次使用ST及MOT2(机器指令表)、POT2(伪指令表)三表产生目标程序
  5. 编译程序

    • 工作过程:(六个普通阶段和两个特殊阶段)P69,图2-4

      1. 词法分析

        ​ ↓

      2. 语法分析

        ​ ↓

      3. 语义分析

        ​ ↓

      4. 中间代码生成(通常为四元式)

        ​ ↓

      5. 代码优化

        ​ ↓

      6. 目标代码生成

    • 具体过程原理见《编译原理》教材

    • 移进-归约分析法:是自底向上的语法分析法

  6. 解释程序

    词法、语法和语义分析阶段原理与编译程序相同。但后续过程为解释器直接执行分析的源程序,或者分析完的源程序生成中间代码后直接执行。

    故工作过程:

    1. 分析部分:词法→语法→语义[→中间代码生成(逆波兰式)]

    2. 解释执行

  7. 编译程序与解释程序比较

    1. 效率:编译可能更高
    2. 灵活性:解释更灵活
    3. 可移植性:解释更好
  8. 有限自动机:P76

  9. 正规式与正规集示例:P76

  10. 绝大多数程序设计语言都采用上下文无关文法

数据结构与算法

常用数据结构
  1. 数组
  2. 链表
  3. 广义表
  4. 队列
    • 二叉树
查找和排序
  1. 排序

    • 基础排序
      1. 冒泡排序
      2. 选择排序
      3. 插入排序
    • 高级排序
      1. 希尔排序
      2. 快排
      3. 归并排序
      4. 堆排序
  2. 查找

    重点二分查找

常见算法思想
  1. 递归
  2. 分治
  3. 贪心
  4. 回溯
  5. 动态规划
以上内容见对应教材及博客园总结
其他题目
  1. 传值方式形参和实参存储空间互不干扰,传引用方式形参和实参存储空间为同一地址
  2. 常量有常量
  3. 关键码序列,父亲节点必须在前
  4. 拓扑序列:依次遍历没有前驱结点的结点
  5. 遍历二叉树
    • 二叉树的每一个三节点的二叉树小部分都要按照要求序列遍历
  6. 无向图深度遍历邻接矩阵:O(n^2)
  7. 单链表中,队列入队需遍历,出队不需要;栈都不需要
  8. 使用队列对图进行广度遍历
  9. 动态绑定:运行时绑定;静态绑定:编译时绑定。
  10. 二叉树形态个数:C(2n,n)/n+1,其中C(2n,n)为排列
  11. 霍夫曼编码:哈夫曼树,相加的两数中,小的置0,大的置1
  12. n长非空字符串S的互异非平凡子串个数:(n+2)(n-1)/2
  13. 哈夫曼树字符编码长度
    • (用次数画出二叉树后,字符串转换对应次数),对应层数-1
  14. 二叉树有k节必有k+1个空的孩子指针

操作系统

总述
  1. 四大特征
    • 并发性
    • 共享性
    • 虚拟性
    • 不确定性
  2. 五大功能
    1. 进程管理
    2. 文件管理
    3. 存储管理
    4. 设备管理
    5. 作业管理
  3. 常见分类及其特征
    1. 批处理操作系统
      • 其中多道批处理的特征:多道;宏观上并行,微观上串行
    2. 分时操作系统
      • 特征:多路性、独立性、交互性、及时性
    3. 实时操作系统
    4. 网络操作系统
    5. 分布式操作系统
    6. 微型操作系统
    7. 嵌入式操作系统
  4. 程序执行的特征
    • 顺序性
    • 封闭性
    • 可再现性
  5. 操作系统的用户界面
    1. 控制面板式界面
    2. 字符界面
    3. 图形界面
    4. 新一代界面(如VR等)
进程管理
进程
  1. 概念:一个具有一定独立功能的程序关于某个数据集合的一次可以并发执行的运行活动。

  2. 进程的组成

    程序(不可修改部分)+数据(可修改部分)+PCB进程控制块(唯一标识)+系统资源(I/O和文件等)

  3. 原语

    由若干条机器指令组成,用于完成特定功能的程序段

进程同步和通信
  1. 进程同步和互斥
    • 同步:合作进程间的直接制约
    • 互斥:不同进程申请同一个临界区的间接制约
  2. PV操作
    • P申请资源,V释放资源,S信号量
    • 信号量S为负数后,P操作还是会继续减少信号量S
    • 前趋图解法:箭头出发处都是V操作,箭头处都是P操作。再根据图和选项确定S的位置即可
  3. 高级通信方式
    • 共享存储模式
    • 消息传递模式
    • 管道通信
进程调度
  1. 三级调度

    • 高级调度:I/O或外存→交换区
    • 中级调度:交换区→内存
    • 低级调度:就绪态→运行态

    注:意为到

  2. 进程调度算法:

    1. 先来先服务(FCFS)

    2. 时间片轮转(RR)

      • 固定时间片
      • 可变时间片
      • 多级反馈调度
    3. 优先级调度

      • 按获得资源方式分为:

        1. 抢占式
        2. 非抢占式
      • 按优先级规则分为(它们也可进一步分为抢占或非抢占)

        1. 短作业优先(STFC)
        2. 最短剩余时间优先(SRFC)
        3. 最高响应比优先
      • 按优先级规则是否可变分为

        1. 静态优先级
        2. 动态优先级
  3. 算法性能衡量指标

    • 平均周转时间:N个进程的周转时间的平均值

      • 周转时间:进程从创建到结束运行所经历的时间

        周转时间=等待时间+执行时间完成时间点-提交时间点

        • 等待时间:进程等待处理机状态的时间之和
        • 执行时间:执行所需时间,一般伴随进程给出
    • 平均带权周转时间:N个进程的带权周转时间的平均值

      • 带权周转时间:带权周转时间=周转时间/执行时间,即响应比
死锁
  1. 概念:两个以上的进程互相都要求对方已经占用资源,导致无法继续运行的现象
  2. 产生的四个必要条件
    1. 互斥条件
    2. 请求保持条件
    3. 不可剥夺条件
    4. 环路(回路)条件
  3. 死锁处理
    • 死锁预防
      1. 预先静态分配法(破坏“不可剥夺条件”)
      2. 资源有序分配法(破坏“环路”条件)
    • 死锁避免
      • 银行家算法(破坏四个条件之一)
    • 死锁检测和解除
      • 不同于前两种不产生死锁,它允许死锁产生,通过检测出死锁后解除。包括:
        1. 资源剥夺法
        2. 撤销进程法
  4. 题目中死锁不发生条件:
    • 进程数*(所需资源-1)+1P*(R-1)+1
线程
  1. 概念:一个进程中可以包含多个并发(并行)执行的部分。
  2. TCB(线程控制块):是进程控制块的组成和附属
  3. 与进程的关系:
    • 每个进程包含一个或多个线程,每个线程有各自的运行环境
    • 线程们共享其进程的程序区和数据区
    • 线程作为CPU调度和分配的基本单位,进程作为作为其他资源分配的单位
存储管理
方案
  1. 分区存储管理
  2. 分页存储管理
  3. 分段存储管理
  4. 段页式存储管理
  5. 虚拟存储管理
分区存储管理
  1. 内碎片:已分区空间内未使用空间

  2. 外碎片:无法再分配的小分区

  3. 分区保护:

    • 上界/下界寄存器保护

      • 条件:上界寄存器≤物理地址≤下界寄存器
    • 基址/限长寄存器保护

      • 条件:基址寄存器≤物理地址≤基址寄存器+限长寄存器(作业长度)
分页存储管理
  1. 普通分页
    1. 页:地址空间等分
    2. 块:主存空间等分
    3. 地址结构:地址结构=页号+页内地址
    4. 页表:页块映射表
    5. 逻辑地址→物理地址
      • 偏移量不变,页块号转换后拼接即可。
        • 还可根据块起始地址与块大小获得具体物理地址
  2. 块表:联想存储器组成用于存储特定页表(最活跃的)
  3. 两级页表(80386及以后的芯片)
    • 外层页表:对页表进行分页,对应物理地址
    • 内页表:根据外页表物理地址找到,功能对应上述普通页表
分段存储管理
  1. 地址结构:地址结构=段号+段内地址
  2. 段表:段与物理地址映射表
  3. 逻辑地址→物理地址:
    • 先判断偏移量是否大于所在段的段长造成越界
    • 若越界则不存在;不越界则,偏移量+物理地址
段页式存储管理
  1. 地址结构:地址结构=段号+段内页号+页内地址
  2. 逻辑结构既有段表也有页表,两者都与上述相同
  3. 逻辑地址→物理地址:
    • 查段表获得页起始地址
    • 查页表得到物理块及其起始地址
    • 拼接
虚拟存储管理(重点难点)
  1. 实现系统
    1. 请求分页系统(常用)
    2. 请求分段系统
    3. 请求段页式系统
  2. 请求分页实现例题,见试卷
  3. 页面置换算法(重点)
    1. 最佳置换算法(理想化,实现条件:已知后续页号)
      • 最长或后续不使用的页块替换
    2. 先进先置换(FIFO)
      • 最直观但性能最差的算法,有Belady现象
    3. 最近最少未使用算法(LRU)
      • 自上次访问后经历的时间T最长的替换
    4. 最近未用算法(NRU)
      • 类似于3,检查所用块访问是否为0替换,当一个替换不成功时将1变为0,直到找到为0的页为止。每一次替换成功将该页访问位变为1。
  4. 工作集:在某段时间间隔(Δ)里进程实际要访问的页面的集合,
    • 工作集大小影响系统效率
设备管理
设备
  1. 概念:负责计算机与外部I/O工作,也称外设。
  2. 设备分类:四种分类方式,具体见教材
  3. 设备管理技术
    1. 中断技术
    2. DMA技术
    3. 通道技术
    4. 缓存技术
  4. 中断方式时,CPU与外设可并行工作
I/O
  1. I/O系统:负责管理I/O工作的称为I/O系统

    • 组成:设备、控制器、通道、总线和I/O软件
  2. I/O软件的目标:实现设备独立性和统一命名

  3. I/O软件与设备的层次结构

    I/O请求 I/O应答
    层次 I/O功能
    用户进程(软件) 进行I/O调用、格式化I/O、Spooling系统
    设备无关软件 命名、保护、阻塞、缓存、分配
    设备驱动程序 置设备寄存器;检查状态
    中断处理程序 当I/O结束时唤醒驱动程序
    设备(硬件) 执行I/O操作
  4. 输入信息最早由硬件的命令解释器获得

  5. 相关技术

    1. 通道技术:通道处理机和通道。
      • 交换信息分类
        1. 字节多路通道
        2. 数组选择通道
        3. 数组多路通道
    2. DMA技术:DMA控制器
    3. 缓冲技术:
      • 分类
        • 硬件缓冲
        • 软件缓冲
      • 缓冲区
        • 单缓冲
        • 双缓冲
        • 多缓冲
        • 环形缓冲
    4. Spooling技术:虚拟化设备资源,由Spooling系统控制资源分配
存储设备
  1. 常见存储设备
    • 磁带
    • 光盘
    • 磁盘(机械硬盘)
    • 固态硬盘
  2. 磁盘调度
    1. 磁盘调度算法(移臂调度寻找柱面)
      • 先来先服务(FCFS)
      • 最短寻道时间优先(SSTF)
      • 扫描算法(SCAN):在2的基础上考虑扫描方向因素
      • 单项扫描调度算法(CSCAN):在3的基础上规定只有一种扫描方向
    2. 旋转调度算法(旋转调度寻找扇区,记住三个原则【教材P222】)
      • 例4.15
        1. 解析有误。R1=6msR2~R9=9*(16+6),其中括号内16为转一圈的时间,6为读+处理时间
        2. 优化方式及优化后的时间记住
          • 优化时间:优化时间=物理块数N*(读时间+处理时间)
      • 例题4.16
        1. 要记住该例题
        2. 要根据旋转调度算法原则判断序列
文件管理
  1. 文件概念:具有符号名的、逻辑上具有完整意义的一组相关信息项的集合(抽象机制)

  2. 文件管理系统:操作系统中实现文件统一管理的一组软件和相关数据的集合

  3. 文件系统:专门负责管理和存取文件信息的软件机构

    • 功能:
      1. 按名存取
      2. 统一的用户接口
      3. 并发访问和控制
      4. 安全性控制
      5. 优化性能
      6. 差错恢复
  4. 文件类型:各种不同分类方式,见教材

    • 常用的文件系统类型:FAT,VFAT,NTFS,EXT2,XFS,HPFS
  5. 文件的结构

    • 物理结构:在存储器上的存放方式
      1. 连续结构
      2. 链接结构
      3. 索引结构
      4. 多个物理块的索引表
    • 逻辑结构
      1. 记录式文件(有结构的):一个以上记录构成
      2. 流式文件(无结构的):顺序字符流构成
  6. 文件目录:文件控制块的有序集合

    • 文件控制块(FCB):描述和控制文件的数据结构
      • 包含的三类信息:
        1. 基本信息类
        2. 存取控制信息类
        3. 使用信息类
    • 目录结构
      1. 一级目录
      2. 二级目录
      3. 多级目录
  7. 文件存取方法

    1. 顺序存取
    2. 随机存取
  8. 空闲空间管理

    • 管理的数据结构:磁盘分配表
    • 方法:
      1. 空闲区表(适用连续结构)
      2. 位示图(适用于各种物理结构)
      3. 空闲块链(适用链接结构)
      4. 成组链接(适用链接结构)
  9. 位示图例题

  10. 文件使用

    • 操作级文件命令:
      1. 目录管理类命令
      2. 文件操作类命令
      3. 文件管理类命令
  11. 文件链接

    1. 硬链接
    2. 符号链接(软链接)
  12. 文件保护

    • 方法:存取控制
      1. 存取控制矩阵
      2. 存取控制表
      3. 用户权限表
      4. 密码
  13. 4个对文件进行的安全性管理级别

    1. 系统级
    2. 用户级
    3. 目录级
    4. 文件级
  14. 文件系统的可靠性

    1. 转储和恢复
    2. 日志文件
    3. 文件系统的一致性
作业管理
  1. 作业管理程序:在操作系统中用来控制作业执行和撤销的一组程序

  2. 作业控制

    1. 脱机控制(作业说明书控制,无需人工)
    2. 联机控制(人工干预)
  3. 作业概念:程序、数据、作业说明书组成(类似于进程的组成)

  4. 作业的状态

    • 提交
    • 后备
    • 执行
    • 完成
  5. 作业控制块(JCB):作业唯一标识

    • 包含的信息

      1. 用户名
      2. 作业名
      3. 状态标志
    • 后备队列:若干个JCB组成的队列

  6. 作业调度算法

    • 与进程调度算法一致,但少一个多级反馈调度,多一个均衡调度
  7. 性能衡量指标

    • 与进程调度算法的标准一致

软件工程

基础知识
生存周期
  1. 软件生存周期
    1. 可行性分析与项目开发计划
      • 结果:产生可行性分析报告和项目开发计划
    2. 需求分析
      • 结果:确定系统做什么,产生软件需求说明书
    3. 概要设计
      • 结果:需求转换为体系结构和对应模块,产生概要设计说明书
    4. 详细设计
      • 结果:模块功能的具体过程描述,产生详细设计文档
    5. 编码
      • 要求:一般不超过总项目时间的20%
    6. 测试
      • 结果:测试计划、测试用例及测试报告
    7. 维护
软件过程模型
  1. 软件过程:软件开发中所遵循的路线图(不是很重要)

    • 三层含义:个体含义、整体含义、工程含义

    • 两个评估模型:

      1. 软件工程能力成熟度模型(CMM):对软件组成进化阶段的描述
        • 5个成熟度级别:
          1. 初始级
          2. 可重复级
          3. 已定义级
          4. 已管理级
          5. 优先级
      2. 软件工程能力成熟度模型集成(CMMI)
        • 表示方式:
          1. 阶段式模型
          2. 连续式模型
  2. 软件过程模型

    1. 瀑布模型

      • 优点:容易理解、成本低
      • 缺点:需要已知完整需求,风险控制弱
    2. 增量模型

      • 优点:集成瀑布模型优点,且每个文件版本成本低、时间短,承担风险小
      • 缺点:不好进行模块划分;同时早期思考需稳定完整,否则可能从头再来
    3. 演化模型:不断完善,尽快使用

      • 适合对软件需求缺乏准确认知的情况
      • 分为:
      1. 原型模型

        • 分类:

          1. 探索型原型
          2. 实验性原型
          3. 演化型原型
        • 优势:不断沟通,能不断迭代更新用户新需求

        • 抛弃式适合不明确需求

      2. 螺旋模型

        • 工作步骤

          1. 制定计划
          2. 风险分析
          3. 实施工程
          4. 用户评估
        • 优势:强调风险分析,适用于庞大、复杂并且具有高风险的系统

        • 缺点:过多的迭代会增加开发成本,延迟提交时间

    4. 喷泉模型:以用户需求为动力,以对象作为驱动的模型

      • 优点:适用于面向对象的开发方法,使得开发过程既有可迭代性和无间隙性
      • 缺点:不利于项目管理,使得审核难度加大
    5. 基于构件的开发模型:利用预先包装的构件来构造应用系统

      • 包括
        1. 领域工程
        2. 应用系统工程
    6. 形式化方法模型:基于严格数学基础

      • 主要活动:生成软件形式化的数学规格说明
    7. 统一过程(UP)模型:由UML方法和工具支持

      • 4个阶段
        1. 起始阶段
        2. 精化阶段
          • 里程碑为生命周期架构
        3. 构建阶段
        4. 移交阶段
    8. 敏捷模型

      • 包括
        1. 极限编程
          • 结对编程中包含代码审查过程,但不改变速度
          • 不包括精心设计
        2. 水晶法
        3. 并列争求法
        4. 自适应软件开发
        5. 敏捷统一过程
其他过程周期
  1. 需求分析:略

  2. 系统分析

    • 总述:
      1. 结果:系统方案建议书
      2. 对现有系统进行分析时,不进行逻辑分析
    • 分类
      1. 概要设计
        • 包括
          1. 软件系统总体结构
          2. 数据结构及数据库设计
          3. 编写概要设计文档
          4. 评审
      2. 详细设计:略
  3. 系统测试

    1. 结果:得到操作手册

    2. 传统项目/面向对象项目/Web应用的测试

      • 都包括单元测试和集成测试
    3. Alpha和Beta测试都属于确认测试

    4. 测试方法,重点掌握加粗部分,看例题

      1. 静态测试

        • 人工检测
        • 计算机辅助静态分析(略)
      2. 动态测试

        • 黑盒测试(功能测试):测试软件外部特性

          • 技术:
            1. 等价类划分
            2. 边界值分析
            3. 错误推测
            4. 因果图
        • 白盒测试(结构测试):测试软件内部结构和逻辑

          • 技术:

            1. 语句覆盖/代码行覆盖
            2. 判定覆盖/分支覆盖
            3. 条件覆盖
            4. 条件组合覆盖
            5. 路径覆盖(基本路径测试)
            • 具体看这篇博客:https://blog.csdn.net/Shiny0815/article/details/80185142?utm_source=blogxgwz4
    5. 调试(Debug):测试之后,找到错误的具体原因和位置

      • 方法:
        1. 试探法
        2. 回溯法
        3. 对分查找法
        4. 归纳法
        5. 演绎法
  4. 运行和维护

    1. 软件维护工具不包括配置管理,配置管理属于下面的软件项目管理
软件项目管理
  1. 范围:人员、产品、过程和项目

  2. 成本估算:

    • COCOMO模型:E=a(L^b),D=c(E^d),初级,其中E为工作量,D为开发时间,L为源码行估计值,a、b、c、d为常数
    • COCOMOII模型估算时,不包括用例数
  3. 进度管理:略

  4. 项目组织和配置管理:略

  5. 风险管理

    • 风险类型
      1. 市场风险
      2. 策略风险
      3. 销售风险
      4. 管理风险
      5. 预算风险
  6. 软件质量

    • 系统可靠性:MTBF/(MTBF+1)
    • 串联关系的可靠性:R1*R2*R3*···Rn,Ri为各模块的单独可靠性
    • 并联关系的可靠性:1-(1-R1)*(1-R2)*(1-R3)*···(1-Rn),Ri也为各模块的单独可靠性
    • 软件评审时软件质量保证的重要活动之一
  7. 软件度量

    • 分类

      1. 面向规模的度量
      2. 面向功能的度量
    • 复杂度度量

      • MeCabe度量法(计算环路复杂度)

        V(G)=m-n+2p,其中m为图中弧(即路径)的个数,n为结点数,p为强连通分量个数(就算不连通也至少为1)

        • 当V(G)>10是,软件为复杂,充分测试较困难
  8. 软件工具及环境:略

结构化开发方法
系统设计
  1. 基本原理

    • 四大方面

      1. 抽象

      2. 模块化

      3. 信息隐蔽

        • 该原则提高软件的可修改性和可移植性
      4. 模块度量

        • 两个标准,重点

          1. 耦合性:模块间的相对独立性度量

            耦合性
            无直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合
            模块独立性
          2. 内聚性:对一个模块内部各个元素彼此结合的紧密程度的度量

            内聚性
            功能内聚 顺序内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 偶然内聚
            模块独立性
          • 需注意的问题
            1. 2个模块共用一个东西就是公共耦合
            2. 数据耦合是有数据传递,标记是传递了数据结构
            3. 耦合和功能数无关
  2. 结构化设计与结构化分析的关系

    1. 要点

      概要设计

      1. 数据(概念)设计:数据库和文件系统设计,对应数据对象描述(E-R图)和数据字典
      2. 体系结构设计:部件及它们间的关系,对应数据流图
      3. 接口设计:交互(模块间/子系统)

      详细设计

      1. 过程设计:模块的详细设计,即:各部分算法和数据结构,对应加工规格说明、状态-迁移图和控制规格说明
    2. 其他

      1. 架构师主要关注系统的行为
总体结构设计
  1. 系统结构设计原则
    1. 分解-协调原则
    2. 自顶向下原则
    3. 信息隐蔽、抽象原则
    4. 一致性原则
    5. 明确性原则
    6. 模块间耦合尽量小,内聚尽量高
    7. 扇入和扇出系数要合理,不过高也不过低
  2. 模块结构设计
    1. 模块4个要求
      1. 输入和输出
      2. 处理功能
      3. 内部功能
      4. 程序代码
    2. 模块结构图
      • 记住相关图形样式,P322
  3. 系统文档:略
结构化分析方法
  1. 基本手段:抽象和分解
  2. 数据流图
    • 必考大题,记住相关图形,详细解析见:第12章下午题总结
  3. 数据字典
    • 4类条目,对应4张定义表
      1. 数据流
      2. 数据项
      3. 数据存储
      4. 基本加工
    • 不包括外部实体
  4. 结构化设计方法
    • 结构化分析不包括数据字典
面向对象技术
统一建模语言UML

**必考大题,**详细解析见:第12章下午题总结

  1. UML词汇表的3个构造块

    • 事物
    • 关系
  2. 事物:记住相关图形

    • 分类
      1. 结构事物
      2. 行为事物
      3. 分组事物
      4. 注释事物
  3. 关系:记住六个相关图形

    1. 依赖:箭头处为被使用者(小),图形:虚线+线箭头

    2. 关联:箭头处为被拥有者(小),图形:实线+线箭头

      关联是一组链两个类之间可以有多个不同角色标识的关联

      • 聚合:菱形处为整体(大),图形:实线+空心菱
      • 组合:菱形处为整体(大),图形:实线+实心菱
    3. 泛化:箭头处为父类(小),图形:实线+三角箭头

    4. 实现:箭头处为接口(小),图形:虚线+三角箭头

  4. 图:重中之重,记住相关内容和图样,必考下午题

    • 重要:类图、对象图、用例图、状态图、活动图、构件图、部署图
    • 一般:交互图,包括:序列图(顺序图)、通信图、交互概览图、计时图
    • 略:组合结构图、包图
      • 其他知识:
        1. 类图不适用对对象快照建模
        2. 对象状态表示了对象属性及其当前值
        3. 用例图中,参与者可以是:人、硬件或其他系统可以扮演的角色
        4. 状态图中一个转换有两个状态
设计模式

《软件工程》内容中最重要的知识点

  • 创建型

    1. 抽象工厂
    2. 建造者(生成器)
    3. 工厂方法
    4. 原型
    5. 单例
  • 结构型

    1. 适配器
    2. 桥接
    3. 组合
    4. 装饰
    5. 外观
      • 题目中看到外观、图形界面字样一般就是外观模式
    6. 享元
    7. 代理
  • 行为型

    1. 责任链
    2. 命令
    3. 解释器
    4. 迭代器
    5. 中介者
    6. 备忘录
    7. 观察者
      • 特征:类应该对扩展开放,对修改关闭
    8. 状态
      • 主要接口:图中出度为0的
    9. 策略
    10. 模板方法
  1. 访问者
  • 加粗部分为重点
  • 具体内容见我的另一篇博客:https://blog.csdn.net/qq_43175022/article/details/110312504

关系代数和数据库

关系代数
相关概念
  1. 笛卡尔积
    • 得到一个n元组,元组元素为各个域元素的排列组合
  2. 关系模式
    • R(U)或R(A1,A2,A3,···AN)。U为属性名集合,Ai为属性名或域名
  3. 关系完整性
    • 实体完整性:主属性不为空
    • 参照完整性:外码必须对应或为空
    • 用户定义完整性:用户定义的约束
  4. 关系模式下找主键
    • 画出关系图,入度为0的点为主键;
    • 找主键是注意关系集
  5. 关系代数表达式中,查询效率最高是:
    • 笛卡尔积尽量最后使用
关系代数运算
  1. 并∪:结构相同才能并
  2. 交∩:两者相同的元组,条件同1
  3. 差:排除减数的元组(行),条件同1
  4. 广义笛卡尔积:属性(列)合并,新元组为老元组整体的排列组合
  5. 投影:属性(列)的条件筛选(条件为比较运算,在投影列表中)
  6. 选择:元组(行)额条件筛选
  7. 连接:笛卡尔积+选择
    • θ连接:θ为比较运算符,筛选出XθY的笛卡尔积
    • 等值连接:θ为’='的θ连接
    • 自然连接:筛选具有相同属性(列)且元素相同的笛卡尔积并去掉重复列
      • 加粗部分即:要求为相同属性(列),且属性元素两表也要有相同元组(行)
  8. 除:筛选具有相同属性(列)且元素相同的排除该相同属性(列)的元组集,并去重。
    • 加粗部分与自然连接意思相同
    • 条件:S是R的子集,R是被除数表,S是除数表
    • 例题可见教材P483
  9. 广义投影:允许投影列表使用算术运算,而不只限于比较运算
  10. 内外连接
    • 内连接:即第7点中的等值连接
    • 外连接
      1. 左外连接
        • 根据左表中与右表相同属性(列)进行查找后连接,去掉重复列,并根据右表数量得到新元组数量,左表存在右表没有的,该元组中的右表属性用null填充
      2. 右外连接
        • 把左外连接的逻辑换成从右边出发的即可
      3. 全外连接
        • 左连接和右连接的结果合并
SQL语句
  • 见资料书
数据库
  1. 数据库逻辑设计:关系规范化

  2. 数据库管理系统:DBMS

    • 功能
      1. 数据定义
      2. 数据库操作
      3. 数据库运行管理
      4. 数据的组织、存储和管理
      5. 数据库的建立和维护
      6. 其他功能
    • 分类
      1. 关系型数据库系统 RDBS
      2. 面向对象型数据库系统 OODBS
      3. 对象关系型数据库系统 ORDBS
  3. 三级模式结构:“三级模式”和“两级映像“

    《软件设计师》复习总结_第1张图片

    • 聚簇索引顺序就是数据的物理存储顺序
  4. 数据模型

    • 分类
      1. 概念数据模型
      2. 基本数据模型
    • 三要素
      1. 数据结构
      2. 数据操作
      3. 数据约束条件
  5. E-R模型:实体-联系模型,用于描述概念模型

    • E-R图相关图例和实体、关系、属性和方法等概念
    • 必考大题
  6. 基本数据模型(数据库常用)

    1. 层次模型
    2. 网状模型
    3. 关系模型(最常用之一)
    4. 面向对象模型(应用:CAD、图形数据、人工智能)
  7. 关系型数据库的规范化

    1. 函数依赖:略
    2. 规范化
      1. 1NF:属性不可拆分,即字段不可分,每个字段是原子级别的。
      2. 2NF:完全传递依赖,即元组中有主键,非主键字段依赖于主键
      3. 3NF:消除传递依赖,即非主键字段之间不能相互依赖,要相互独立
    3. 模式分解及其特性
      1. 分解概念
      2. 分解后与原本是否等价的3种情况
  8. 数据库控制功能

    1. 事务控制

      1. 事务开始
      2. 事务提交
      3. 事务异常
      4. 事务回滚
      5. 事务结束
    2. 事务控制4个特性

      1. 原子性:事务要么不做要么都做
      2. 一致性:保证事务从一个一致性状态到另一个一致性状态(一致性状态:当事务成功提交是,称事务处于一致性状态)
      3. 隔离性:事务相互隔离
      4. 持久性:即使数据库崩溃,对表操作也永久有效
    3. 备份和恢复

      • 故障类型
        1. 内部故障
        2. 系统故障
        3. 介质故障
        4. 计算机病毒
      • 备份方法
        1. 静态转储和动态转储
        2. 海量转储和增量转储
        3. 日志文件
      • 恢复步骤
        1. 反向扫描日志,查找事务操作
        2. 对事务的操作进行逆操作
        3. 循环上述两步,直到事务的开始标志
    4. 并发控制

      1. 并发导致不一致性出现的问题

        1. 丢失修改
        2. 不可重复读
        3. 读脏数据
      2. 设置事务隔离级别

        • 由低到高依次是
        1. Read uncommitted(未授权读取、读未提交)
        2. Read committed(授权读取、读提交)
        3. Repeatable read(可重复读取)
        4. Serializable(序列化)
      3. 并发控制技术

        • 封锁
          1. 排它锁:只允许一个事务对数据对象加锁,持锁读写
          2. 共享锁:允许多个事务对数据对象加锁,加锁后可读不可写
        • 三级封锁协议:略
        • 封锁的粒度
          • 粒度:封锁对象的大小
          • 分类:
            1. 行锁
            2. 表锁

计算机网络

  1. 网络拓扑结构

    • 总线型
    • 星型
    • 环型
    • 树型
    • 分布式
  2. ISO/OSI七层模型和TCP/IP五层模型对比

    《软件设计师》复习总结_第2张图片

  3. 各层对应设备

    • 物理层:中断器、集线器
    • 数据链路层:网桥、交换机
    • 网络层:路由器
    • 应用层:网关
  4. 传输方式和介质

    • 有线
      1. 双绞线
      2. 同轴线缆
      3. 光纤
    • 无线
      1. 微波
      2. 红外线
      3. 卫星
  5. 各层对应协议

    1. 数据链路层

      • 点对点信道
        • PPP点对点协议
      • 广播信道
        • CSMA/CD载波监听多点接入/碰撞检测协议
    2. 网络层

      • IP网际协议
      • 配套三个协议
        1. ARP地址解析协议
        2. ICMP网际控制报文协议
        3. IGMP网际组管理协议
    3. 传输层

      • TCP传输控制协议
      • UDP用户报文协议
    4. 应用层

      • FTP
        • 数据口:20
        • 控制口:21
        • 上传口:1024~65536
      • www万维网
      • HTTP协议,端口80
      • HTTPS协议,端口:443
      • SNMP:简单网络管理协议,使用UDP传输,162口
      • STMP:EMail传输,使用TCP传输,25口
        • 配合POP3服务端口,110口
    5. 不考但需要学习的内容

      1. 构成超网计算题
      2. 路由选择算法
      3. 地址解析
    6. 信息安全五要素

      1. 机密性
      2. 完整性
      3. 可控性
      4. 可用性
      5. 可审查性
    7. 信息存储安全

      1. 信息使用安全
      2. 系统安全监控
      3. 计算机病毒防治
      4. 数据加密
      5. 防治非法攻击
    8. 网络安全威胁

      1. 非授权访问
      2. 信息泄露或丢失
      3. 破坏数据完整性
      4. 拒绝服务攻击
      5. 利用网络传播病毒
        • 系统干涉为被动攻击
    9. 安全控制技术

      1. 防火墙技术
      2. 加密技术
      3. 用户识别技术
      4. 访问控制技术
      5. 网络反病毒技术
      6. 网络安全漏洞扫描技术
      7. 入侵检测技术
    10. 防火墙三个发展阶段

      1. 包过滤防火墙
      2. 应用代理网关防火墙
      3. 状态检测技术防火墙
    11. 其他

      • 安全电子邮件服务:S/MIME
      • 有效传输速率:数据位占比/总传输速率
        • 总传输速率:字符位数*网速
      • 漏洞扫描不为检测技术
      • URL:主机名+协议名+文件名
      • 本地主机首先在本地hosts文件中查询目标网址的IP地址
      • 路由器管理:SSH方式,SSH为一个检测协议
      • 服务器收到请求首先查缓存

标准化和知识产权

主要见题目

  1. 软件技术信息和经营信息由商业秘密权保护
  2. 商标权可无限续期
  3. 烟草制品必须使用注册商标

软件系统分析与设计(下午题)

  1. 数据流图
    • 一分一个缺省数据流
    • 加工向数据库或其他发送的数据流一定是一个动作
    • 每个加工必有输入和输出
    • 有上交文档的,著作权都属于公司
  2. 关系模式和E-R图
    • 一空可能不止一个属性
    • 从其他关系中引用的属性全部是外键
    • E-R图中联系:联系的实体不单只有两个,考虑3个甚至4个
    • 有时候说明不一定有全部全部的属性信息,还要根据前后自己补充
    • 弱实体只与对应实体有联系
  3. UML图和设计模式
    • 状态图填写时注意根据已有状态来组织词语填写
    • 特别注意掌握类图/对象图和观察者模式
  4. 算法(C语言实现)
  5. 面向对象编程(C++/Java二选一)
  • 其他见博客:https://blog.csdn.net/qq_36205380/article/details/84066328#_1

其他题目

  1. 图像数据量要除以8
  2. 仓库风格,编译器不属于
  3. 采样频率=定义频率*2
  4. 索引
    • 直接索引:块号大小
    • 一级索引:磁盘块/块号大小
    • 二级索引:一级的平方

你可能感兴趣的:(课程,考试总结,数据库,操作系统,计算机网络,软件架构,算法)