结构化设计的概念
1. 设计的定义
一种软件开发活动,定义实现需求规约所需的软件结构。
结构化设计分为:
(1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。
(2)详细设计:详细描述模块。
2. 整体框架
体系结构设计(MSD)
接口设计
数据设计
3. 对设计方法的需求
实现软件设计的目标对结构化设计方法的需求
(1) 提供可体现**“原理/原则”的一组术语(符号),形 一个特定的抽象层,用于表达设计中所使用的部件。
(2)依据术语所形成的“空间”, 给出表达软件模型工具**。
(3)给出设计的过程指导。
4. 总体设计层概述
(1)在总体设计层
① 引入了两个术语/符号
② 引入了模块结构图 (MSD)
③ 过程指导
将DFD转化为MSD
第一步:如何将DFD转化为初始的MSD
分类:变换型数据流图、事务型数据流图、变换设计、事务设计
第二步:如何将初始的MSD 转化为最终可供详细设计使用的MSD
总体设计三个阶段
第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。 根据穿越系 统边界的数据流初步确定系统与外部的接口。
第二阶段:精化设计。依据模块"高内聚低耦合"的原则, 精化初始的模块结构图, 并设计其中的全局数据结构和每一模块的接口。
第三阶段:设计复审阶段,对前两个阶段得到的高层软件 结构进行复审,必要时还可能需要对软件结构做一些精化 工作。
初始模块结构图的设计
1. 数据流图的分类
变换型DFD
具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之间界面的数据流图。
事务型DFD
数据到达一个加工,该加工根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行,这类数据流 图称为事务型数据流图。
1)接受输入数据
2)分析并确定对应的事务
3)选取与该事务对应的一条活动路径
事务型DFD和变换型DFD的区别
- 原则上所有DFD都可以看成是变换型DFD
- 一般而言,接受1个输入数据,分成多条路径
变换设计的基本步骤
①第1步:设计准备—复审并精化系统模型
②第2步:确定输入、变换、输出这三部分之间的边界
③第3步:第一级分解—系统模块结构图顶层和第一层的设计
④ 第4步:第二级分解— 自顶向下,逐步求精
事务设计的基本步骤
① 第1步:设计准备— 复审并精化系统模型
②第2步:确定事务处理中心
③第3步:第一级分解—系统模块结构图顶层和第一层的设计
④ 第4步:第二级分解一自顶向下,逐步求精
模块和模块化
常见的启发式规则
模块:执行一个特殊任务的一组例程和数据结构
接口:给出可由其他模块和例程访问的对象
实现:接口的实现(模块功能的执行机制)
模块化:把系统分解成若干模块的过程
切记:高内聚低耦合
启发式规则
从长期的软件开发实践中,总结出来的规则。
常见的启发式规则
改进软件结构,提高模块独立性;
模块规模适中-每页60行语句;
深度、宽度、扇入和扇出适中;
模块的作用域力争在控制域之内;
降低模块接口的复杂性;
模块功能应该可以预测。
输入部分的精化
输出部分的精化
变换部分的精化
接口设计
(1)模块或软件构件间的接口设计;
(2)软件与其他软硬件系统之间的接口设计;
(3)软件与人(用户)之间的交互设计。