【软考系统架构设计师】第十五章—系统设计(知识点必知必会)
【软考系统架构设计师】第十五章---系统设计(知识点必知必会)
一. 软件输入设计
- 人的因素在系统输入设计中扮演了很重要的角色。
1)原理
- 输入应该尽可能地简单,以降低错误发生的可能性
- 只让用户输入变化的数据
- 表格中各个数据项应有提示信息
- 尽可能使用选择而不是键盘输入的方式获取数据
2)数据类型检查
- 确保输入了正确的数据类型;
- 自检位用于对主关键字进行基于校验位的检查;
- 域检査用于验证数据是否位于合法的取值范围;
- 格式检查按照已知的数据格式对照检查输入数据的格式。
二. 面向对象分析与设计
1)面向对象模型
- 面向对象设计的基本任务,把面向对象分析模型转换为面向对象设计模型。
- 面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成。
- 设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和描述流程化处理过程的活动图等。
1)以包图表示的软件体系结构图
2)以交互图表示的用例实现图,完整精确的类图
3)针对复杂对象的状态图和用以描述流程化处理的活动图等
2)面向对象设计类
- 类封装了信息和行为,是面向对象的重要组成部分。
- 设计类是面向对象设计过程中最重要的组成部分,也是最复杂和最耗时的部分。
- 在面向对象设计过程中,类可以分为三种类型:实体类、边界类和控制类。
01. 实体类
- 实体类映射需求中的每个实体。
- 实体类保存需要存储在永久存储体中的信息。
- 实体类是对用户来说最有意义的类,通常采用业务领域术语命名,一般来说是一个名词,在用例模型向领域模型的转化中,参与者一般对应于实体类。
02. 控制类
- 控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化而来的名词。
- 控制类用于对一个或几个用例所特有的控制行为进行建模,控制对象(控制类的实例)通常控制其他对象。 因此它们的行为具有协调性。
- 它作为完成用例业务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为。
03. 边界类
用于封装在用例内、外流动的信息或数据流。可以实现界面控制、外部接口和环境隔离。
边界类是一种用于对系统外部环境与其内部运作之间的交互进行建模的类,用于实现目标软件系统与外部系统或外部设备之间的信息交流和互操作。
3)设计类之间的关系
- 类之间的关系包括了关联,聚合,组合,依赖,泛化,实现。
- ER图中的实体与类之间的关系:
实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。
01. 依赖
- A变化则引起B变化
- 依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义
02. 实现
- 一个类实现一个接口
- 实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约
- is-a基于类继承或接口实现,is-a是表达这句话的一种方式:“这个东西是那个东西的一种”。例如:野马是一种马。
- has-a关系是基于用法(即引用)而不是继承。
- 换句话说,如果类a中的代码具有对类b实例的引用,则“类a has-a类b”。例如:马有缰绳。
03. 泛化
- 一般事物与特殊种类之间的关系。
- 继承关系是泛化关系的反关系。
04. 关联
- 两个类实例之间存在某种语义联系,如老师和学校。
- 包括聚集关系和组合关系
- 聚合关系:整体与部分生命周期不同
- 组合关系:整体与部分生命周期相同
4)面向对象设计原则
- 常用的面向对象设计原则包括开闭原则、里氏替换原则、依赖倒置原则、组合/聚合复用原则、接口隔离原则和最少知识原则等。
- 这些设计原则首先都是面向复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。
01. 最少知识原则
- 也称为迪米特法则,是面向对象设计原则之一,指一个软件实体应当尽可能少地与其他实体发生相互作用。
- 这样,当一个实体被修改时,就会尽可能少地影响其他的实体。