结构化软件设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
示
B
A
9
结构图的几个概念
• 深度:程序结构图中控制的层数,例如图中所示的结构图的 深度是5
• 宽度:程序结构图中同一层次上模块总数的最大值,例如图 中所示的结构图的宽度为7
• 扇出(fan out):该模块直接调用的模块数目。例如,例如图中 模块M的扇出是4,模块A的是2,模块B的扇出是1
• 扇入(fan in):能直接调用该模块的模块数目。例如图中模块 G的扇入是1,模块I的扇入是2,模块R的扇入是4
面向数据结构的设计或 LCP,JSP,DSSD 者数据驱动设计
面向对象设计
Coad,Yourdon
A
结构化设计方法(Structured Design ,SD)基于模块化、B自 顶向下逐层细化、结构化程序 设计等程序设计技术上发展起 来的。
4
结构化设计
• 结构化设计(Structured Design,简称SD)是一种 将结构化分析得到的数据流图映射成软件体系 结构的设计方法
W 扇出
A
B
C
B
深度
D
E
K
L
M
F
G
H
NOPQ
I
J
R 扇入
宽度
A
10
相关指标的含义
Βιβλιοθήκη Baidu
• 深度和宽度在一定程序上反映了程序的规模和 复杂程度
– 相对而言,如果程序结构图的深度和宽度较大,则说明程
序的规模和复杂程度都较大。
– 模块的扇入扇出会影响结构图的深度和宽度,例如减少模 块的扇出,可能导致宽度变小而深度增加
• 软件工程过程的每一步都是对问题的软件解法 抽象层次的一次精化。
B
• 逐步求精与抽象是紧密相关的
A
14
模块独立性
• 模块独立性是软件系统中每个模块只涉
及软件要求的具体子功能,而和软件系 统中其他的模块接口是简单的。
• 模块独立的概念是模块化、抽象、信息
隐蔽和局部化概念的直接结果。
B
• 重要概念:耦合、内聚
为公共耦合。
• 控制耦合一个模块在界面上传递一个信号(如开关值B、
标志量等)控制另一个模块,接收信号的模块动作根据 信号值进行调整,称为控制耦合。
A
19
耦合类型
• 标记耦合 模块间通过参数传递复杂的内部数据结
构,称为标记耦合。此数据结构的变化将使相关的模 块发生变化。
• 数据耦合 模块间通过参数传递基本类型的数据,
• 结构图的基本成分有:模块、调用和数据
B
A
7
模块
• 模块(module):指具有一定功能的可以用 模块名调用的一组程序语句,如函数、子 程序等
• 它们是组成程序的基本单元
• 一个模块具有其外部特征和内部特征
– 外部特征包括:模块的接口(模块名、输入/输出参数、返
回值等)和模块的功能
B
– 内部特征包括:模块的内部数据和完成其功能的程序代码
A
15
模块独立性的度量
模块独立性取决于模块的内部和外部特征。
SD方法提出的定性的度量标准:
• 模块之间的耦合性 • 模块自身的内聚性
B
A
16
耦合
• 耦合是对一个软件结构内各个模块之间互连程 度的度量。
• 耦合强弱取决于模块间接口的复杂程度,调用 模块的方式,以及通过接口的信息。
• 根据模块间耦合程度的强弱的标准,划分耦合B 类型,共有七种。
• 耦合
B
• 内聚
A
12
模块化
• 模块是数据说明、可执行语句等程序对象的集
合,模块可以单独被命名,可通过名字访问。 例如,过程、函数、子程序、宏等等都可作为 模块。
• 模块化就是把程序划分为若干个模块,每个
模块具有独立子功能,再把各个模块集成后,
B
实现指定功能,满足问题要求。
A
13
抽象化
• 抽象就是抽出事务的本质特性而暂不考虑细节 问题,是人类在认识复杂现象中使用的最强有 力工具。
• 在SD中,我们只关注模块的外部特征,而 忽略其内部特征
A
8
调用和数据
• 调用(call):用从一个模块指向另一个模块的 箭头来表示,其含义是前者调用了后者
– 为了方便,有时常用直线替代箭头,此时,表示位于上方 的模块调用位于下方的模块
• 数据(data):模块调用时需传递的参数可通过 在调用箭头旁附加一个小箭头和数据名来表
称为数据耦合。
B
• 非直接耦合 模块间没有信息传递时,属于非直接耦
合。
A
20
内容耦合举例
AB
一模块直接访问 另一模块的内部 信息 (程序代码
或数据)
A B
模块代码重叠
Entry1 ……
Entry1 ……
多入口模块
B
最不好的耦合形式 !!!
A
21
公共耦合举例
AB C
公共数据区 B
A
17
图示
紧密耦合-有
很多依赖关系
B
松散耦合-有
少量依赖关系
无耦合-没有依A赖关系
18
耦合类型(高→低)
• 内容耦合 当一个模块直接修改或操作另一个模块的数
据,或者直接转入另一个模块时,就发生了内容耦合。 此时,被修改的模块完全依赖于修改它的模块。
• 公共耦合两个以上的模块共同引用一个全局数据项就称
– 详细设计是对模块实现细节的设计,采用结构化程 序设计(Structured Programming,简称SP)方法
• SA、SD和SP构成完整的结构化方法体系
A
6
结构图(SC)
• 用结构图(Structure Chert)来描述软件系统 的体系结构
• 描述一个软件系统由哪些模块组成,以及 模块之间的调用关系
• 一个模块的扇出过大通常意味着该模块比较复 杂,然而扇出太少,可能导致深度的增加
– 一般情况,一个模块的扇出以3~9为宜
B
• 一个模块的扇入表示有多少模块可直接调用它, 它反映了该模块的复用(reuse)程度,因此模块的 扇入越大越好
A
11
软件设计中的概念
• 模块化
• 抽象信息局部化
• 模块独立性
映射 DFD
(问题结构)
Sc图
软件系统的结构 B (程序结构)
A
5
结构化设计
• 强调模块化、自顶向下逐步求精、信息隐 蔽、高内聚低耦合等设计准则
• 分为概要设计和详细设计两大步骤
– 概要设计是对软件系统的总体设计,采用结构化设 计方法,其任务是:将系统分解成模块,确定每个 模块的功能、接口(模块间传递的数据)及其调用关系, 并用模块及其对模块的调用来构建软件的体系结构B
B
A
1
现实世界
面
OOA
向 对
象
开 OOD 发
方
OOP 法
结构化
结 分析SA 构 化 结构化 开 设计SD 发 方 结构化 法 编程SBP
计算机世界
软件设计任务
管理观点
概要设计 详细设计
数据设计
技术观点
系统结构设计
B
过程设计
A
3
软件设计方法分类
分类
代表
面向数据流的设计或者 结构化设计方法 过程驱动的设计