结构化设计
- 总体设计
 - 详细设计
 
设计
一种软件开发活动,定义实现需求规约所需的软件结构
整体框架
- 体系结构设计
 - 接口设计
 - 数据设计
 
总体设计
- 初始设计
 - 精化设计
 
初始模块结构图的设计
数据流图的分类
- 变换型DFD
 - 事务型DFD
 
变化设计的基本步骤
- 复审并精化模型
 - 确定边界
 - 第一级分解-系统模块结构图顶层和第一层的设计
 
事务设计的基本步骤
初始模块结构图精化的原则
模块和模块化
模块:执行一个特殊任务的一组例程和数据结构
模块化:把系统分解成若干模块的过程
模块化的原因
降低复杂性
耦合
- 内容耦合:一个模块直接修改另一模块内部数据
 - 公共耦合:一组模块均访问同一全局数据区
 - 外部耦合:一组模块均与外部环境有关
 - 控制耦合:模块之间传输控制信息
 - 标记耦合:模块间有数据结构依赖关系
 - 数据耦合:模块之间有数据值传递
 - 非直接耦合:模块之间没有任何关系
 

低耦合原则
- 使用接口隐藏实现细节
 - 遵循一个定义只代表一个含义
 - 不要全局变量
 - 多封装 少暴露
 - 设计模式
 - 避免内容耦合 减少控制耦合、公共耦合
 
内聚
- 偶然内聚:模块组成部分没有关联
 - 逻辑内聚:组件逻辑功能类似
 - 时间内聚:模块各部分在同一时间内被执行
 - 过程内聚:模块各部分受同一控制流支配
 - 通信内聚:模块使用相同输入或输出的数据
 - 顺序内聚:前一模块的输出,是后以模块的输入
 - 功能内聚:模块各组成部分执行同一功能
 

高内聚原则
- 模块功能尽量单一
 - 模块只对外暴露最小接口
 
初始化模块结构图精化的启发式规则
常见启发式规则

接口设计
- 模块或软件构件间的接口
 - 软件与其他软件硬件系统之间的接口
 - 软件与用户的接口
 
人机交互界面
用户界面应具备的特性
- 可使用性
 - 灵活性
 - 可靠性
 
界面设计类型
- 外行
 - 初学
 - 熟练
 - 专家
 
设计原则
- 一致性
 - 操作步骤少
 - 避免哑播放
 - Undo功能
 - 减少记忆负担
 - 提高学习效率
 
数据设计
对必须要存储的数据及其格式进行设计
- 文件存储
 
数据库设计
- ORM
 
详细设计工具
- 伪代码
 - 程序流程图
 - PAD图
 - N-S图
 - 判定表与判定树
 
软件设计规约
概要设计规约
- 系统环境
 - 设计描述
 - 对每个模块的描述
 - 文件结构和全局数据
 
详细设计规约
设计规约格式
软件设计评审
方法
- 非正式评审
 - 正式评审