对于软考中经常做错的题,做个总结。
1、考查设计模式基础概念,需要搞清楚各个设计模式的特点与不同,设计模式共有结构型,创建型,行为型三大类,里面又各自包含了多种具体详细模式。具体内容如下:
例:
创建型设计模式抽象了实例化过程,有助于系统开发者将对象的创建、组合和表示方式进行抽象。以下(48)模式是创建型模式。
A.组合(Composite) B.装饰器(Decorator)
C.代理(Proxy) D.单例(Singleton)
【答案】D
2、考察软件测试的基础知识。
白盒测试的方法包括一系列的逻辑覆盖,主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖等。
(1)语句覆盖。语句覆盖是指选择足够多的测试用例,使得运行这些测试用例时,被测程序的每个语句至少执行一次。很显然,语句覆盖是一种很弱的覆盖标准。
(2)判定覆盖。判定覆盖也称为分支覆盖,它是指不仅每个语句至少执行一次,而且每个判定的每种可能的结果(分支)都至少执行一次。判定覆盖比语句覆盖强,但对程序逻辑的覆盖程度仍然不高。
(3)条件覆盖。条件覆盖是指不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取得各种可能的结果。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。
(4)路径覆盖。路径覆盖是指选取足够的测试用例,使得程序的每条可能执行到的路径都至少经过一次(如果程序中有环路,则要求每条环路路径至少经过一次)。路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,因此是一种较强的覆盖标准。但路径覆盖并未考虑判定中的条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
3、
数据字典是用来定义数据流图中各个成分的具体含义,它以一种准确的、无二义性的说明方法为系统的分析、设计及维护提供了有关元素一致的定义和详细的描述。
数据库设计可以分为需求分析阶段、概念结构设计、逻辑结构设计和物理结构设计等阶段。
需求分析阶段:分析用户的需求,包括数据、功能和性能需求;
概念结构设计:在分析阶段,已经得到了系统的数据流程图和数据字典,现在要结合数据规范化的理论,用一种数据模型将用户的数据需求明确地表示出来。概念数据模型是面向问题的模型,反映了用户的现实工作环境,是与数据库的具体实现技术无关的。建立系统概念数据模型的过程叫做概念结构设计。
逻辑结构设计:根据已经建立的概念数据模型,以及所采用的某个数据库管理系统软件的数据模型特性,按照一定的转换规则,把概念模型转换为这个数据库管理系统所能够接受的逻辑数据模型。不同的数据库管理系统提供了不同的逻辑数据模型,如层次模型、网状模型、关系模型等。物理结构设计:为一个确定的逻辑数据模型选择一个最适合应用要求的物理结构的过程,就叫做数据库的物理结构设计。
数据库在物理设备上的存储结构和存取方法称为数据库的物理数据模型。
4、
原子性:事务是原子的,要么做,要么都不做。
一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。
隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其它事物都是不可见的。
持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也永久有效。
串行调度:多个事务依次串行执行,且只有当一个事务的所有操作都执行完后才执行另一个事务的所有操作。
可串行化保证了事务并行调度时,相互不破坏,同时保证了数据从一个一致性状态到另一个一致性状态。
5、
UML2.0中提供了13种图形,一部分图给出了系统的动态视图,一部分图则给出系统的静态视图。
活动图展现了在系统内从一个活动到另一个活动的流程, 专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程,是状态图的一种特殊情况。通信图强调收发消息的对象之间的结构组织, 强调参加交互的对象的组织。 序列图是场景的图形化表示, 描述了以时间顺序组织的对象之间的交互活动, 对用例中的场景可以采用序列图进行描述。 定时图或时序图, 是UML2.0中新增的、特别适合实时和嵌入式系统建模的交互图,它关注沿着线性时间轴、生命线内部和生命线之间的条件改变,描述对象状态随着时间改变的情况,很像示波器,如下图所示,适合分析周期和非周期性任务。
类图展现了一组对象、 接口、 协作及其之间的关系, 属于静态视图;对象图展现了某一时刻一组对象以及它们之间的关系, 描述了在类图中所建立的事物的实例的静态快照;组件图/构件图展现了一组构件之间的组织和依赖, 专注于系统的静态实现视图, 它与类图相关, 通常把构件映射为一个或多个类、 接口或协作:包图是用于把模型本身组织成层次结构的通用机制, 不能执行, 展现由模型本身分解而成的组织单元以及其间的依赖关系。
6、
从模块独立性角度看,以下几种模块内聚类型中,(50)内聚是最好的。
(50)A.巧合 B.逻辑 C.信息 D.功能
【答案】D
【解析】本题考查软件设计的基础知识。
模块化是指将软件划分成独立命名且可以独立访问的模块, 不同的模块通常具有不同的功能或职责。 每个模块可以独立地开发、 测试, 最后组装成完整的软件。 模块独立性是指软件系统中每个模块只涉及软件要求的具体的一个子功能,而和其他模块之间的接口尽量简单, 是模块化设计的一个重要原则, 主要用模块间的精合和模块内的内聚来衡量。
模块的内聚性一搬有以下几种:
巧合内聚指一个模块内的几个处理元素之间没有任何联系。
逻辑内聚, 指模块内执行几个逻辑上相似的功能, 通过参数确定该模块完成哪一个功能。
时间内聚,把需要同时执行的动作组合在一起形成的模块。
通信内聚,指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
顺序内聚,指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。
功能内聚, 是最强的内聚, 指模块内所有元素共同完成一个功能, 缺一不可。 是最佳的内聚类型。