系统设计
系统设计
1 界面设计
人机界面设计(黄金三准则)
- 置于用户控制之下
- 减少用户的记忆负担
- 保持界面的一致性
2 结构化设计
- 概要设计(外部设计):确定每个模块的功能和调用关系,形成模块结构图
- 详细设计(内部设计):为每个具体任务选择适当的手段和处理方法
设计原则
- 模块独立性原则(高内聚低耦合)
- 保持模块的大小适中
- 多扇入,少扇出
- 深入和宽度不易过高
内聚程度从低到高
- 偶然内聚(巧合内聚 ):完成没有关系或者松散关系的任务
- 逻辑内聚:完成逻辑上相关的一组任务
- 时间内聚(瞬时内聚):包含的任务要在同一时间间隔内执行
- 过程内聚:特定次序
- 通信内聚:处理元素集中在一个数据结构的区域上
- 顺序内聚:必须顺序执行
- 功能内聚:完成一个单一功能,各部分缺一不可
耦合程度从低到高
- 内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分代码重叠;一个模块有多个入口
- 公共耦合:多个模块访问同一个公共数据环境
- 外部耦合:一组模块都访问同一个全局简单变量,而不是通过参数表传递该全局变量的信息
- 控制耦合:传递的参数里包含用户控制模块内部逻辑的信息( 比如 flag)
- 标记耦合:借助参数表,传数据结构
- 数据耦合:借助参数表,传简单数据
- 非直接耦合:两个模块之间没有之间关系
3 面向对象设计
类的分类
- 边界类:API接口、用户界面
- 控制类:逻辑相关的,如应用逻辑、业务逻辑、数据访问逻辑
- 实体类
设计原则
- 单一职责原则:设计目的单一的类
- 开闭原则:对拓展开放,对修改封闭
- 李氏替换原则:子类可以替换父类
- 依赖倒置原则:要依赖与抽象,而不是具体实现,针对于接口编程
- 接口隔离原则:使用多个专用的接口比使用单一的总接口要好
- 组合重用原则:要尽量使用组合,而不是继承关系达到重用
- 迪米特原则:一个对象要尽可能对其他对象有尽可能少的了解