7 结构化分析与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--内容耦合:
--公共耦合:两个以上的模块共同引用一个全局数据项。 --控制耦合:一个模块向另一模块传递一个控制信号, 接受信号的模块将依据该信号值进行必要的活动。 --标记耦合:两个模块至少有一个通过界面传递的公共
有结构的参数。
--数据耦合:模块间通过参数传递基本类型的数据。
内聚:一个模块之内各成分之间相互依赖程度的度量。 内聚类型:
变换模块
计算mpg
计算mph
计算里程
计算加/减速
通过以上讨论,可以看出:在总体设计中 将一个给定的DFD转换为初始的模块结构图基本 上是一个 “机械”的过程,一般体现不了设计人员的创
造力;
优化设计-将一个初始的模块结构图转换为最终
的模块结构图,对设计人员将是一种挑战,其结果将
直接影响软件系统开发的质量。
2) 依据术语所形成的”空间”,给出表达软件模型工具.
3) 给出设计的过程指导.
3)结构化设计方法 (1)在总体设计层 --引入了两个术语/符号 模块:一种可独立标识的软件成分. 调用:模块间的一种关系,模块A为了完成其任务必须 依赖其他模块. --引入了模块结构图 用于表达软件系统的静态结构.
--过程指导
问题空间 解空间
自 顶 向 下
4)该方法的组成
紧紧围绕“自顶向下” “过程抽象”“数据抽象”和“ 模块化”
等基本原理/原则 给出了 完备的符号 可操作的过程 易理解的表示工具
并提供了
控制信息组织复杂性的机制,例如
逐层分解,数据打包等
以支持将问题空间的一个问题映射为解空间的一个解
4)问题 捕获的“过程”和“数据” 恰恰是客观事物的易变性 质 解的结构没有保持原系统的结构 从而:造成 维护,验证上的困难。 A B1 C1
为了实现设计目标, 总体设计的具体任务是:
将DFD转化为MSD 分二步实现: 第一步:如何将DFD转化为初始的MSD 分类:变换型数据流图
事务型数据流图
变换设计 事务设计
数据流图分类
变换型: a
1
c
3
2
e
b
事务型 a
1
d
4
f
源自文库
5
g h
6 x 7 y
8
z
c
2 3 d
e
5
4
g f
6 y
b
变换设计
e
通过“打碎”、“分派”,可形成如下0层DFD:
读者文件
当前日期
1
2 处理咨询 事务
借书文件
查询要求 图书统计表 读者情况 图书情况
图书管理要求 处理借还
书等事务
罚款单 目录文件
其中:保持输入与输出的一致; 引入三个文件,对顶层DFD进行细化。 (注:存在数据库设计问题)
以同样方式,对加工1进行分解,形成:
变换燃转信 号为燃料流
变换为sps
转速信号
Get sps
转速信号
sps
Get 转速信号
转换为 sps
使用启发式规则1,并考虑其它规则, 可以将输入部分的模块结构图精化为: 输入部分 计算gph 读燃转信号 计算rpm 采集sps
计算 sps
读转速信号
其中:sps为转速的每秒信号量;sps 为sps的平均值; sps为sps的瞬时 变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧 的燃料加仑数;rpm为行进里程。
启发性规则-经验的总结
(1)改进软件结构,提高模块独立性; (2)模块规模适中-每页60行语句; (3)深度、宽度、扇入和扇出适中; (4)模块的作用域力争在控制域之内; (5)降低模块接口的复杂性; (6)模块功能应该可以预测。
应用示例:数字仪表板系统的精化
旋转信号 读旋转信号 确定 箭头指示 产生 加速/减速显示 上箭头 计算里程 水平线 产生 下箭头
--偶然内聚:一个模块之内各成分之间没有任何关系。
--逻辑内聚:几个逻辑上相关的功能放在同一模块中。 --时间内聚:一个模块完成的功能必须在同一时间内完成,而 这些功能只是因为时间因素关联在一起。 --过程内聚:处理成分必须以特定的次序执行。 --通信内聚:各成分都操作在同一数据集或生成同一数据集。 --顺序内聚:各成分与一个功能相关,且一个成分的输出作为 另一成分的输入。 --功能内聚:模块的所有成分对完成单一功能是最基本的,且 该模块对完成这一功能而言是充分必要的。
读者文件 有效读者借书单 1。2。2 目录文件
1。2。3 办理借书 检查读者的 资格
借书超限
借书文件
借书记录
核准后的借书单
1。2。4 检查图书库存
该书已借完
注意:其中粗线数据流!
第五章 结构化设计
结构化设计方法
1)何谓设计
一种软件开发活动,定义实现需求规约所需结构.
设计目标:依据需求规约,在一个抽象层上建立系统软件 模型,包括软件体系结构(数据和程序结构),以及详细的处 理算法,产生设计规格说明书. 2)对设计方法的需求 1) 提供可体现”原理/原则”的一组术语(符号),形成一 个特定的抽象层,用于表达设计中所使用的部件.
在读者还书时,读者填写还书单,由管理人员将其输入系统后,系统 根据其中的学号,从借书文件中读出该读者的借阅记录,获取该书的还 书日期,判定该图书是否逾期,以便按规定做出相应的罚款; 在对一些过时或无继续保留价值的图书进行注销时,管理人员从图书 目录文件中删除相关的记录; 当图书馆领导提出查询要求时,系统应依据查询要求,分别给出相应 的信息。 其中假定,“为购入的新书编制图书卡片”,“读者首先填写借书单” 等功能,均由人工实现。
基于以上分析,可形成该系统的环境图:
图 书 管 理 员
图书管理要求
查询要求
图书统计表
系统时钟 图书管理系统 当前日期
罚款单
图书情况
读者情况
读者
其中:3个输入流:图书管理要求,查询要求,系统时钟
图书管理要求=入库单 借书单 还书单 注销单 查询要求=读者情况 图书情况 图书统计表
4个输出流:图书统计表,图书情况,读者情况
(sps)
收集并
求平均
sps 加速/减速
信号/秒
燃烧流 传感器信号
sps
转换成 转 /分 燃烧流 计算 gph
rpm
计算mph
英里
读并
校核
里程显示
里程显示
超速值 发出 铃声 铃声 mph显示
rpm
和超速值
gph
计算 燃料消耗 mpg 产生 mpg显示
mph 产生 mph显示 mpg显示
、 数字仪表板系统输入部分的精化
1。 1
入库新书 入库单 1。 2 借书 处理图书 管理要求 借书单 注销单 1。 4 注销图书 读者文件 目录文件
借书文件
图书管理要求
还书单
当前日期
1。 3
还 书
罚款单
其中:注意平衡问题;平面化问题。当然,还可以继续细化
例如:借书
借书单
1。 2 借书
借书文件
目录文件
读者文件 借书单 无效读者
1。2。1 检查读者的 有效性
f
y
输入模块
c
路径1
e e
g
路径2
b d d
输出模块
f
c->e
e->g
b->d
d->f
第二步:如何将初始的MSD转化为最终可供详 细设计使用的MSD
基于模块化原理-高内聚 低耦合,
给出一些设计规则-经验规则, 用于精化初始的MSD -体现设计人员的创造
耦合:不同模块之间相互依赖程度的度量。 耦合类型:
软件工程
第七讲 结构化分析与设计
(一) 结构化方法 --一种特定的软件开发方法学
1 结构化分析方法 建立系统的功能模型 ---使用的工具为数据流图DFD 建立数据字典 ---使用的工具为结构符 给出加工小说明 ---使用的工具可以为判定表 判定树
问题2:图书管理系统分析
图书管理系统旨在用计算机对图书进行管理,主要涉及四个方面的 工作:新书入库、读者借书、读者还书以及图书注销,以及查询某位读 者的借书情况、某种图书和整个图书的库存情况。 在购入新书时,图书管理人员为购入的新书编制图书卡片,包括分类 目录号、流水号(要保证每本书都有惟一的流水号,即使同类图书也是如 此)、书名、作者、内容摘要、价格和购书日期等信息,并写入图书目录 文件中; 读者借书时,首先填写借书单,包括姓名、学号、欲借图书分类目录 号等信息,然后管理人员将借书单输入系统,继之系统检查该读者号是 否有效,若无效,则拒绝借书;否则进一步检查该读者所借图书是否超 过最大限制数(此处我们假设每位读者同时只能借阅不超过五本书),若已 达到最大限制数(此处为五本),则拒绝借书;否则读者可以借出该书,登 记图书分类目录号、读者号和借阅日期等,写入到借书文件中;
输入部分的初始模块结构图
输入部分
gph rpm sps
Get gph
燃料流 转速信号
Get rpm
gph
Get sps
rpm 变换sps为 rpm
燃料流
sps
sps
Get 燃料流
变换燃料 流为 ghp
转速信号 燃料流
Get sps sps sps
sps
sps
sps
sps 变换为 sps
Get 燃转信号
根据问题陈述,按功能可以把该系统分为两“大块”,即 :借还书等事务的处理,以及咨询事务处理。
---进行功能抽象。 (注:不同的功能抽象将导致不同的结果!但应该是等价的。) 于是,可以根据这一抽象,可以识别:
1)顶层数据流:借还书等事务处理要求
咨询事务要求 以及相关的数据流 2)数据源和数据潭为:图书管理人员,读者以及时钟。
第二种表达-框图
s1
s2
第三种表达-PAD图
S1 S2
X5 X<5
. . .
s1
s2
s
S1 S2
S
S3
注:支持逐步求精设计
第四种表达-N-S图
S1 T
X>5
顺序:
选择 :
条件 T F
S1 S2
循环:
循环条件 循环体
S3 S2 N:=1..10 S4 S5 S6
F
T
X>10&Y>3
F
S7
S8
S9
S10
支持逐步求精设计举例
结构化方法总结 1) 结构化方法的世界观 方法学的提出,通常与信息域 研究的主要内容相关: 1)信 息 流-例如,结构化方法
2)信息内容-例如,面向对象方法
3)信息结构-例如,JACKSON方法 一切系统都是由有信息流构成的(其中包含一些必要的数据
变换), 它们的相互作用、相互影响,构成了大千世界的各式各
、 数字仪表板系统输出部分的精化
输出部分的初始模块结构图
输出部分
PUT mpg
显示
PUT mph
PUT里程
PUT 加/减速
PUT 超速量
显示
显示
显示
对于这一初始的模块结构图,一般情况下应: 把相同或类似的物理输出合并为一个模块,以减少模块之 间的关联。就本例而言: 左边前三个“显示”,基本上属于相似的物理输出,因此可 以把它们合并为一个显示模块。而将“ PUT mpg” 模块和相 关的“生成显示‘的模块合并为一个模块;同样地,应把 “PUT mph”模块、“PUT里程”各自与相关的生成显示的模 块合并为一个模块,参见下图。
样系统。
2)基于的基本原理/原则
自顶向下功能分解 功能/过程抽象 …… 数据抽象 模块化;
3)结构化方法是一种系统化的软件系统建模方法, 从测试的 角度看,结构化方法是一种特定的建立验证和确认所需标尺的方 法学,包括结构化分析和结构化设计。 结构化方法的抽象层,包括: 需求分析层 设计层 实现层
其它求精的规则,与输入部分类同。例如,可以将“PUT 加 / 减速”模块与其下属的两个模块合并为一个模块,将 “ PUT 超速量”模块与其下属的两个模块合并为一个模块 。
通过以上求精之后,可得如下的模块结构图
输出模块
生成mpg 显示 生成mph 显示 生成里程 显示 生成加/减速显示
生成蜂鸣
显示
3 详细设计层
--主要引入了关于三种动作控制结构的术语/符号 三种控制结构:顺序,选择和循环 这三种结构在表达系统行为方面是完备的 第一种表达-伪码 顺序
begin s1;s2;…sn end;
选择 if 循环 while
条件表达式 do 条件表达式
then s1
else s2;
s;
伪码是一种混合语言。外部采 用形式语言的控制结构,内部 使用自然语言。例如: Begin 输入一元二次方程的系数 a,b,c; if b2-4aco then 计算两 实根 else 输出无实根; end.
XX系统
e g,h h g
get e
c d e
变换模块
e f
put h
g,h
put g
g x x
get c
a a
get d c,d->e
c
b
e->f f->g,h
h
y
f
get a a->c
get b
b
d
y
b->d
h->y
put y
g->x
x
put x
z z
x->z
put z
事务设计
a
事务中心
c
g
b
、变换部分的精化 首先,应该了解:对于变换部分的求精,是一 项具有挑战性的工作。其中主要是根据设计准则,并要通过 实践,不断地总结经验,才能设计出合理的模块结构。 就给定的数字仪表板系统而言,如果把“确定 加/减速”的模块放在“计算速度mph”模块下面,则可以减 少模块之间的关联,提高模块的独立性。 通过这一求精,可以得到如下的模块结构图:
相关文档
最新文档