【软考】2019上半年软件设计师 易错知识点(3)
数据结构
线性表
线性表分为顺序表和链表
链表的操作:删除与插入
单链表的结点删除
单链表的结点插入
双链表的结点删除
双链表的结点插入
顺序表与链表的比较
树与二叉树
树的遍历:先序、后序、层次
结点计算重要公式:n=n0+n1+n2;n0=n2+1
操作:查找、插入、删除
图
分为有向图和无向图
遍历:深度优先、广度优先
拓扑排序:AOV——前一个影响后一个,先去没有入度的,也就是没有影响它的
关键路径:AOE——找最长的路径
最早开始时间、最迟发生时间、最迟开始时间
排序算法
Hash
构造与解决冲突
查找算法
耦合与内聚
一、内聚强度
内聚按强度从低到高有以下几种类型:
(1) 偶然内聚。如果一个模块的各成分之间毫无关系,则称为偶然内聚。
(2) 逻辑内聚。几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。
(3) 时间内聚。如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
(4) 过程内聚。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。
(5) 通信内聚。如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
(6) 顺序内聚。如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
(7) 功能内聚。模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
二、耦合强度
耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。
耦合按从强到弱的顺序可分为以下几种类型:
(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。
(2)公共耦合。两个以上的模块共同引用一个全局数据项就称为公共耦合。
(3)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
(4)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
(5)数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。
(6)非直接耦合。模块间没有信息传递时,属于非直接耦合。
五大媒体
1、感觉媒体
感觉媒体指的是能直接作用于人们的感觉器官,从而能使人产生直接感觉的媒体。如文字、数据、声音、图形、图像等。在多媒体计算机技术中,我们所说的媒体一般指的是感觉媒体。
2、表示媒体
表示媒体指的是为了传输感觉媒体而人为研究出来的媒体,借助于此种媒体,能有效地存储感觉媒体或将感觉媒体从一个地方传送到另一个地方。如语言编码、电报码、条形码等。
3、表现媒体
表现媒体指的是用于通信中使电信号和感觉媒体之间产生转换用的媒体。如输入、输出设备,包括键盘、鼠标器、显示器、打印机等。
4、存储媒体
存储媒体指的是用于存放表示媒体的媒体。如纸张、磁带、磁盘、光盘等。
5、传输媒体
传输媒体指的用于传输某种媒体的物理媒体。如双绞线、电缆、光纤等。
敏捷开发模式
1. 极限编程XP :XP是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。
2. 水晶法 :每个不同的项目都要一套不同的开发策略,约定和方法论
3. 并列争球法 :运用了“迭代”的方法,把每段时间(例如30天)一次的迭代成为一个冲刺,并按需求的优先级别来实现产品,有多个自治组织和自治小组并行的递增来实现产品。
4. 自适应软件开发 :ASD有6个基本的原则
- 有一个使命作为指导;
- 特征被视为客户价值的关键点;
- 过程中的等待是很重要的,因此“重做”与“做”同样关键
- 变化不被视为改正,而是被视为对软件开发实际情况的调查。
- 确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求。
- 风险也包含其中。
Macabe度量算法
流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
面向对象
多态
不同的对象收到同一消息可以产生完全不同的结果,这个现象叫做多态。多态由继承机制来支持。用户可以发送一个通用的消息,而实现的细节则由接受对象自行决定,这样同一消息就可以调用不同的方法。
通用多态包括参数多态和包含多态
特定多态包括过载多态和强制多态
参数多态:应用较广,最纯的多态
包含多态:最常见的例子是子类型化
过载多态:同一个名(操作符、函数名)在不同的上下文中有不同的类型
强制多态:通过语义操作把操作对象的类型强行加以变换
封装
封装是一种信息隐蔽技术,其目的是把定义与实现分离,保护数据不被对象的使用者直接存取。
重置、重载与动态绑定
重置:在子类中改变父类的既有函数的行为操作
重载:在子类中保留既有父类的函数名,但使用不同类型的参数。
动态绑定:以函数调用和函数本体的关联为基础,绑定动作在执行期才根据对象类型而进行。
覆盖:子类中以更具体的方式实现从父类继承来的方法。
设计模式
自底向上方法 三明治 测试策略的优点