7 传统的开发方法软
件
工
程
方
法
在软件工程中,把面向对象方法产
生之前的软件开发方法统称为传统的
开发方法,主要有 面向数据流的结构
化方法 和 面向数据结构的 Jackson方
法 。
7.1 面向数据流的开发方法
结构化方法是从 分析、设计到实现
都使用 结构化思想 的软件开发方法,
软
件
工
程
方
法
是 结构化分析 SA(Structured Analysis)、
结构化设计 SD(Structured Design)和
结构化程序设计 SP(Structured
Programming)的总称。
一、概述
结构化方法是指基于 模块化 的思想,
按照,自顶向下、逐步求精,的原理
对系统的功能和结构进行划分,利用
一定的工具,按照特定步骤工作的 软
件开发方法 。
它的 2个基本原则是 抽象 与 分解 。
软
件
工
程
方
法
结构化方法的 优点,
( 1)简单、实用。
( 2)适合于瀑布模型,易为开发者
掌握。
( 3)成功率较高。
( 4)特别适合于 数据处理领域 中的
应用,对其他领域的应用也基本适用。
结构化方法的 缺点,
( 1)对于规模大的项目,特别复杂
的应用不太适应。
( 2)难于解决软件 重用 的问题。
( 3)难于适应需求的变化。
( 4)难于彻底解决维护问题。
二、结构化分析
结构化分析是一种 面向数据流 的需
求分析方法,适合于数据处理类型的
软件系统。
特点:清晰、简明,易于学习和掌
握。
在处理一个复杂系统时,结构化分
软
件
工
程
方
法
分析方法的办法是:
( 1)把分析对象 抽象 成为一个系统;
( 2)由顶向下层层 分解,得到若干
简单的子系统;
( 3)理解子系统的每一个细节、前
后顺序和相互关系,找出各部分之间
的 接口 。
在分层过程中,采用不同程度的
“抽象”级别。最高层的问题最抽象,
低层的较为具体。
软
件
工
程
方
法
软
件
工
程
方
法
结构化分析方法要用到以下几个
工具,数据流图, 数据字典, 结构
化语言、判定表和判定树 。
1、数据流图 (P155及 P156附加符号 )
画数据流图的注意事项:
( 1)数据流、加工、数据文件的命
名要合适。
( 2)数据流名称只能是名词或名词
短语。
( 3)不能将数据流画成物流。
软
件
工
程
方
法
( 4)每个加工至少有一个输入数据
流和一个输出数据流。
( 5)每一层的子图应编号,该编号
就是其父图中相应加工的编号。
( 6)父图与子图要保持 平衡 。
( 7)局部数据存储。
( 8)分解的程度:为了提高数据流
的易理解性,分解应 自然,概念上
合理、清晰,加工之间的逻辑联系
尽可能少,且分解要 均匀 。
软
件
工
程
方
法
2、数据字典
数据字典是以一种准确的和无二义
的方式对数据流图中的所有名字进行
定义(或说明)的汇总。
数据字典的条目可以分成 4种类型:
数据流、数据文件、数据项和加工 。
在数据字典中出现的符号,见课本
P160表 7-1。
加工条目是对某个加工进行描述。
理想的加工逻辑说明应该是 严格精确
且容易被软件人员和用户所理解 。
软
件
工
程
原
理
数据项, 数量, 的字典条目
数据项名:数量
别 名:购书量
取 值:正整数
备 注:
软
件
工
程
原
理
数据流, 发票, 的字典条目
数据流名:发票
别 名:购书发票
组 成:
学名+姓名+{书号+单价+数量
+总价}+书费合计
备 注:
软
件
工
程
原
理
数据文件, 各班学生用书表, 的字典条
目
文件名:各班学生用书表
别 名:
组 成:
{系编号+专业和班编号+年级+
{书号}}
组 织:
按系、专业和班编号从小到大排列
备 注:
软
件
工
程
方
法
3.4
书写销
售单
订货单
(货号+
订货量 )
销售单
(单价+合计+
销售税款+总计 )
书写销售单
价格文件
软
件
工
程
方
法
加工名:书写销售单
编 号,3.4
输入数据流:订货单
输出数据流:销售单
激发条件:收到订货单
加工逻辑:
按照订货单上的货号访问价格文件,并将
价格文件记录的单价复制到销售单的单价上去。
确定合计=单价 × 订货量
确定销售税款=合计的 3%
确定总计=合计+销售税款
执行频率,150次/天
注 释:
软
件
工
程
方
法
其中,加工逻辑一般称为 加工逻
辑小说明。
目前,表达加工逻辑小说明的工
具有,结构化语言、判定树、判定
表 等 。
P164-165表 7-2、表 7-3有错误!
三、结构化设计
结构化设计是以 模块化技术 为基
础的软件设计方法。包括 概要设计
和 详细设计 两个方面。
1、表示软件结构的图形工具
软
件
工
程
方
法
( 1) HIPO图。
HIPO ( Hierarchy Plus InPut /
Processing / OutPut )图是表示软件
系统结构的工具。
它可分为两部分,H图和 IPO图。
( a)H图 (层次图 )
H图用于描述软件系统中各个组成
部分的 层次结构, 矩形框 表示一个
模块,矩形框之间的 直线 表示模块
之间的 调用关系 。
下面是 AutoCAD系统的 H图:
软
件
工
程
方
法
绘
新
图
1.0
编
辑
已
有
图
形
2.0
绘
图
机
绘
图
3.0
打
印
机
绘
图
4.0
参
数
设
置
5.0
文
件
管
理
6.0
编
译
型
字
体
文
体
7.0
修
复
受
损
图
形
文
件
9.0
转
换
旧
版
本
图
形
文
件
8.0
返
回
10.0
绘
图
AutoCAD
( b) IPO图
描述每个模块 输入/输出 数据,处
理 功能及 模块调用 的详细情况。
软
件
工
程
方
法
输入 处理 输出
软
件
工
程
方
法
课堂练习:
某学生成绩管理系统可按姓名、学
号、班级进行查询,并可以实现添加、
删除、修改和输出某一个学生的成绩
或某个班级所有学生的成绩。
用所学知识,画出该系统的 HIPO
图。
软
件
工
程
方
法
( 2)结构图。
结构图 (Structure Char,简称 SC)
是软件结构设计的另一个有力工具。
它以特定的符号定义了模块的名字
和功能、模块间的调用关系和模块
间信息的传递。
结构图的主要内容有:
( a)模块
下图显示了 SC图使用的 6种模块:
软
件
工
程
方
法
传入模块 传出模块 变换模块
源模块 端 (漏 )模块 控制模块
X
X
X X
X
Y
Y
Y
Y
Y
( b)模块调用和信息传递软
件
工
程
方
法
A
B
调用
模块
被调
模块
A查询学生成绩
B查找学生记录
学号 查找成功信号 记录地址
数据信息 控制信息
软
件
工
程
方
法
A
CB
D E F
X
Y
结构图示例
(提问,该图与课本 P169图 7-14的不同之处 )
软
件
工
程
方
法
2、面向数据流的设计
结构化设计方法是目前使用最广泛的
一种设计方法,也是最基础的软件设计
方法。
通常所说的结构化设计是一种面向数
据流设计 DFOD(Data Flow Oriented
Design),是与数据流分析 (DFA)对应的
软件设计技术。
( 1) 变换分析设计的过程,
( a)找出系统的主加工,确定逻辑输
入和逻辑输出。
( b)设计模块结构的顶层和第一层。
软
件
工
程
方
法
( c)设计中、下层模块。
输入模块 的功能是向它的调用模块提
供数据,应由 接收 和 转换 成调用模块所
需的信息两部分组成,即每个输入模块
可以设计成两个下属模块:一个 接收,
一个 转换 。
输出模块 的功能是将它的调用模块产
生的结果送出,它应由将数据 转换 成下
属模块所需的形式和 发送 数据两部分组
成,即每个输出模块可以设计成两个下
属模块:一个 转换,一个 发送 。
软
件
工
程
方
法
取卡片 编辑卡片检查次序读记录
记
录 记录
顺序
记录 顺序
卡片
顺序
卡片
修改信息
读卡片 检查顺序
卡片 卡片 顺序卡片
MFUP
写记录 打印报告取顺序记录 取修改信息 匹配 修改记录
修改
后记录记录
卡片
顺序记录 修改
信息
记录
卡片
匹配
结果 记录 报告
软
件
工
程
方
法
检查
顺序
检查
合理性
构成
记录
核对
匹配
修改
产生
新记录
检查
新记录
修改
卡片
旧文件
正确
文件
顺序
卡片 修改
信息
记录
修改
信息 需修改
的记录
不需修改
的信息
修改后
的记录
新记录
新文件*
软
件
工
程
方
法
( 2)事务分析设计的过程:
( a)确定 DFD中的事务中心和加工
路径。
( b)设计软件结构的顶层和第一层。
( c)事务结构中、下层模块的设计、
优化等工作同变换结构。
在实际情况下,数据流图往往是变
换型和事务型结构的混合,此时,一
般 以变换分析为主,事务分析为辅 进
行设计:先找出主加工,设计出结构
图的上层,然后根据数据流图的特点,
软
件
工
程
方
法
适当地运用变换分析或事务分析。
X
Y
Z
U VA
B1
B2
B3
C1
C2
C3
D
软
件
工
程
方
法
system
Get A X Y Z Put D
Action 1 Action n
Detail 1 Detail n
A
B1
C1 B2 C2
C3
B3
D
…
…
事务层
操作层
细节层
棱形有什么含义?
软
件
工
程
方
法
( 3)结构图的改进
结构图的改进是围绕着结构化设计
的总则进行的,即要使每个模块执行
一个功能,模块间传送 数据型参数,
而且 参数尽可能少 。
改进结构图时可从 6个方面考虑:
( a)功能性模块的组成。
一个功能性模块应包括:
a)执行某项具体任务的部分。
b)当完不成任务时,通知调用模块
发生了例外情况的部分。
软
件
工
程
方
法
c)若要返回一系列数据给它的调用
模块,则应包括数据结束时通知调用
模块“文件完”的部分。
( b)消除重复的功能。
X Y
Q1 Q2
软
件
工
程
方
法
X Y
Q’
X Y
Q
Q1’ Q2’
YX
Q2’
Q
Q
X Y
?
软
件
工
程
方
法
( c)模块的作用范围和控制范围。
一个 判定的作用范围 是指受这个
判定影响的模块的集合。
一个 模块的控制范围 是指模块本
身和它的全部下属模块。
SD方法 认为应该使 判定的作用范
围 处于 判定所在模块的控制范围 之
内。
如果在设计中没有恰当地安排判
定的作用范围和模块的控制范围,
则会产生以下 不良的后果, 重复判
软
件
工
程
方
法
定 ; 增加模块间的耦合 ; 产生病态控
制流或数据流 。如果判定的作用范围
不在判定的控制范围之内,可采用以
下手段对结构图进行 改进,
a)将作判定的模块合并到它的调用
模块中,从而使判定处于足够高的位
置。
b)将受判定影响的模块下移到控制
范围内。
c)把判定上移到足够的位置。
软
件
工
程
方
法
TOP
X Y
A B
B1 B2
TOP
X Y
A B
B1 B2
TOP
X Y
A B
B1 B2
TOP
X Y
A
B
B1 B2
?
软
件
工
程
方
法
( d)模块的大小。
模块的大小指的是其篇幅,即指 源
程序的行数 。一般来说,模块的大小
以一页左右 (通常不超过 100行 )为宜,
这样的篇幅易于阅读和理解。
较大的模块可以分解成较小模块,
比较小的模块可以合并成大一点的模
块。但 满足以下条件的模块,不论大
小,仍可保持独立,
a)它的块内联系是功能性的。
b)它与其他模块的块间联系较小。
软
件
工
程
方
法
c)它的调用模块较复杂或者它有
多个调用模块 (即复用性好 )。
( e)深度、宽度、扇出和扇入。
深度 表示软件结构中控制的层数。
宽度 表示控制的总分布。
软
件
工
程
方
法
扇出 是直接由一个模块控制的模
块数目。
扇入 表明直接控制一个给定模块
的模块数目。
根据经验,一个设计得的好的典
型系统的 平均扇出 通常在 3- 4之间
(扇出的上限通常是 5- 9)。
( f)程序的效率。
程序结构的优化步骤:
a)使 SD方法设计出的基本程序能
软
件
工
程
方
法
成功运行,以此作为优化的基础,
即 不应破坏原有的程序结构 。
b)找出基本程序中最频繁执行
的一些模块,对它位进行 局部优
化 。
四、结构化程序设计
将软件设计转换成计算机可以
接受的源程序。
软
件
工
程
方
法
提问:请说出上图中哪个模块的扇入值
最大,是多少?扇出呢?
1
2 3
4 5 6 7
8 9 10
软
件
工
程
方
法
7.2 面向数据结构的开发方法
Jackson方法是英国人 Michael
Jackson在 1970年提出的。它的发展分
为 2个阶段,前期主要研究以 处理数据
为主的 结构化程序设计 JSP(Jackson
Structured Programming),后期吸收
了软件工程的 功能分割、逐步求精 等
设计思想,集中研究 软件系统的开发
JSD(Jackson System Development)。
一,Jackson方法的三种基本结构
Jackson方法认为,内在数据结构是
软
件
工
程
方
法
至关紧要的,可利用输入数据结构、
输出数据结构来推导出程序结构。
1、用 Jackson图表示的数据结构:
( 1) 顺序结构 。顺序结构的数据由一
个或多个数据元素组成,每个数据元
素按确定次序出现一次。
A
CB D
A由 B,C,D 3个元素顺序组成
软
件
工
程
方
法
( 2) 选择结构 。选择结构的数据包
含两个或多个数据元素,每次使用
这个数据时,按一定条件从这些数
据元素中选择一个。
A
C °B° D °
A是 B或 C或 D中的某一个
软
件
工
程
方
法
A
B*
( 3)重复结构。重复结构的数据根
据使用时的条件由一个数据元素出
现零次或多次构成。
A由 B出现 N次 (N ≧ 0)组成
软
件
工
程
方
法
例子:
软
件
工
程
方
法
2,Jackson图 与软件结构的 层次图
(如 P167图 7-9)的异同:
( 1)两者在形式上相当类似;
( 2)两者的含义不同:
① 层次图中的 一个方框 通常代表
一个 模块, Jackson图即使在描绘
程序结构时,一个方框也并不代表
一个模块,通常只代表 几个语句 。
② 层次图表现的是 调用关系,而
Jackson图表现的是 组成关系 。
软
件
工
程
方
法
3、用 Jackson图表示程序结构的伪代
码形式描述:
① 顺序结构
A seq
do B
do C
do D
A end
② 选择结构
A sel 条件 1
B
or 条件 2
C
A
CB D
A
C °B° D °
软
件
工
程
方
法
or 条件 3
D
A end
③ 重复结构
A item until(或 while)条件
B
A end
二,Jackson方法的设计步骤 (过程 )
数据结构 → 程序结构 → 程序的过
程性描述
A
B*
软
件
工
程
方
法
1,根据问题建立 数据结构图 。用用
Jackson图表达数据的输入和输出等。
实际上是对求解问题进行分析;
2,找出输入数据结构和输出数据结
构中有 对应关系 的数据单元,(找
出对应关系、对应单元);
3、导出相应的 程序结构 ;
4、列出 操作,并且分配到程序结构
中适当的位置上;
5、用伪代码描述程序结构图中对应
的过程性表示。
课堂练习:
某仓库管理系统每天要处理大批单
据所组成的事务文件 。 单据分为订货单
和发货单两种, 每张单据由多行组成,
订货单每行包括零件号, 零件名, 单价,
数量等四个数据项, 发货单每行包括零
件号, 零件名, 数量等三个数据项, 用
Jackson结构图表示该事务文件的数据
结构 。
软
件
工
程
方
法
件
工
程
方
法
在软件工程中,把面向对象方法产
生之前的软件开发方法统称为传统的
开发方法,主要有 面向数据流的结构
化方法 和 面向数据结构的 Jackson方
法 。
7.1 面向数据流的开发方法
结构化方法是从 分析、设计到实现
都使用 结构化思想 的软件开发方法,
软
件
工
程
方
法
是 结构化分析 SA(Structured Analysis)、
结构化设计 SD(Structured Design)和
结构化程序设计 SP(Structured
Programming)的总称。
一、概述
结构化方法是指基于 模块化 的思想,
按照,自顶向下、逐步求精,的原理
对系统的功能和结构进行划分,利用
一定的工具,按照特定步骤工作的 软
件开发方法 。
它的 2个基本原则是 抽象 与 分解 。
软
件
工
程
方
法
结构化方法的 优点,
( 1)简单、实用。
( 2)适合于瀑布模型,易为开发者
掌握。
( 3)成功率较高。
( 4)特别适合于 数据处理领域 中的
应用,对其他领域的应用也基本适用。
结构化方法的 缺点,
( 1)对于规模大的项目,特别复杂
的应用不太适应。
( 2)难于解决软件 重用 的问题。
( 3)难于适应需求的变化。
( 4)难于彻底解决维护问题。
二、结构化分析
结构化分析是一种 面向数据流 的需
求分析方法,适合于数据处理类型的
软件系统。
特点:清晰、简明,易于学习和掌
握。
在处理一个复杂系统时,结构化分
软
件
工
程
方
法
分析方法的办法是:
( 1)把分析对象 抽象 成为一个系统;
( 2)由顶向下层层 分解,得到若干
简单的子系统;
( 3)理解子系统的每一个细节、前
后顺序和相互关系,找出各部分之间
的 接口 。
在分层过程中,采用不同程度的
“抽象”级别。最高层的问题最抽象,
低层的较为具体。
软
件
工
程
方
法
软
件
工
程
方
法
结构化分析方法要用到以下几个
工具,数据流图, 数据字典, 结构
化语言、判定表和判定树 。
1、数据流图 (P155及 P156附加符号 )
画数据流图的注意事项:
( 1)数据流、加工、数据文件的命
名要合适。
( 2)数据流名称只能是名词或名词
短语。
( 3)不能将数据流画成物流。
软
件
工
程
方
法
( 4)每个加工至少有一个输入数据
流和一个输出数据流。
( 5)每一层的子图应编号,该编号
就是其父图中相应加工的编号。
( 6)父图与子图要保持 平衡 。
( 7)局部数据存储。
( 8)分解的程度:为了提高数据流
的易理解性,分解应 自然,概念上
合理、清晰,加工之间的逻辑联系
尽可能少,且分解要 均匀 。
软
件
工
程
方
法
2、数据字典
数据字典是以一种准确的和无二义
的方式对数据流图中的所有名字进行
定义(或说明)的汇总。
数据字典的条目可以分成 4种类型:
数据流、数据文件、数据项和加工 。
在数据字典中出现的符号,见课本
P160表 7-1。
加工条目是对某个加工进行描述。
理想的加工逻辑说明应该是 严格精确
且容易被软件人员和用户所理解 。
软
件
工
程
原
理
数据项, 数量, 的字典条目
数据项名:数量
别 名:购书量
取 值:正整数
备 注:
软
件
工
程
原
理
数据流, 发票, 的字典条目
数据流名:发票
别 名:购书发票
组 成:
学名+姓名+{书号+单价+数量
+总价}+书费合计
备 注:
软
件
工
程
原
理
数据文件, 各班学生用书表, 的字典条
目
文件名:各班学生用书表
别 名:
组 成:
{系编号+专业和班编号+年级+
{书号}}
组 织:
按系、专业和班编号从小到大排列
备 注:
软
件
工
程
方
法
3.4
书写销
售单
订货单
(货号+
订货量 )
销售单
(单价+合计+
销售税款+总计 )
书写销售单
价格文件
软
件
工
程
方
法
加工名:书写销售单
编 号,3.4
输入数据流:订货单
输出数据流:销售单
激发条件:收到订货单
加工逻辑:
按照订货单上的货号访问价格文件,并将
价格文件记录的单价复制到销售单的单价上去。
确定合计=单价 × 订货量
确定销售税款=合计的 3%
确定总计=合计+销售税款
执行频率,150次/天
注 释:
软
件
工
程
方
法
其中,加工逻辑一般称为 加工逻
辑小说明。
目前,表达加工逻辑小说明的工
具有,结构化语言、判定树、判定
表 等 。
P164-165表 7-2、表 7-3有错误!
三、结构化设计
结构化设计是以 模块化技术 为基
础的软件设计方法。包括 概要设计
和 详细设计 两个方面。
1、表示软件结构的图形工具
软
件
工
程
方
法
( 1) HIPO图。
HIPO ( Hierarchy Plus InPut /
Processing / OutPut )图是表示软件
系统结构的工具。
它可分为两部分,H图和 IPO图。
( a)H图 (层次图 )
H图用于描述软件系统中各个组成
部分的 层次结构, 矩形框 表示一个
模块,矩形框之间的 直线 表示模块
之间的 调用关系 。
下面是 AutoCAD系统的 H图:
软
件
工
程
方
法
绘
新
图
1.0
编
辑
已
有
图
形
2.0
绘
图
机
绘
图
3.0
打
印
机
绘
图
4.0
参
数
设
置
5.0
文
件
管
理
6.0
编
译
型
字
体
文
体
7.0
修
复
受
损
图
形
文
件
9.0
转
换
旧
版
本
图
形
文
件
8.0
返
回
10.0
绘
图
AutoCAD
( b) IPO图
描述每个模块 输入/输出 数据,处
理 功能及 模块调用 的详细情况。
软
件
工
程
方
法
输入 处理 输出
软
件
工
程
方
法
课堂练习:
某学生成绩管理系统可按姓名、学
号、班级进行查询,并可以实现添加、
删除、修改和输出某一个学生的成绩
或某个班级所有学生的成绩。
用所学知识,画出该系统的 HIPO
图。
软
件
工
程
方
法
( 2)结构图。
结构图 (Structure Char,简称 SC)
是软件结构设计的另一个有力工具。
它以特定的符号定义了模块的名字
和功能、模块间的调用关系和模块
间信息的传递。
结构图的主要内容有:
( a)模块
下图显示了 SC图使用的 6种模块:
软
件
工
程
方
法
传入模块 传出模块 变换模块
源模块 端 (漏 )模块 控制模块
X
X
X X
X
Y
Y
Y
Y
Y
( b)模块调用和信息传递软
件
工
程
方
法
A
B
调用
模块
被调
模块
A查询学生成绩
B查找学生记录
学号 查找成功信号 记录地址
数据信息 控制信息
软
件
工
程
方
法
A
CB
D E F
X
Y
结构图示例
(提问,该图与课本 P169图 7-14的不同之处 )
软
件
工
程
方
法
2、面向数据流的设计
结构化设计方法是目前使用最广泛的
一种设计方法,也是最基础的软件设计
方法。
通常所说的结构化设计是一种面向数
据流设计 DFOD(Data Flow Oriented
Design),是与数据流分析 (DFA)对应的
软件设计技术。
( 1) 变换分析设计的过程,
( a)找出系统的主加工,确定逻辑输
入和逻辑输出。
( b)设计模块结构的顶层和第一层。
软
件
工
程
方
法
( c)设计中、下层模块。
输入模块 的功能是向它的调用模块提
供数据,应由 接收 和 转换 成调用模块所
需的信息两部分组成,即每个输入模块
可以设计成两个下属模块:一个 接收,
一个 转换 。
输出模块 的功能是将它的调用模块产
生的结果送出,它应由将数据 转换 成下
属模块所需的形式和 发送 数据两部分组
成,即每个输出模块可以设计成两个下
属模块:一个 转换,一个 发送 。
软
件
工
程
方
法
取卡片 编辑卡片检查次序读记录
记
录 记录
顺序
记录 顺序
卡片
顺序
卡片
修改信息
读卡片 检查顺序
卡片 卡片 顺序卡片
MFUP
写记录 打印报告取顺序记录 取修改信息 匹配 修改记录
修改
后记录记录
卡片
顺序记录 修改
信息
记录
卡片
匹配
结果 记录 报告
软
件
工
程
方
法
检查
顺序
检查
合理性
构成
记录
核对
匹配
修改
产生
新记录
检查
新记录
修改
卡片
旧文件
正确
文件
顺序
卡片 修改
信息
记录
修改
信息 需修改
的记录
不需修改
的信息
修改后
的记录
新记录
新文件*
软
件
工
程
方
法
( 2)事务分析设计的过程:
( a)确定 DFD中的事务中心和加工
路径。
( b)设计软件结构的顶层和第一层。
( c)事务结构中、下层模块的设计、
优化等工作同变换结构。
在实际情况下,数据流图往往是变
换型和事务型结构的混合,此时,一
般 以变换分析为主,事务分析为辅 进
行设计:先找出主加工,设计出结构
图的上层,然后根据数据流图的特点,
软
件
工
程
方
法
适当地运用变换分析或事务分析。
X
Y
Z
U VA
B1
B2
B3
C1
C2
C3
D
软
件
工
程
方
法
system
Get A X Y Z Put D
Action 1 Action n
Detail 1 Detail n
A
B1
C1 B2 C2
C3
B3
D
…
…
事务层
操作层
细节层
棱形有什么含义?
软
件
工
程
方
法
( 3)结构图的改进
结构图的改进是围绕着结构化设计
的总则进行的,即要使每个模块执行
一个功能,模块间传送 数据型参数,
而且 参数尽可能少 。
改进结构图时可从 6个方面考虑:
( a)功能性模块的组成。
一个功能性模块应包括:
a)执行某项具体任务的部分。
b)当完不成任务时,通知调用模块
发生了例外情况的部分。
软
件
工
程
方
法
c)若要返回一系列数据给它的调用
模块,则应包括数据结束时通知调用
模块“文件完”的部分。
( b)消除重复的功能。
X Y
Q1 Q2
软
件
工
程
方
法
X Y
Q’
X Y
Q
Q1’ Q2’
YX
Q2’
Q
Q
X Y
?
软
件
工
程
方
法
( c)模块的作用范围和控制范围。
一个 判定的作用范围 是指受这个
判定影响的模块的集合。
一个 模块的控制范围 是指模块本
身和它的全部下属模块。
SD方法 认为应该使 判定的作用范
围 处于 判定所在模块的控制范围 之
内。
如果在设计中没有恰当地安排判
定的作用范围和模块的控制范围,
则会产生以下 不良的后果, 重复判
软
件
工
程
方
法
定 ; 增加模块间的耦合 ; 产生病态控
制流或数据流 。如果判定的作用范围
不在判定的控制范围之内,可采用以
下手段对结构图进行 改进,
a)将作判定的模块合并到它的调用
模块中,从而使判定处于足够高的位
置。
b)将受判定影响的模块下移到控制
范围内。
c)把判定上移到足够的位置。
软
件
工
程
方
法
TOP
X Y
A B
B1 B2
TOP
X Y
A B
B1 B2
TOP
X Y
A B
B1 B2
TOP
X Y
A
B
B1 B2
?
软
件
工
程
方
法
( d)模块的大小。
模块的大小指的是其篇幅,即指 源
程序的行数 。一般来说,模块的大小
以一页左右 (通常不超过 100行 )为宜,
这样的篇幅易于阅读和理解。
较大的模块可以分解成较小模块,
比较小的模块可以合并成大一点的模
块。但 满足以下条件的模块,不论大
小,仍可保持独立,
a)它的块内联系是功能性的。
b)它与其他模块的块间联系较小。
软
件
工
程
方
法
c)它的调用模块较复杂或者它有
多个调用模块 (即复用性好 )。
( e)深度、宽度、扇出和扇入。
深度 表示软件结构中控制的层数。
宽度 表示控制的总分布。
软
件
工
程
方
法
扇出 是直接由一个模块控制的模
块数目。
扇入 表明直接控制一个给定模块
的模块数目。
根据经验,一个设计得的好的典
型系统的 平均扇出 通常在 3- 4之间
(扇出的上限通常是 5- 9)。
( f)程序的效率。
程序结构的优化步骤:
a)使 SD方法设计出的基本程序能
软
件
工
程
方
法
成功运行,以此作为优化的基础,
即 不应破坏原有的程序结构 。
b)找出基本程序中最频繁执行
的一些模块,对它位进行 局部优
化 。
四、结构化程序设计
将软件设计转换成计算机可以
接受的源程序。
软
件
工
程
方
法
提问:请说出上图中哪个模块的扇入值
最大,是多少?扇出呢?
1
2 3
4 5 6 7
8 9 10
软
件
工
程
方
法
7.2 面向数据结构的开发方法
Jackson方法是英国人 Michael
Jackson在 1970年提出的。它的发展分
为 2个阶段,前期主要研究以 处理数据
为主的 结构化程序设计 JSP(Jackson
Structured Programming),后期吸收
了软件工程的 功能分割、逐步求精 等
设计思想,集中研究 软件系统的开发
JSD(Jackson System Development)。
一,Jackson方法的三种基本结构
Jackson方法认为,内在数据结构是
软
件
工
程
方
法
至关紧要的,可利用输入数据结构、
输出数据结构来推导出程序结构。
1、用 Jackson图表示的数据结构:
( 1) 顺序结构 。顺序结构的数据由一
个或多个数据元素组成,每个数据元
素按确定次序出现一次。
A
CB D
A由 B,C,D 3个元素顺序组成
软
件
工
程
方
法
( 2) 选择结构 。选择结构的数据包
含两个或多个数据元素,每次使用
这个数据时,按一定条件从这些数
据元素中选择一个。
A
C °B° D °
A是 B或 C或 D中的某一个
软
件
工
程
方
法
A
B*
( 3)重复结构。重复结构的数据根
据使用时的条件由一个数据元素出
现零次或多次构成。
A由 B出现 N次 (N ≧ 0)组成
软
件
工
程
方
法
例子:
软
件
工
程
方
法
2,Jackson图 与软件结构的 层次图
(如 P167图 7-9)的异同:
( 1)两者在形式上相当类似;
( 2)两者的含义不同:
① 层次图中的 一个方框 通常代表
一个 模块, Jackson图即使在描绘
程序结构时,一个方框也并不代表
一个模块,通常只代表 几个语句 。
② 层次图表现的是 调用关系,而
Jackson图表现的是 组成关系 。
软
件
工
程
方
法
3、用 Jackson图表示程序结构的伪代
码形式描述:
① 顺序结构
A seq
do B
do C
do D
A end
② 选择结构
A sel 条件 1
B
or 条件 2
C
A
CB D
A
C °B° D °
软
件
工
程
方
法
or 条件 3
D
A end
③ 重复结构
A item until(或 while)条件
B
A end
二,Jackson方法的设计步骤 (过程 )
数据结构 → 程序结构 → 程序的过
程性描述
A
B*
软
件
工
程
方
法
1,根据问题建立 数据结构图 。用用
Jackson图表达数据的输入和输出等。
实际上是对求解问题进行分析;
2,找出输入数据结构和输出数据结
构中有 对应关系 的数据单元,(找
出对应关系、对应单元);
3、导出相应的 程序结构 ;
4、列出 操作,并且分配到程序结构
中适当的位置上;
5、用伪代码描述程序结构图中对应
的过程性表示。
课堂练习:
某仓库管理系统每天要处理大批单
据所组成的事务文件 。 单据分为订货单
和发货单两种, 每张单据由多行组成,
订货单每行包括零件号, 零件名, 单价,
数量等四个数据项, 发货单每行包括零
件号, 零件名, 数量等三个数据项, 用
Jackson结构图表示该事务文件的数据
结构 。
软
件
工
程
方
法