软件工程
电子教案
王树林
第 14章 设计方法
设计的任务是从信息需求中综合出数据结构的
表示、程序结构、接口特征和过程细节。主
要描述高层各部分的相关关系和底层所需要
的逻辑操作。
14.1 数据设计
数据设计是实施软件工程中的四个设计活
动的第一个活动。数据结构对软件质量的影
响是很深远的。信息隐蔽和数据抽象为数据
设计提供了基础。无论哪种设计方法,好的
数据设计将改善程序结构和模块划分,降低
过程复杂性。
第 14章 设计方法
需求分析和设计经常重叠,我们常常考虑下面
一组数据规约。
( 1)用于功能和行为的系统分析原则也应用
于数据。数据对象及其关系、数据流和内容
表示也应该按步骤进行开发和复审。
( 2)应该标识所有的数据组织结构以及其上
的操作。
( 3)应当建立数据字典,并用于数据设计和
程序设计。
( 4)底层的设计决策应该推迟到设计过程的
后期。
第 14章 设计方法
( 5)只有那些需要直接使用数据结构内部数据
的模块才能看到该数据结构的表示。
( 6)应该开发一个由有用的数据结构和应用于
其上的操作组成的库。
( 7)软件设计和程序设计语言应该支持抽象数
据类型的规约和实现。例如 Fortran,实现一个
链表或多层异构数组将是非常困难的,他不
支持直接对这些数据结构进行规约。
第 14章 设计方法
14.2 体系结构设计
体系结构的设计目标是开发一个模
块化的程序结构,并表示出模块中的控
制关系。体系结构设计将程序结构和数
据结构相结合,为数据在程序中的流动
定义了接口。
具体设计前,应首先考虑软件的体
系结构。先总体后具体。
第 14章 设计方法
14.1 贡献者
体系结构设计起源于早期强调的模块
化的设计概念、自顶向下设计和结构化
设计。
14.1 应用域
每种软件设计方法都有其长处和短处,
选择设计方法的一个重要因素是其应用
的范围。
第 14章 设计方法
几乎所有的软件系统开发都可以用面向数据流
的设计方法,但象数据库应用、专家系统和
面向对象的用户界面就不太适合用这种方法。
14.3 体系结构设计过程
面向数据流的设计是一种体系结构设计方法。
他可以方便的从分析模型转换到程序结构的
设计描述。过程如下,
( 1)建立数据流的类型;( 2)指明流的边界;
( 3)将 DFD影射到程序结构;( 4)用“因
子化”的方法定义控制的层次结构;( 5)用
设计测度和启发信息对结构进行求精。
第 14章 设计方法
14.3.1 变换流
时间
外部
表示
内部
表示
信息 输入流 输出流
变换流
第 14章 设计方法
14.3.2 事物流
由于基本的系统模型隐含着变换流,可
以把所有的数据流都归为这一类。然而,
信息流经常可以被描述成有一个称为事
物的单个数据项,他可以沿多条路径之
一触发其他数据流。
第 14章 设计方法
T
事物
事物中心
动作路径
第 14章 设计方法
14.4 变换映射
变换映射是一组设计步骤,可以将
具有变换流特征的 DFD映射为一个预定
义的程序结构摸板。
14.4.1 一个实例
SafeHome软件系统数据流图
第 14章 设计方法
设计步骤如下:
步骤一,复审基本系统类型。
步骤二,复审和精化软件的数据流程图。
步骤三,确定 DFD含有变换流还是事物流。
步骤四,划分输入和输出流的边界,隔离变换中心。
步骤五,完成, 第一级因子化,,程序结构表示了控制自
顶向下的分布。
步骤六,完成, 第二级因子化,,第二级因子化是将 DFD中
的每一个变换映射为程序结构中的模块。
步骤七,用提高软件质量的启发信息,精化第一次迭代的
设计结构。
第 14章 设计方法
SafeHome
软件
控制面板
传感器
控制面板
显示
警铃
电话线
电话号
码拨号
音
警告
类型
显示信
息用户命
令和数
据
传感
器状
态
第 14章 设计方法
控制面板
传感器
控制面板显示
警告
电话线
与用户的
合同
传感器状态
用户命令和数据
显示信息
警告类型
电话号码播音
密码处理
监控传感器
显示信息
和状态检验 ID信息
密码
激活 /不激活
系统
配置系统
配置信息
配置数
据
配置数据
配置数据
开始停
止
配置请
求
传感器信
息
步骤一
第 14章 设计方法
读传感器
传感器状态
拨号
评估位置
显示格式
产生警告
信号
配置信息
电话号码播音
电话号码
警告数据
传感器 ID类型定
位
配置数据
传感器 ID类型
警告类型
传感器信
息
步骤二:
第 14章 设计方法
配置信息
读传感器
询问响应
信息
建立报警
条件 选择电话 号码
格式化
显示
产生显示
产生警告
信号
设置与电话
网的连接 产生电话 线脉冲
传感器
状态
警报
类型
传感器信
息格式化的 ID、
类型和地点
警报数
据
传感器 ID、
类型和地点
配置数据
警报条
件代码
设置传
感器 ID
警报编
号列表 电话号
码 准备拨
的电话
号码 拨号音
第 14章 设计方法
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
第 14章 设计方法
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
格式化显示 产生警报
信号
设置与电话
网的连接
产生显示 产生电话 线脉冲
监控传感器的第 2层
因子化
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
格式化显示 产生警报
信号
设置与电话
网的连接
产生显示 产生电话 线脉冲
询问响应
信息
读传感器
建立报警
条件
选择电话号码
监控传感器的第一次迭代后的
程序结构
第 14章 设计方法
监控传感器
执行程序
警报输出
控制器
产生警报
信号
设置与电话
网的连接产生显示
产生电话
线脉冲
询问响应
信息
读传感器
建立报警
条件
监控传感器精化后的程序结构
第 14章 设计方法
14.5 事物映射
一个单个数据项触发一条或多条信
息流,每条信息流代表一个由数据项的
内容蕴涵的功能,这个数据项被成为事
物。
14.5.1 一个实例
SafeHome软件的用户交互子系统。
第 14章 设计方法
读用户命令
与命令处
理相关
读密码
与文件中密
码相比较 检验信息 过程
激活 /非活
动系统
显示信息
和状态
读系统数据 建立配置文件
配置信息
用户命令
原配置数据系统参数和数据
配置
开 /关
密码
密码
四位数字
配置数
据
格式化
配置数
据
配置数
据
校验
密码
A/D信
息
显示
信息
校验
密码
命令类
型
具有流边界的用户命令
子系统的第二层 DFD
第 14章 设计方法
14.5.2 设计步骤
步骤一 复审基本系统模型
步骤二 复审和精化软件的数据流程图
步骤三 确定 DFD含有变换流还是事物流特征。
步骤四 标识事物中心和每条动作路径 上的流特征。
步骤五 将 DFD映射到一个适合于进行事物处理的程序结构上。
步骤六 因子化并精化该事物结构和每条动作路径的结构。
步骤七 用提高软件质量的启发信息,精化第一次迭代得到的程
序结构。
第 14章 设计方法
a
b
d
p
q
r
s
Flow1
b
a
d
c1
q r s
p
事物控
制
分派模
块
第 14章 设计方法
用户执行程序
读用户命令 命令处理
系统设置控制器 现用 /非现用系统 密码处理控制器
第 14章 设计方法
用户交互执行程序
读用户命令 命令处理
系统设置控制器 现用 /非现用系统 密码处理控制器
读系统数据
建立设置文件 显示信息与状态
读密码 用文件比较密码 密码输出
控制器
产生无效
信息
第 14章 设计方法
14.6 设计的后处理
程序结构开发出来并进行精化以后,
还需要完成以下任务:
? 为每个模块开发处理说明。
? 为每个模块提供接口描述。
? 定义局部和全局数据结构。
? 标出所有各种设计限制 /局限。
? 进行设计复审。
? 进行优化。
第 14章 设计方法
处理说明应该是无二义的,它应正确描述模块
内的处理过程。
接口描述需要对内部模块接口、外部系统接口
和人机界面进行设计。
数据结构的设计对程序结构和每个模块的过程
细节都有深远的影响。
14.7 体系结构设计优化
不能实施的优化设计是毫无价值的。在设
计阶段的早期对程序结构多做优化。先使其
工作起来,再设法使其更好地工作。
第 14章 设计方法
14.8 接口设计
接口设计主要包括三个方面,1)设计软
件模块间的接口; 2)设计模块和其他非人的
信息生产者和消费者; 3)设计人和计算机间
的接口。
14.8.1 内部和外部接口设计
内部程序接口的设计有时也被称之为模
块间的接口设计,他是由模块间传递的数据
和程序设计语言的特性共同导致的。
外部接口设计与外部实体有关。
第 14章 设计方法
14.8.2 用户界面设计
14.9 人机界面设计
14.9.1 界面设计模型
设计模型包括对
14.9.2 任务分析和建摸
第 14章 设计方法
14.9.3 设计问题
界面设计时的问题:系统响应时间、用户
帮助设施、错误信息处理和命令交互。
系统响应时间包括两个方面的属性:长度和
易变性。过快和过慢都不好。低的响应时间
易变性有助于用户建立稳定的节奏。
第 14章 设计方法
交互式系统的用户总是或多或少地需要帮助。
帮助的形式是怎样的?
第 14章 设计方法
14.9.4 实现工具
界面设计是一个迭代的过程,设计
好的界面由用户评估,再根据用户意见
修改。
第 14章 设计方法
14.9.5 设计评估
14.10 界面设计指南
14.10.1 一般交互
14.10.2 信息显示
14.10.3 数据输入
第 14章 设计方法
14.11 过程设计
过程设计应该在数据、体系结构、和界
面设计完成之后进行。过程细节的规约必须
是无二义的,而没有二义的自然语言就不在
是自然语言了。
14.11.1 结构化程序设计
任何程序,无论是哪个应用领域,无论技
术上有多复杂,总可以用这三种结构来设计
和实现。
14.11.2 图形设计符号
第 14章 设计方法
14.11.3 表格设计符号
一幅图胜过一千句话,其中流程图和
盒状图等图形工具为描述过程细节提供
了良好的图形模式。
第一项任务
下一项任务
顺序
Else部分 Then部分
F T
If-then-else
第 14章 设计方法
T
F T
F
循环条件
循环体
第 14章 设计方法
14.11.4 程序设计语言
程序设计语言( PDL) 也称结构化的英语或
伪码。设计语言必须具有以下特征:
? 有为结构化构成元素、数据声明和模块化特
征提供的固定的关键词语法。
? 是自由的自然语言语法,能用于描述处理特
性。
? 支持各种接口描述的子程序定义和调用技术。
14.11.5 一个 PDL实例
小 结
软件设计包括四个独立又相互联系
的活动:数据设计,体系结构设计,接
口设计,过程设计。
电子教案
王树林
第 14章 设计方法
设计的任务是从信息需求中综合出数据结构的
表示、程序结构、接口特征和过程细节。主
要描述高层各部分的相关关系和底层所需要
的逻辑操作。
14.1 数据设计
数据设计是实施软件工程中的四个设计活
动的第一个活动。数据结构对软件质量的影
响是很深远的。信息隐蔽和数据抽象为数据
设计提供了基础。无论哪种设计方法,好的
数据设计将改善程序结构和模块划分,降低
过程复杂性。
第 14章 设计方法
需求分析和设计经常重叠,我们常常考虑下面
一组数据规约。
( 1)用于功能和行为的系统分析原则也应用
于数据。数据对象及其关系、数据流和内容
表示也应该按步骤进行开发和复审。
( 2)应该标识所有的数据组织结构以及其上
的操作。
( 3)应当建立数据字典,并用于数据设计和
程序设计。
( 4)底层的设计决策应该推迟到设计过程的
后期。
第 14章 设计方法
( 5)只有那些需要直接使用数据结构内部数据
的模块才能看到该数据结构的表示。
( 6)应该开发一个由有用的数据结构和应用于
其上的操作组成的库。
( 7)软件设计和程序设计语言应该支持抽象数
据类型的规约和实现。例如 Fortran,实现一个
链表或多层异构数组将是非常困难的,他不
支持直接对这些数据结构进行规约。
第 14章 设计方法
14.2 体系结构设计
体系结构的设计目标是开发一个模
块化的程序结构,并表示出模块中的控
制关系。体系结构设计将程序结构和数
据结构相结合,为数据在程序中的流动
定义了接口。
具体设计前,应首先考虑软件的体
系结构。先总体后具体。
第 14章 设计方法
14.1 贡献者
体系结构设计起源于早期强调的模块
化的设计概念、自顶向下设计和结构化
设计。
14.1 应用域
每种软件设计方法都有其长处和短处,
选择设计方法的一个重要因素是其应用
的范围。
第 14章 设计方法
几乎所有的软件系统开发都可以用面向数据流
的设计方法,但象数据库应用、专家系统和
面向对象的用户界面就不太适合用这种方法。
14.3 体系结构设计过程
面向数据流的设计是一种体系结构设计方法。
他可以方便的从分析模型转换到程序结构的
设计描述。过程如下,
( 1)建立数据流的类型;( 2)指明流的边界;
( 3)将 DFD影射到程序结构;( 4)用“因
子化”的方法定义控制的层次结构;( 5)用
设计测度和启发信息对结构进行求精。
第 14章 设计方法
14.3.1 变换流
时间
外部
表示
内部
表示
信息 输入流 输出流
变换流
第 14章 设计方法
14.3.2 事物流
由于基本的系统模型隐含着变换流,可
以把所有的数据流都归为这一类。然而,
信息流经常可以被描述成有一个称为事
物的单个数据项,他可以沿多条路径之
一触发其他数据流。
第 14章 设计方法
T
事物
事物中心
动作路径
第 14章 设计方法
14.4 变换映射
变换映射是一组设计步骤,可以将
具有变换流特征的 DFD映射为一个预定
义的程序结构摸板。
14.4.1 一个实例
SafeHome软件系统数据流图
第 14章 设计方法
设计步骤如下:
步骤一,复审基本系统类型。
步骤二,复审和精化软件的数据流程图。
步骤三,确定 DFD含有变换流还是事物流。
步骤四,划分输入和输出流的边界,隔离变换中心。
步骤五,完成, 第一级因子化,,程序结构表示了控制自
顶向下的分布。
步骤六,完成, 第二级因子化,,第二级因子化是将 DFD中
的每一个变换映射为程序结构中的模块。
步骤七,用提高软件质量的启发信息,精化第一次迭代的
设计结构。
第 14章 设计方法
SafeHome
软件
控制面板
传感器
控制面板
显示
警铃
电话线
电话号
码拨号
音
警告
类型
显示信
息用户命
令和数
据
传感
器状
态
第 14章 设计方法
控制面板
传感器
控制面板显示
警告
电话线
与用户的
合同
传感器状态
用户命令和数据
显示信息
警告类型
电话号码播音
密码处理
监控传感器
显示信息
和状态检验 ID信息
密码
激活 /不激活
系统
配置系统
配置信息
配置数
据
配置数据
配置数据
开始停
止
配置请
求
传感器信
息
步骤一
第 14章 设计方法
读传感器
传感器状态
拨号
评估位置
显示格式
产生警告
信号
配置信息
电话号码播音
电话号码
警告数据
传感器 ID类型定
位
配置数据
传感器 ID类型
警告类型
传感器信
息
步骤二:
第 14章 设计方法
配置信息
读传感器
询问响应
信息
建立报警
条件 选择电话 号码
格式化
显示
产生显示
产生警告
信号
设置与电话
网的连接 产生电话 线脉冲
传感器
状态
警报
类型
传感器信
息格式化的 ID、
类型和地点
警报数
据
传感器 ID、
类型和地点
配置数据
警报条
件代码
设置传
感器 ID
警报编
号列表 电话号
码 准备拨
的电话
号码 拨号音
第 14章 设计方法
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
第 14章 设计方法
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
格式化显示 产生警报
信号
设置与电话
网的连接
产生显示 产生电话 线脉冲
监控传感器的第 2层
因子化
监控传感器
执行程序
传感器输入
控制器
警报条件
控制器
警报输出
控制器
格式化显示 产生警报
信号
设置与电话
网的连接
产生显示 产生电话 线脉冲
询问响应
信息
读传感器
建立报警
条件
选择电话号码
监控传感器的第一次迭代后的
程序结构
第 14章 设计方法
监控传感器
执行程序
警报输出
控制器
产生警报
信号
设置与电话
网的连接产生显示
产生电话
线脉冲
询问响应
信息
读传感器
建立报警
条件
监控传感器精化后的程序结构
第 14章 设计方法
14.5 事物映射
一个单个数据项触发一条或多条信
息流,每条信息流代表一个由数据项的
内容蕴涵的功能,这个数据项被成为事
物。
14.5.1 一个实例
SafeHome软件的用户交互子系统。
第 14章 设计方法
读用户命令
与命令处
理相关
读密码
与文件中密
码相比较 检验信息 过程
激活 /非活
动系统
显示信息
和状态
读系统数据 建立配置文件
配置信息
用户命令
原配置数据系统参数和数据
配置
开 /关
密码
密码
四位数字
配置数
据
格式化
配置数
据
配置数
据
校验
密码
A/D信
息
显示
信息
校验
密码
命令类
型
具有流边界的用户命令
子系统的第二层 DFD
第 14章 设计方法
14.5.2 设计步骤
步骤一 复审基本系统模型
步骤二 复审和精化软件的数据流程图
步骤三 确定 DFD含有变换流还是事物流特征。
步骤四 标识事物中心和每条动作路径 上的流特征。
步骤五 将 DFD映射到一个适合于进行事物处理的程序结构上。
步骤六 因子化并精化该事物结构和每条动作路径的结构。
步骤七 用提高软件质量的启发信息,精化第一次迭代得到的程
序结构。
第 14章 设计方法
a
b
d
p
q
r
s
Flow1
b
a
d
c1
q r s
p
事物控
制
分派模
块
第 14章 设计方法
用户执行程序
读用户命令 命令处理
系统设置控制器 现用 /非现用系统 密码处理控制器
第 14章 设计方法
用户交互执行程序
读用户命令 命令处理
系统设置控制器 现用 /非现用系统 密码处理控制器
读系统数据
建立设置文件 显示信息与状态
读密码 用文件比较密码 密码输出
控制器
产生无效
信息
第 14章 设计方法
14.6 设计的后处理
程序结构开发出来并进行精化以后,
还需要完成以下任务:
? 为每个模块开发处理说明。
? 为每个模块提供接口描述。
? 定义局部和全局数据结构。
? 标出所有各种设计限制 /局限。
? 进行设计复审。
? 进行优化。
第 14章 设计方法
处理说明应该是无二义的,它应正确描述模块
内的处理过程。
接口描述需要对内部模块接口、外部系统接口
和人机界面进行设计。
数据结构的设计对程序结构和每个模块的过程
细节都有深远的影响。
14.7 体系结构设计优化
不能实施的优化设计是毫无价值的。在设
计阶段的早期对程序结构多做优化。先使其
工作起来,再设法使其更好地工作。
第 14章 设计方法
14.8 接口设计
接口设计主要包括三个方面,1)设计软
件模块间的接口; 2)设计模块和其他非人的
信息生产者和消费者; 3)设计人和计算机间
的接口。
14.8.1 内部和外部接口设计
内部程序接口的设计有时也被称之为模
块间的接口设计,他是由模块间传递的数据
和程序设计语言的特性共同导致的。
外部接口设计与外部实体有关。
第 14章 设计方法
14.8.2 用户界面设计
14.9 人机界面设计
14.9.1 界面设计模型
设计模型包括对
14.9.2 任务分析和建摸
第 14章 设计方法
14.9.3 设计问题
界面设计时的问题:系统响应时间、用户
帮助设施、错误信息处理和命令交互。
系统响应时间包括两个方面的属性:长度和
易变性。过快和过慢都不好。低的响应时间
易变性有助于用户建立稳定的节奏。
第 14章 设计方法
交互式系统的用户总是或多或少地需要帮助。
帮助的形式是怎样的?
第 14章 设计方法
14.9.4 实现工具
界面设计是一个迭代的过程,设计
好的界面由用户评估,再根据用户意见
修改。
第 14章 设计方法
14.9.5 设计评估
14.10 界面设计指南
14.10.1 一般交互
14.10.2 信息显示
14.10.3 数据输入
第 14章 设计方法
14.11 过程设计
过程设计应该在数据、体系结构、和界
面设计完成之后进行。过程细节的规约必须
是无二义的,而没有二义的自然语言就不在
是自然语言了。
14.11.1 结构化程序设计
任何程序,无论是哪个应用领域,无论技
术上有多复杂,总可以用这三种结构来设计
和实现。
14.11.2 图形设计符号
第 14章 设计方法
14.11.3 表格设计符号
一幅图胜过一千句话,其中流程图和
盒状图等图形工具为描述过程细节提供
了良好的图形模式。
第一项任务
下一项任务
顺序
Else部分 Then部分
F T
If-then-else
第 14章 设计方法
T
F T
F
循环条件
循环体
第 14章 设计方法
14.11.4 程序设计语言
程序设计语言( PDL) 也称结构化的英语或
伪码。设计语言必须具有以下特征:
? 有为结构化构成元素、数据声明和模块化特
征提供的固定的关键词语法。
? 是自由的自然语言语法,能用于描述处理特
性。
? 支持各种接口描述的子程序定义和调用技术。
14.11.5 一个 PDL实例
小 结
软件设计包括四个独立又相互联系
的活动:数据设计,体系结构设计,接
口设计,过程设计。