软件设计师中级备考(0)
个人备考期间的小汇总,有帮助的话点个赞吖~
一. 05-17年真题及其他资源:
链接: https://pan.baidu.com/s/1vL3i3yGEFIeMQhIJ6K4piw 提取码: vvdm
二.09-19真题及解析
链接:https://pan.baidu.com/s/1UodEBqv3T-WVavI47MDBnQ
提取码:qt89
三. 19年上半年上午
supplement:
- 局部性原理:
- 时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。
程序循环、堆栈等是产生时间局部性的原因。 - 空间局部性(Spatial Locality):在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的。
- 顺序局部性(Order Locality):在典型程序中,除转移类指令外,大部分指令是顺序进行的。顺序执行和非顺序执行的比例大致是5:1。此外,对大型数组访问也是顺序的。
指令的顺序执行、数组的连续存放等是产生顺序局部性的原因。
- 可靠性计算:
主要涉及三种系统,即串联系统、并联系统和冗余系统,其中串联系统和并联系统的可靠性计算都非常简单,只要了解其概念,公式很容易记住。冗余系统要复杂一些。在实际的考试当中,考得最多的就是串并混合系统的可靠性计算。
- 串联系统
若一个系统由n个系统串联组成,设系统各个子系统的可靠性为R1、R2、R3…Rn表示,则系统的可靠性为:R=R1R2R3…*Rn - 并联系统
若一个系统由n个系统并联组成,设系统各个子系统的可靠性为R1、R2、R3…Rn表示,则系统的可靠性为:R=1-(1-R1)×(1-R2)×…×(1-Rn) - 串并混合系统
19年上:
- 模冗余系统(了解即可,不做要求)
m模冗余系统由m个(m=2n+1为奇数)相同的子系统和一个表决器组成,经过表决器表决后,m个子系统中占多数相同结果的输出可作为系统的输出。
在m个子系统中,只有n+1个或n+1个以上的子系统能正常工作,系统就能正常工作并输出正确结果。假设表决器是完全可靠的,每个子系统的可靠性为R0,则m模冗余系统的可靠性。
- RISC和CISC区别//参考来源
- CISC的指令能力强,单多数指令使用率低却增加了CPU的复杂度,指令是可变长格式;
RISC的指令大部分为单周期指令,指令长度固定,操作寄存器,只有Load/Store操作内存 - CISC支持多种寻址方式;
RISC支持方式少 - CISC通过微程序控制技术实现;
RISC增加了通用寄存器,硬布线逻辑控制为主,是和采用流水线 - CISC的研制周期长
- RISC优化编译,有效支持高级语言
- 编译原理之词法分析、语法分析、语义分析//参考来源
- 词法分析:
词法分析是编译过程的第一个阶段,这个阶段的任务可以看成是-从左到右一个字符一个字符地读入源程序,从中识别出一个个“单词”符号,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号);
通过词法分析程序实现上述读入源程序,识别符号的任务,词法分析过程依据的是语言的词法规则;
输出:词法分析程序输出的“单词”常以二元组的方式输出,即单词种别和单词自身的值;
认识:词法, 定义组成语言的单词, 是语言中最小单元; - 语法分析:
语法分析是编译过程的一个逻辑阶段,此阶段的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等;
语法是用户数据与控制信息的结构与格式
认识:语法-- 将单子组织成有含义的短语和句子的规则,正如英语翻译中的语法; - 语义分析(Syntax analysis)
语义分析是编译过程的一个逻辑阶段,语义是解释控制信息每个部分的意义,它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应,此阶段的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查;
收集类型信息供后面的代码生成阶段使用;
语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配;
认识:语义-- 结合上下文,可以推导出语句的真实含义,也就是我们输入中文之后翻译出来的英文含义,或输入英文,翻译出来的中文;
- 符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。这些信息一般以表格形式存储于系统中。
- 绝对路径与相对路径的表示、
绝对路径:从根目录\开始
相对路径:从当前目录下一级开始 - 嵌入式操作系统的特点
(1)微型化,从性能和成本角度考虑,希望占用的资源和系统代码量少;
(2)可定制,从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需求;
(3)实时性,嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高;
(4)可靠性,系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施;
(5)易移植性,为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。 - 系统原型
- 原型方法适用于用户需求不清、需求经常变化的情况,可以帮助导出系统需求并验证需求的有效性;
- 探索型原型的目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性,可以用来探索特殊的软件解决方案;
- 原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计。
原型法不能用来指导代码优化。
- 极限编程xp
- 只处理当时的需求,使设计保持简单
- 编写完程序之后编写测试代码
- 系统最终用户代表应该全程配合XP团队
- 极限编程提倡小型版本发布,每一轮迭代大约2周
- ISO/IEC9126软件质量模型//参考链接,介绍详细~
- 模块设计原则之内聚和耦合
//针对软考 具体耦合
- 人机交互“黄金三原则”
- 置于用户控制之下
- 减少用户的记忆负担
- 保持界面的一致性。
- 软件测试//针对软考详细版
考得比较多的是黑盒测试中的边界值,和白盒测试中的逻辑覆盖。
- 语句覆盖:选择足够的测试数据,使被测程序中的每条语句都至少执行一次。最弱
- 判定覆盖:设计足够的测试用例,使得每个判定表达式至少获得一次“真”“假”值。
- 条件覆盖:构造一组测试用例,使得每一判定语句中的每个逻辑条件都至少满足一次
- McCabe环路复杂度计算
(1)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
- 测试用例
在设计测试用例时,一个好的无效等价类,应该只从一个角度违反规则。 多个角度的话,不能直接定位到错误的位置。 - 重载&重写(即覆盖)
- 重载:在同一个类中允许同时存在一个以上的同名方法,这些方法的名称相同而参数形式不同。但是不能靠返回类型来判断。
- 重写(即覆盖):重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类中的方法。函数特征相同,但是具体实现不同。
重写需要注意:
(1)被重写的函数不能是static的
(2)重写函数必须有相同的类型,名称和参数列表
(3)重写函数的访问修饰符可以不同。派生类中重写改写为public、protect也是可以的
- 面向对象设计的六大原则
- 单一职责原则SRP:就一个类而言,应该仅有一个引起他变化的原因。也就是说一个类应该只负责一件事情
- 开闭原则OCP:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码实现变化。这是为软件实体的未来事件而制定的对现行开发设计进行约束的一个原则。
- 里式替换原则LSP:子类可以去扩展父类的功能,但是不能改变父类原有的功能。
换言之,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何异常。 但是反过来就不行了,因为子类可以扩展父类没有的功能,同时子类还不能改变父类原有的功能。 - 依赖倒置原则DIP:
(1)高层模块不应该依赖底层模块,两者都应该依赖其抽象;
(2)抽象不应该依赖细节;
(3)细节应该依赖抽象;
不可分割的原子逻辑就是底层模块,原子逻辑的再组装就是高层模块。 - 接口隔离原则ISP:客户端不应该依赖它不需要的接口
- 迪米特原则LOD:一个对象应该对其他对象有最少的了解
- 类图(Class Diadram)展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。
- 组件图(Component Diagram)展现了一组组件之间的组织和依赖。
- 通信图(communication diagram)。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。
- 部署图(Deploy Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。
- 三种类
- 项目管理
-
- 题型之同时完成项目
- 题型之同时完成项目
解法:把需要同时完成的活动的所需时间和作为需要同时完成的各自时间
- 成本估算模型
- 分析优先级设定通常根据 风险暴露 设定
- 进度管理工具图
- 多态
- 设计模式
- 观察者模式observer
- 策略模式
- 访问者模式(Visitor Pattern)
有visitor~