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结构图表示该事务文件的数据
结构 。