系统设计

系统设计

1 界面设计

人机界面设计(黄金三准则)

  • 置于用户控制之下
  • 减少用户的记忆负担
  • 保持界面的一致性

2 结构化设计

  • 概要设计(外部设计):确定每个模块的功能和调用关系,形成模块结构图
  • 详细设计(内部设计):为每个具体任务选择适当的手段和处理方法

设计原则

  • 模块独立性原则(高内聚低耦合)
  • 保持模块的大小适中
  • 多扇入,少扇出
  • 深入和宽度不易过高

内聚程度从低到高

  • 偶然内聚(巧合内聚 ):完成没有关系或者松散关系的任务
  • 逻辑内聚:完成逻辑上相关的一组任务
  • 时间内聚(瞬时内聚):包含的任务要在同一时间间隔内执行
  • 过程内聚:特定次序
  • 通信内聚:处理元素集中在一个数据结构的区域上
  • 顺序内聚必须顺序执行
  • 功能内聚:完成一个单一功能,各部分缺一不可

耦合程度从低到高

  • 内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分代码重叠;一个模块有多个入口
  • 公共耦合:多个模块访问同一个公共数据环境
  • 外部耦合:一组模块都访问同一个全局简单变量,而不是通过参数表传递该全局变量的信息
  • 控制耦合:传递的参数里包含用户控制模块内部逻辑的信息( 比如 flag)
  • 标记耦合:借助参数表,传数据结构
  • 数据耦合:借助参数表,传简单数据
  • 非直接耦合:两个模块之间没有之间关系

3 面向对象设计

类的分类

  • 边界类:API接口、用户界面
  • 控制类:逻辑相关的,如应用逻辑、业务逻辑、数据访问逻辑
  • 实体类

设计原则

  • 单一职责原则:设计目的单一的类
  • 开闭原则:对拓展开放,对修改封闭
  • 李氏替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖与抽象,而不是具体实现,针对于接口编程
  • 接口隔离原则:使用多个专用的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用
  • 迪米特原则:一个对象要尽可能对其他对象有尽可能少的了解