结构化设计
- 总体设计
- 详细设计
设计
一种软件开发活动,定义实现需求规约所需的软件结构
整体框架
- 体系结构设计
- 接口设计
- 数据设计
总体设计
- 初始设计
- 精化设计
初始模块结构图的设计
数据流图的分类
- 变换型DFD
- 事务型DFD
变化设计的基本步骤
- 复审并精化模型
- 确定边界
- 第一级分解-系统模块结构图顶层和第一层的设计
事务设计的基本步骤
初始模块结构图精化的原则
模块和模块化
模块:执行一个特殊任务的一组例程和数据结构
模块化:把系统分解成若干模块的过程
模块化的原因
降低复杂性
耦合
- 内容耦合:一个模块直接修改另一模块内部数据
- 公共耦合:一组模块均访问同一全局数据区
- 外部耦合:一组模块均与外部环境有关
- 控制耦合:模块之间传输控制信息
- 标记耦合:模块间有数据结构依赖关系
- 数据耦合:模块之间有数据值传递
- 非直接耦合:模块之间没有任何关系
低耦合原则
- 使用接口隐藏实现细节
- 遵循一个定义只代表一个含义
- 不要全局变量
- 多封装 少暴露
- 设计模式
- 避免内容耦合 减少控制耦合、公共耦合
内聚
- 偶然内聚:模块组成部分没有关联
- 逻辑内聚:组件逻辑功能类似
- 时间内聚:模块各部分在同一时间内被执行
- 过程内聚:模块各部分受同一控制流支配
- 通信内聚:模块使用相同输入或输出的数据
- 顺序内聚:前一模块的输出,是后以模块的输入
- 功能内聚:模块各组成部分执行同一功能
高内聚原则
- 模块功能尽量单一
- 模块只对外暴露最小接口
初始化模块结构图精化的启发式规则
常见启发式规则
接口设计
- 模块或软件构件间的接口
- 软件与其他软件硬件系统之间的接口
- 软件与用户的接口
人机交互界面
用户界面应具备的特性
- 可使用性
- 灵活性
- 可靠性
界面设计类型
- 外行
- 初学
- 熟练
- 专家
设计原则
- 一致性
- 操作步骤少
- 避免哑播放
- Undo功能
- 减少记忆负担
- 提高学习效率
数据设计
对必须要存储的数据及其格式进行设计
- 文件存储
数据库设计
- ORM
详细设计工具
- 伪代码
- 程序流程图
- PAD图
- N-S图
- 判定表与判定树
软件设计规约
概要设计规约
- 系统环境
- 设计描述
- 对每个模块的描述
- 文件结构和全局数据
详细设计规约
设计规约格式
软件设计评审
方法
- 非正式评审
- 正式评审