软件工程中的结构化设计ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
软件开发阶段的信息流
信息描述
功能描述 行为描述
设计
其他需求
数据设计 程序模块
过程设计 编码
集成并确
认的软件 测试
3
4.2 软件设计的概念和原理
• 模块化 • 抽象 • 逐步求精 • 信息隐藏
4
1. 模块化
• 模块(Modular):
– 独立命名,可独立访问的具有一定功能的一段程序。
• 模块化设计(Modular Design):
易于测试,易于修改和维护。
• 对用户来说,其感兴趣的是模块的功能,而不必 去理解模块内部的结构和原理。
6
模块分解(Decomposition)
奇妙的数字 7+2,人类 信息处理能力的限度
G.A. Miller
Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information
软件工程基本定理
软
总成本
件
ຫໍສະໝຸດ Baidu
最小成本区
接口成本
开
M
发
工
作
量 模块成本
8
模块数
有关模块化
• 模块化考虑因素:
– 模块数目 – 怎样定义一个给定大小的模块
• 评价模块系统设计方法的标准:
– 可分解性、可组装性、可理解性、连续性、保护性
• 模块化的优点:
– 易阅读和理解,可靠性,可修改性
9
2. 抽象(Abstraction)
– 内聚性:模块内部各成分之间的关联程度。
13
1. 耦合(Coupling)
• 耦合性:
– 是程序结构中各个模块之间相互关联的度量。
– 取决于各个模块之间接口的复杂程序、调用模块的 方式以及哪些信息通过接口。
– 耦合性越高,模块独立性越弱。
低 非直接
耦合 强
数据 耦合
耦合性 标记 控制 外部 耦合 耦合 耦合
1
4.1 结构化设计概述
• 任务:回答How to do?
• 阶段划分:概要设计、详细设计
• 主要内容:
– 体系结构设计
– 数据设计
– 接口设计
– 过程设计
• 结构化设计模型与结构化分析模型的关系:
– 软件设计必须依据对软件的需求分析来进行的,而
结构化分析的结果为结构化设计提供了最基本的输
入信息。
– 按适当的原则把软件划分为一个个较小的、相关而又 相对独立的模块。每个模块可独立开发、测试,最后 组装成完整的软件。
– 在结构化方法中,过程、函数和子程序等都可作为模 块;在面向对象方法中,对象是模块,对象内的方法 也是模块。
– 模块分解并不是越小越好。
5
理想模块
• 理想模块的特点:
– 只解决一个问题。 – 功能都应该明确,使人容易理解。 – 理想模块之间的连接关系简单,具有独立性。 – 由理想模块构成的系统,容易使人理解,易于编程,
– 指在设计和确定模块时,使得一个模块内包含的信 息(过程和数据),对于不需要这些信息的其他模 块来说,是不可访问的。
– 为软件系统的修改、测试及以后的维护都带来好处
• 目的
– 为了提高模块的独立性。 栈stack
置空栈 进栈 退栈 makenull push pop
12
4.3 模块独立性(Module Independence)
– 指两个模块之间传递的是数据结构(如记录、数组 等)。其实传递的是这个数据结构的地址。
– 两个模块必须清楚这些数据结构,并按要求对其进 行操作,这样就降低了可理解性。
– 如:
计算水电费
计算水费
计算电费
– 住户详情中包含了“本月用电量”和“本月用水量”
10
3. 逐步求精
• 细化
• 为了集中精力解决主要问题而尽量推迟对问题细节的考 虑。
• 软件工程过程的每一步都是对软件解法的抽象层次的一 次精化。
• 求精是帮助设计者在设计过程中提示出低层细节。
11
4. 信息隐藏(Information Hiding)
• 又称数据封装(Data Encapculation)
第四章 结构化设计
• 结构化设计原理
• 面向数据流的设计方法
• 模块独立
• 人-机界面设计
• 启发规则
• 过程设计
• 表示软件结构的图形工具
对软件进行需求分析和建模后,便开始了软件设 计,需求规格说明是软件设计的重要输入,它为软件 设计提供了基础。
软件设计过程是将需求规格说明转化为软件实现 方案的过程。软件设计包括概要设计和详细设计,本 章则主要介绍软件概要设计和详细设计的过程。
• 模块独立性:
– 是指软件系统中每个模块只涉及软件要求的具体的 子功能,而和软件系统中其他模块接口是简单的。
• 模块完成独立的功能 • 符合信息隐蔽和信息局部化原理 • 模块间关连和依赖程度尽量小
• 两个定性的度量标准:
– 耦合性:模块之间的依赖程度。取决于接口的复杂 性、调用的方式及传递的信息。
The Psychological Review,1956
设: C(x) 为复杂程度函数 E(x) 为决定解决问题x所需的工作量(时间)函数
如果:C(P1)>C(P2)
则:E(P1)>E(P2)
C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)
7
软件工程基本定理
C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)
• 抽象即提取出本质而暂不考虑细节。是认识复杂现象
过程中使用的思维工具。
• 在进行软件设计时,抽象与逐步求精、模块化密切相关, 可提高软件的可理解性。
• 高层次抽象
– 使用问题环境的语言,以概括的方式叙述问题的解 决。
• 较低层次抽象
– 更过程化的方法
– 面向问题+面向实现术语结合
• 最低层次抽象
– 直接实现的方式叙述问题的解法。
模块独立性
公共 耦合
高 内容 耦合
弱
14
非直接耦合(Nondirect Coupling)
• 非直接耦合:
– 模块之间没有直接关系,它们之间的联系完全是通 过主模块的控制和调用来实现的。
– 这种耦合的模块独立性最强。
– 例如下图中,模块1和2是非直接耦合
0
1
2
34
15
数据耦合(Data Coupling)
• 数据耦合:
– 在两个模块间往返传递的只有数据(或变量或记录 或文件),这种耦合称数据耦合。
– 在模块间只有数据传输,模块接口简单。
– 在不可避免的耦合中是耦合力最低的,也是较理想 的耦合。
– 如:编程语言中的传值函数。 开发票
单价 数量
金额
计算水费
16
标记耦合(Stamp Coupling)
• 标记耦合(又称特征耦合):