总体设计(概要设计/初步设计):确定系统模块及相互关系,划分程序,文件,数据库,文档等物理元素
- 系统设计阶段
- 数据流图分析方案
- 选取上,中,下,(成本)三种方案
- 确定最佳方案,指定详细计划
- 结构设计阶段
- 功能分解:细化数据流图
- 设计软件结构:层次图,或结构图,或数据流图导出软件结构
- 数据库设计
- 测试计划
- 文档
- 审查
设计原理:
模块化:程序划分为独立模块,多种子功能构成整体
+抽象:关注本质
+逐步求精:推迟关注细节
+信息隐藏:迪米特法则(最少知识)
->模块独立:高内聚,低耦合
耦合(低->高):无直接耦合->数据耦合->标记(特征)耦合->控制耦合->外部耦合->公共耦合
内聚(高->低):功能->顺序->通信->过程->时间->逻辑->偶然
启发规则
- 改进软件结构提高模块的独立性
- 模块规模应该适中
- 深度(结构控制层数)、宽度(同层次模块总数)、扇出(能调用模块数)和扇入(被多少模块调用)都应适当->高层高扇出,中层较少,底层高扇入
- 模块的作用域(该模块判定影响的模块集合)应该在控制域(本身及直接间接从属的模块集合)内
- 力争降低模块接口的复杂程度
- 设计单入口单出口的模块
- 模块的功能应该可预测
图形工具:
层次图:方框+连线(调用关系)
HIPO图:层次图+编号
结构图:每个方框代表一个模块,框内注明模块的名字或主要功能,方框间的箭头(或直线)代表模块的调用关系,注释表示来回传递的信息【尾部空心圆表示传递数据,实心圆代表传递控制信息】
面向数据流设计方法(SD)
-
变换流:输入+变换中心+输出
-
事务流:多种事务选择执行