软件工程考试技巧


海明校验码

  1. 2^k-1>=n+k
  2. 用奇偶性来检错和纠错的检验方法

循环冗余校验码CRC

解答:多项式:x^4+x^3+x+1 原始报文”11001010101”
除数是 11011,然后在原始报文加上多项式最高指数的个数位数
然后一直上1,然后余数剩下最高指数个数位数

指令操作数寻址方式

  1. 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身
  2. 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址
  3. 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址
  4. 寄存器寻址方式:指令中的地址码是寄存器的编号

指令系统

  1. CISC是复杂指令系统数量多,使用频率差别大,可变长格式,支持多种
  2. RISC是精简指令系统,数量少,使用频率接近定长格式,支持少,硬布线逻辑控制为主

流水线相关计算

  1. 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期
  2. 流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期
  3. 流水线吞吐率:总指令条数/流水线执行时间
  4. 流水线加速比:不使用流水线总执行时间/使用流水线总执行时间

快冲突概率高到低

直接映像->组相联映像->全相联映像

总线结构

1.从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:

  1. 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线
  2. 系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数),
  3. 地址总线:(系统可管理的内存空间的 大小),控制总线(传送控制命令)。代表的有ISA总线,EISA总线,PCI总线
  4. 外部总线:设备一级的总线,微机和外部设备的总线。代表有Rs232 (串行总线),SCSI(并行总线),USB(通用串行总线,即插即用,支持热插拔)

加密技术

对称密钥

  1. DES:56位密钥,64位数据块,速度快
  2. 3DES:两个56位的密钥
  3. AES
  4. RC-5
  5. IDEA:128位密钥,64位数据块

非对称加密(公开密钥)

  1. RSA:512位(或1024位)
  2. Elgamal
  3. ECC:椭圆曲线算法

信息摘要算法:MD5(128位),SHA(160位)

同步与互斥

1.互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1
2.同步信号量:对共享资源的访问控制,初值一般是共享资源的数量

死锁

1.死锁计算问题:n个进程,r的资源 发生死锁n * (r - 1);不发生死锁n*(r-1)+1

线程

1.线程是独立调度的最小单位,进程是拥有资源的最小单位

索引文件地址

计算方式:索引文件大小/物理盘大小 = 物理块,然后存放数据就是物理块索引文件大小,这是一级间接
二级间接是 在一级的间接上
物理块

位示图

计算方式:在第几个字: 多少号物理块/字长
需要多少个字: 容量/物理块大小/字长

三级模式-两级映像

  1. 内模式:管理如何存储物理的数据,对应具体物理存储文件
  2. 模式:我们通常使用的基本表
  3. 外模式:对应数据库中的视图

外模式-模式映像:表和视图之间的映像。

模式-内模式映像:表和数据的物理存储之间的映射

数据库设计

  1. 需求分析:及分析数据存储的要求,产出物有数据流图,数据字典,需求说明书
  2. 概念结构设计:就是设计E-R图,也即实体-属性图
  3. 逻辑结构设计:将E-R图,转换成关系模式
  4. 物理设计:根据生成的表的概念,生成物理数据库

模式分解

  1. 分解p具有无损连接性的充分必要条件:R1 交 R2 -> (R1-R2)或者
  2. R1 交 R2 -> (R2 - R1)

分布透明性

  1. 分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
  2. 位置透明性:应用程序不关心数据存储物理位置的改变
  3. 逻辑透明性:用户或应用程序无需知道局部使用是那种数据模型
  4. 复制透明性:用户或应用程序不关心复制的数据从何而来

自上而下语法:最左推导,从左至右。

自下而上语法分析:最右推导,从右至左。

二叉树

  1. 二叉树第i层上最多有2^i-1个结点
  2. 高度为k的二叉树最多有2^k-1个结点
  3. 具有n个结点的完全二叉树的深度为floor(log2n) + 1;

  1. n个节点的连线数为n*(n-1)/2

查找

  1. 折半查找的时间复杂度为O(log2n);

软件过程模型

  1. 瀑布模型:只适用于需求明确或者二次开发(需求稳定)
  2. V模型:增加了很多轮测试,测试贯穿于软件开发的 各个阶段
  3. 原型:需求不明确的情况
  4. 螺旋模型:增加了风险分析
  5. 增量模型:首先开发核心模块功能,每一层增量版本都可作为独立可操作的作品
  6. 喷泉模型:面向对象的开发方法

进度管理

  1. Gantt图:无法反应活动之间的依赖关系
  2. PERT图:无法反应活动之间的并行关系

关键路径

  1. 最早开始时间:取所有前驱活动最早完成时间的最大值
  2. 最早完成时间:最早开始时间+活动本身时间
  3. 关键路径:项目中耗时最长的一条线
  4. 最晚完成:取后续活动最晚开始时间的最小值
  5. 最晚开始时间:最晚完成-活动本身时间
  6. 松弛时间:最晚开始时间-最早开始时间

软件容错技术

  1. 结构冗余:分为静态和动态,混合冗余
  2. 信息冗余:为检错和纠错在数据上加上一段额外的信息,例如校验码原理
  3. 时间冗余:遇到错误是重复执行
  4. 冗余附加技术:冗余附加技术是指为实现结构,信息和时间冗余技术所需的资源和技术。

配置数据库

  1. 开发库:专供开发人员使用,其中的信息可能做频繁修改,对其控制相当宽松
  2. 受控库:在生存期某一阶段工作结束时发布的阶段产品
  3. 产品库:作为最终产品存入产品库,等待交付用户或现场安装

软件风险

  1. 不确定性
  2. 损失

风险控制

  1. 风险避免
  2. 风险监控
  3. RMMM计划(风险缓解,监控和管理计划)

内聚低到高

  1. 偶然内聚:无直接关系
  2. 逻辑内聚:逻辑相似,参数决定
  3. 时间内聚:同时执行
  4. 过程内聚:指定的过程顺序
  5. 通信内聚:相同数据结构,相同输入输出
  6. 顺序内聚:顺序执行,输入为输出
  7. 功能内聚:共同作用,缺一不可

耦合低到高

  1. 无直接耦合:无直接关系
  2. 数据耦合:传递数据值调用
  3. 标记耦合:传递数据结构
  4. 控制耦合:控制变量,选择执行某一功能
  5. 外部耦合:软件外部环境
  6. 公共耦合:公共数据结构
  7. 内容耦合:模块内部关联

系统设计

  1. 概要设计基本任务:设计软件系统总体结构,数据结构及数据库设计,编写概要设计文档,评审
  2. 详细设计的基本任务:模块内详细算法设计,模块内数据结构设计,数据库的物理设计,其他设计(代码,输入/输出格式,用户界面),编写详细设计说明书,评审。

模块的作用范围应在其控制范围之内

测试阶段

  1. 单元测试:对单个模块进行测试
  2. 集成测试:将模块组合起来进行测试
  3. 确认测试:对已完成的软件进行功能上的测试
  4. 系统测试:对软件性能测试
  5. 回归测试:软件修改错误或变更后,进行测试。

设计模式

创建型

  1. Abstract Factory : 抽象接口
  2. Builder:类和构造分离
  3. Factory Method: 子类决定实例化
  4. Prototype:原型实例,拷贝
  5. Singleton:唯一实例

结构型

  1. Adapter: 转换,兼容接口
  2. Bridge:抽象和实现分离
  3. Composite:整体-部分树形结构
  4. Decorator: 附加职责
  5. Facade:对外统一接口
  6. Flyweight:细粒度,共享
  7. Proxy:代理

行为型设计

  1. Chain of Responsibility: 传递请求,职责,链接
  2. Command:参数化,日志记录
  3. Interpreter:文法,解释
  4. Iterator:顺序访问
  5. Mediator:不直接引用
  6. Memento:保存,恢复
  7. Observe:通知,自动更新
  8. State:状态变成类
  9. Strategy:算法替换

文章作者: 小猩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小猩 !
  目录